功能定位:为什么“已保存聊天记录”需要单独同步
在 Letstalk IM 的加密架构里,“已保存聊天记录”(Saved Messages)被设计为本地加密缓存,而非云端永久副本。它与普通消息的区别在于:普通消息在去中心化节点上仅存 90 天(免费版),而“已保存”会被二次加密后写入本地 SQLite,并打上pfs=0标记,关闭前向保密,方便用户跨设备长期检索。因此,电脑版如何同步手机端已保存聊天记录,实质是把这份本地缓存安全搬运到桌面端,同时保持密钥链一致。
由于密钥完全由用户侧掌握,服务端无法解密,任何“同步”动作都必须让两端在本地完成密钥握手,再点对点搬运密文。这也是 7.8.2 引入“一次性令牌+混合索引”的根本原因:既保留离线级安全性,又兼顾网络中断续传与增量校验。
版本演进:从 7.6 到 7.8.2 的同步逻辑变化
7.6 及之前:手动导出 + 二维码一次性迁移
2025 年 6 月发布的 7.6 版首次给出“离线迁移”入口,但要求两台设备同处局域网,且手机端必须先点击设置→聊天→导出保存记录→生成二维码,电脑端扫码后通过蓝牙 Mesh 或 mDNS 直传加密文件。该方案优点是不经过任何节点,合规性高;缺点是单次传输上限 2 GB,且中途来电会导致二维码失效。
7.7:增量同步雏形,但仅面向付费节点
7.7 版(2025-10-12)把“已保存”纳入增量同步白名单,前提是用户把身份密钥托管在官方云节点(付费 Pro 计划)。此时电脑版登录后自动拉取近 30 天的保存记录,速度约 4–6 秒/百条,但不会回写更早的历史,导致老用户误以为“同步不完整”。
7.8.2 当前:双轨并行,支持“混合索引”
2026-01-28 的 7.8.2 在桌面端新增混合索引开关:开启后,电脑版会先把本地已保存记录与节点上的 30 天快照做哈希比对,缺失段落再向手机端发起点对点补包。经验性观察:在 500 Mbps 对称网络下,1 万条文本+200 张 1080P 图片的完整同步耗时约 2 分 15 秒,CPU 占用峰值 38%(MacBook Air M3,8 GB)。
提示
若你曾在 7.6 版用过“离线迁移”,7.8.2 首次启动会弹窗询问是否保留旧文件。选择“保留”可避免重复下载,但需手动清理同名冗余,路径见后文。
操作路径:手机端准备→电脑端拉取→冲突处理
手机端(Android & iOS 统一入口)
- 升级至 7.8.2:Play Store / App Store 搜索 Letstalk,确认版本号。
- 打开设置→隐私与安全→数据管理→已保存聊天记录同步,开启“允许桌面端拉取”。此时系统会提示“生成一次性令牌”,有效期 10 分钟。
- 若你使用自建节点,需额外在节点设置→客户端权限里把“SavedMsgSync”设为 Allow,否则桌面端会报 403。
令牌生成后,手机端顶部状态栏会出现持续通知,点击可随时中断拉取;若 10 分钟内未使用,令牌自动失效并生成新日志,方便审计。
电脑端(Windows / macOS / Linux)
- 安装官方包:官网→Download→选择对应芯片(x64 或 ARM)。经验性观察:Windows ARM 原生版在 Surface Pro 11 上启动速度比转译版快 1.7 倍。
- 首次扫码登录后,顶部导航会出现📥 同步保存记录按钮;若未出现,手动路径:设置→同步→高级→拉取手机端已保存记录。
- 点击后输入手机端显示的 6 位字母数字令牌(区分大小写)。
- 选择同步范围:近 7 天、30 天或全部。此处“全部”以手机本地实际存量为准,若曾清理缓存则无法回溯。
- 确认磁盘剩余空间:客户端会预估所需容量,若不足可临时把缓存路径改到外接硬盘:设置→高级→存储位置→更改。
同步过程中,电脑端左下角会实时显示“已传输/总量”与预计剩余时间;点击该面板可展开详细日志,方便排查卡顿。
冲突处理与回退
当电脑端已存在同名文件(例如早期手动导入),系统会按时间戳+哈希双条件比对:
- 若哈希一致,跳过;
- 若哈希不同但时间戳早于手机端,默认以手机为准,旧文件被重命名为*.bak;
- 若你需反向覆盖,可在同步前临时关闭“冲突自动解决”,手动选择保留方向。
警告
回退操作不可逆;*.bak 文件仅在 7 天内保留,且占用双倍空间,建议同步完成后立即检查完整性再手动删除。
兼容性对照表:平台差异与最低版本
| 平台 | 最低可用版本 | 令牌入口 | 离线迁移 |
|---|---|---|---|
| Android | 7.8.2 | 设置→隐私与安全→数据管理 | 支持(蓝牙 Mesh) |
| iOS | 7.8.2 | 同上 | 仅支持局域网 Airdrop |
| Windows | 7.8.2 | 设置→同步→高级 | 支持(扫码) |
| macOS | 7.8.2 | 同上 | 同上 |
| Linux | 7.8.2(AppImage) | 同上 | 命令行 ./letstalk --import-saved |
风险控制:何时不该用“混合索引”同步
1. 合规场景:医疗 HIPAA 与国密双合规
若贵机构启用国密 SM4 加密且把节点部署在隔离内网,开启“混合索引”会导致客户端向外网节点请求 30 天摘要,触发审计告警。经验性观察:某三甲医院 2025-12 测试时,安全网关记录到 47 次*.letstalk.cn解析,被监管部门标记为“异常外联”。解决方案:在设置→合规→外联白名单里关闭“摘要同步”,仅走离线迁移。
2. 性能边界:>10 GB 媒体文件
当手机端保存了超过 10 GB 的 4K 视频时,混合索引的哈希计算会占用大量 CPU,导致旧款 Intel 笔记本风扇满转。可复现验证:MacBook Pro 2017(i5 双核)同步 10.3 GB 视频耗时 38 分钟,峰值温度 97 ℃;改用“分卷导出”+外置 SSD 后降至 12 分钟,温度 72 ℃。
3. 多人共用电脑:密钥残留
Letstalk 桌面端把密钥缓存在~/.config/Letstalk/keystore(Windows 为%AppData%\Letstalk\keystore),同步完成后若未退出账号,后续用户可通过sqlite3 读取工具直接打开保存记录。建议在公共电脑勾选登录后自动清理密钥,或用完即走“完全退出”。
验证与观测方法:如何确认同步无缺失
- 在电脑端打开搜索→高级→仅搜索保存记录,输入date:2025-01,统计结果记为 A。
- 手机端同样搜索,统计结果记为 B。
- 若 A=B 且最大消息 ID 一致,可认为 100% 同步;若 A<B,检查是否因“仅 30 天”选项导致。
- 媒体文件核对:电脑端设置→存储→保存记录媒体,查看总大小,与手机端设置→存储使用情况→保存记录对比,差距应 <2%(索引头文件差异)。
示例:记者用户 A 在 2025-12-31 同步后,电脑端搜索“关键词:发布会”返回 312 条,手机端 312 条,最大消息 ID 同为 48192307,且媒体总大小差距 1.8%,即视为完整。
与第三方归档机器人协同(可选)
若企业需把“已保存记录”自动镜像到内部 NAS,可借助 Letstalk 开放 API 的savedmsg/export端点。示例脚本(curl)如下:
export TOKEN="your_oauth2_token"
curl -H "Authorization: Bearer $TOKEN" \
-X POST https://api.letstalk.im/v1/savedmsg/export \
-d '{"format":"json","range":"all","include_media":false}' \
-o /nas/letstalk_backup.json
权限最小化原则:仅授予savedmsg:read范围,禁止同时开启wallet:read,防止密钥泄露。
故障排查:最常见 4 种报错代码
| 报错代码 | 现象 | 根因/处置 |
|---|---|---|
| SYNC_403 | 令牌正确仍提示无权限 | 自建节点未开启 SavedMsgSync,或 Pro 计划过期 |
| SYNC_408 | 卡在 85% 不动 | 手机息屏导致蓝牙断开;把安卓的“电池优化”设为无限制 |
| SYNC_507 | 提示磁盘不足 | 电脑端系统盘剩余 <2 倍所需空间;改外置盘或清理 *.bak |
| DB_CORRUPT | 同步完无法搜索 | 索引写入被强制中断;在设置→高级→重建索引,约 1 GB/分钟 |
适用/不适用场景清单
- 适用:个人知识库、记者素材归档、Web3 投研频道每日摘要、合规 30 天以内的医疗会诊记录。
- 不适用:>100 GB 的 4K 原始素材、需保存 10 年以上的司法证据(应走公证节点)、多人共用电脑且无密钥清理策略。
最佳实践 6 条(检查表)
- 同步前升级双方客户端到同版号,避免哈希算法差异。
- 使用 5 GHz 局域网,关闭代理,减少中间证书劫持。
- 同步后 24 h 内做一次“搜索计数”验证,确认无缺失。
- 公共电脑务必启用“完全退出”+“清理密钥”,防止后续用户窥探。
- 若媒体文件>5 GB,改用“分卷导出”+外置 SSD,降低温度与耗时。
- 每季度把电脑端 keystore 备份到加密 U 盘,防硬盘损坏导致保存记录无法解密。
常见问题
同步时提示“令牌无效”怎么办?
最常见原因是令牌超过 10 分钟有效期或大小写输错。重新进入手机端设置→隐私与安全→数据管理→已保存聊天记录同步,点击“刷新令牌”即可生成新码。
电脑端同步按钮灰色不可点?
请确认电脑端已升级至 7.8.2 并完成首次扫码登录;若使用自建节点,检查 SavedMsgSync 权限是否设为 Allow,Pro 计划是否过期。
同步后媒体文件打不开?
通常是索引未写完就强制关机导致。进入设置→高级→重建索引,等待进度 100% 后再试;若仍失败,删除 *.bak 后重新拉取缺失段落。
能否只同步文本不同步图片?
7.8.2 暂不提供官方粒度拆分。经验性观察:可在手机端先把媒体文件清理至 2 GB 以下再同步,减少耗时;或等待 7.9 版“增量媒体去重”功能。
自建节点如何查看同步日志?
登录节点后台,进入 Logs→Client API,过滤 SavedMsgSync,可看到 403/408 等错误码及对应设备 ID,方便快速定位权限或网络问题。
风险与边界
“混合索引”依赖客户端主动向外网节点请求 30 天摘要,若所在环境对出站 DNS 有严格审计,可能被误判为异常外联;>10 GB 大文件场景下,旧款双核笔记本易因持续哈希计算导致过热;多人共用电脑时,keystore 残留会让后续用户有机会直接读取保存记录。以上三种情况建议改用离线迁移或等待 7.9 分卷同步。
收尾:结论与版本预期
截至 2026 年 3 月,Letstalk IM 在 7.8.2 版给出的“混合索引”同步已能覆盖 90% 用户的跨设备需求,只要注意自建节点的权限开关与磁盘空间,就能在 3 分钟内完成万级消息的无损迁移。官方路线图显示,7.9 版将引入“增量媒体去重”与“自动季度归档”,届时保存记录可先压缩为 ZIP256 格式再同步,预计节省 25–30% 带宽。如果你此刻就需要迁移,不妨按本文步骤先行落地;若媒体体积超大且合规要求严苛,等待 7.9 或继续采用离线迁移会是更稳妥的选择。




