同步与备份
智码 AICoder 提供三套数据保护机制:本地导出/导入(手动备份)、WebDAV 云同步(多设备协作)、会话 Checkpoint 快照(单会话回溯)。三者各司其职,可单独使用也可叠加。
三机制对比
| 机制 | 适用场景 | 数据范围 | 频率 |
|---|---|---|---|
| 本地导出/导入 | 换机迁移、版本归档、手动备份 | 全套配置(按 SyncScope 选择) | 偶尔(按需) |
| WebDAV 云同步 | 多设备工作、家庭/公司互通 | 全套配置(按 SyncScope 选择) | 主动推送/拉取 |
| Checkpoint 快照 | 单个会话「试错-回滚」 | 单个会话的 JSONL | 关键节点手动创建 |
选择性同步范围(SyncScope)
不论本地导出还是云同步,都可勾选要同步的内容子集:
| 范围 | 内容 | 默认勾选 |
|---|---|---|
| 应用设置 | 主题、终端配置、快捷键、通知…… | ✅ |
| API Profile | 所有工具的 API Key / OAuth 档案 | ✅ |
| 代码片段 | 所有片段及模板变量 | ✅ |
| 会话数据 | 会话元数据 + JSONL 文件 | ❌(数据量大) |
| 项目记忆 | 所有项目的记忆条目 | ✅ |
| Claude 配置 | ~/.claude.json(含 MCP Servers) | ✅ |
| Claude Settings | ~/.claude/settings.json | ✅ |
| Claude OAuth 凭据 | ~/.claude/.credentials.json | ❌(敏感) |
凭据同步谨慎勾选
Claude OAuth 凭据包含 access_token / refresh_token,云端泄露 = 账号被盗。默认不勾选,建议只在受信任的私有 WebDAV 服务(如个人 Nextcloud)启用,或者干脆走配置档案的加密 envelope 而不是裸同步。
本地导出 / 导入
导出
- 设置 → 数据管理 → 「导出数据」
- 勾选 SyncScope(默认勾选合理项)
- 选保存路径 → 生成
aicoder-sync-YYYY-MM-DD.json
导入
- 设置 → 数据管理 → 「导入数据」
- 选 JSON 文件
- 选导入模式:
| 模式 | 行为 |
|---|---|
| 覆盖(Overwrite) | 清空现有数据后导入新数据。危险,会丢失当前未导出的内容 |
| 合并(Merge) | 保留现有数据,按 ID 合并;冲突时跳过新数据 |
第一次跨机迁移
建议在新机器上先导出当前空白状态作为兜底,再用「覆盖」导入老机器的备份。这样如有问题还能回滚到空白状态。
WebDAV 云同步
支持任何标准 WebDAV 服务:Nextcloud、坚果云、Synology、ownCloud、Apache mod_dav 等。
配置
设置 → 同步 → WebDAV:
| 字段 | 示例 |
|---|---|
| URL | https://nextcloud.example.com/remote.php/dav/files/yourname/ |
| 用户名 | yourname |
| 密码 | 应用专用密码(推荐)或登录密码 |
填完点「测试连接」(PROPFIND 探测)→ 通过后保存。配置以加密形式存到本地 settings 表,不会明文落盘。
操作
| 按钮 | 行为 |
|---|---|
| 预览云端 | 拉取云端 manifest,显示版本、设备名、导出时间、各项数据量 |
| 推送到云端 | 按 SyncScope 把当前数据打包上传,覆盖云端 aicoder-sync.json |
| 从云端拉取 | 下载 aicoder-sync.json,按"覆盖/合并"模式导入本地 |
数据格式
云端文件 aicoder-sync.json 结构:
json
{
"manifest": {
"version": 1,
"app_version": "3.3.0",
"device_name": "MacBook-Pro",
"exported_at": "2026-05-05T12:34:56Z",
"scope": { "settings": true, "api_profiles": true, ... }
},
"data": {
"settings": [...],
"api_profiles": [...],
"snippets": [...],
"project_memories": [...],
"claude_config_json": {...}
}
}manifest.version 用于跨版本兼容性检查,未来如有破坏性升级会提示。
Checkpoint 快照
会话级别的"试错-回滚"工具。和云同步是不同维度——快照只针对单个会话的对话文件。
适用场景
- AI 即将做大改动前,先创建快照
- 会话产生有价值的中间态时,作为里程碑保留
- 实验性 prompt 走偏了,回滚到之前的状态重新引导
创建快照
会话标签页右键 → 「创建快照」 → 填名称和描述:
名称: 重构前
描述: 准备让 AI 重构 services 层,先备份当前对话后端会:
- 复制当前 JSONL 文件到
checkpoints/<快照UUID>.jsonl - 统计消息数 + 文件大小
- 写入 DB 一条记录(关联到 session_id + claude_session_id)
恢复快照
会话标签页右键 → 「快照管理」 → 选目标快照 → 「恢复」:
- 当前 JSONL 自动备份为
<原文件>.backup(防止误操作) - 用快照文件覆盖当前 JSONL
- 提示重启会话生效(CLI 启动时会重新读 JSONL)
删除快照
不再需要的快照可手动删除,会同时移除磁盘文件 + DB 记录。
数据存储位置
| 数据 | 位置 |
|---|---|
| WebDAV 配置 | DB settings 表(加密存储) |
| 快照文件 | <app_data>/checkpoints/<uuid>.jsonl |
| 快照元数据 | DB session_checkpoints 表(schema v10 引入) |
| 同步包临时文件 | <app_data>/.tmp/release-vX.X.X/(导出时) |
