重装 AI 客户端后对话历史丢失:定位与恢复
结论先说
桌面 AI 客户端的对话历史一般不在服务器,而是以文件形式存在本机用户目录。卸载时是否删除,取决于数据目录位置和是否勾选“同时清除用户数据”。能否找回,看两件事:旧数据目录是否还在,以及新版本是否换了存储位置或格式。
为什么重装后记录会不见
三种情况机制不同:
- 数据目录被卸载器删除:配置和会话放在安装目录下,卸载时整个目录被移除。
- 目录还在,但新版本不读它:应用标识(目录名、配置文件名)变了,新版本去读一个全新的空目录。
- 数据还在,但格式或索引变了:会话文件仍在,新版本用不同数据库结构,旧文件不再加载。
判断依据是旧目录是否存在和新旧配置路径是否一致,不要凭现象猜。
先定位数据目录
常见位置(示意,以客户端文档为准):
| 系统 | 常见数据位置 |
|---|---|
| Windows | %APPDATA%\your-app、%LOCALAPPDATA%\your-app |
| macOS | ~/Library/Application Support/your-app |
| Linux | ~/.config/your-app、~/.local/share/your-app |
先用应用名模糊匹配,再按修改时间排序:
find ~ -maxdepth 4 -type d -iname '*your-app*' 2>/dev/null
ls -la /path/to/app
Windows 可在地址栏输入 %APPDATA% 逐层查看,或用 PowerShell 的 Get-ChildItem 过滤。会话通常表现为 .json、.jsonl、.sqlite/.db 文件,或按会话 ID 命名的子目录。
恢复步骤
第一步:先复制,别在原目录操作。 所有尝试都在副本上做,避免新版本写入覆盖旧结构。
cp -a /path/to/app /path/to/backup/app-$(date +%Y%m%d)
第二步:判断新旧目录是否同一套。 对比配置文件名、数据库表结构或文件命名规则。一致则把旧会话文件放回新目录对应位置;不一致说明格式变了,需要转换,或只能读取不能导入。
第三步:处理“新版本不读旧目录”。 若旧目录完好、只是应用标识变了,可把内容迁移到新目录,或在客户端支持时把数据路径指回旧位置。迁移前同样先备份新目录。
第四步:只读验证。 客户端不支持导入时,用 SQLite 工具或文本编辑器打开会话文件,至少导出为纯文本:
sqlite3 /path/to/backup/app/history.db '.tables'
sqlite3 /path/to/backup/app/history.db 'select * from messages limit 5;'
怎么确认成功或定位失败
- 会话列表出现旧条目且内容完整:恢复成功。
- 列表仍为空但旧目录文件齐全:问题在读取路径或格式,回到第二步核对。
- 旧目录本身不存在:卸载时已被删除,只能尝试系统级恢复工具或从备份还原,成功率取决于磁盘是否被新数据覆盖。
边界与代价
- 卸载时勾选了清除用户数据,且此后磁盘写入较多,文件级恢复成功率明显下降。
- 大版本间格式不兼容时,强行把旧文件塞进新目录可能导致客户端启动异常,务必在副本上试。
- 会话可能含敏感内容,备份应放在受控位置,不要传到公共网盘。
- 最稳妥的做法是升级或卸载前先备份数据目录,而不是事后补救。