← 文档中心

快照与回滚

使用

让 AI 改代码,最实际的问题是”改坏了怎么办”。快照系统就是这个问题的答案。

设计原则:不碰你的提交历史

DuoDuoCode 在项目之外用一个独立的影子 Git 仓库记录快照。它:

  • 不会污染你的 git log
  • 不需要你先提交工作区
  • 与你的分支、暂存区完全隔离

你的提交历史保持干净,AI 的每一步改动另有账本。

存储位置

<数据目录>/snapshot/<项目ID>/<目录哈希>/

数据目录见安装与升级中的目录结构。

如何回滚

撤销一条消息

在终端界面按 <leader>u 撤销消息——文件改动会一并回滚到该消息执行之前。

桌面端同样支持按消息粒度撤销。

回滚到更早的状态

需要回到更早的时间点时,使用会话时间线:<leader>g 查看,选择目标位置回滚。

安全门

如果工作区相对基线存在未提交的改动,回滚会被拒绝并给出提示,而不是强行覆盖。

这是刻意的设计:回滚会把文件恢复到历史状态,若你在此之后手动改过文件,直接恢复会丢弃你的改动。遇到这种情况,先提交或暂存你的改动,再执行回滚。

配置

关闭快照

{
  "snapshot": false
}

关闭后不再记录快照,撤销与回滚将无法恢复文件内容(消息仍可撤销,但文件改动不可逆)。不建议关闭。

调整保留期

{
  "snapshot_retention_days": 90
}

默认保留 90 天。后台会定期清理过期对象。

排除规则

以下文件不进入快照,以控制体积并避免记录无关内容:

  • .gitignore 命中的文件
  • 未跟踪且大于 2MB 的单个文件

诊断

duoduocode debug snapshot track          # 手动打一个快照
duoduocode debug snapshot diff <hash>    # 查看某快照的差异
duoduocode debug snapshot patch <hash>   # 导出某快照的补丁

相关