3.8 KiB
3.8 KiB
对话资产管理
AI 改了你工作区的文件之后,「改了什么、怎么回滚、坏到哪一版」就是核心问题。Astrion 提供三层资产保障:版本控制(对话级检查点)、修改留痕(任务级 diff)、Git 状态栏(实时感知)。它们相互独立、可叠加使用。
1. 版本控制
对话级的文件检查点系统,让 AI 的每一轮改动都有快照可回退。
开关与备份方式
- 新对话默认开启(个人空间可改默认值);
- 单个对话可在
+菜单 →「版本控制」临时开关; - 备份方式二选一(个人空间):
- 浅备份(默认):只追踪 AI 通过 write_file / edit_file 编辑的文件,每次编辑前自动备份当前内容——快、省空间,绝大多数场景够用。⚠️ 注意边界:AI 用 run_command 执行命令改动的文件(如 sed、重定向、脚本写入)不在浅备份的追踪范围内;
- 完全备份:整工作区快照——最稳,但大项目下会明显变慢占空间。
检查点粒度:每条用户消息
- 你每手动发送一条消息,系统在该消息处理完成后记录一个检查点,引用当时所有已追踪文件的最新备份版本——也就是说,回溯的最小颗粒度是「一次用户手动发送的消息」,而不是单个文件编辑;
- 查看某个检查点的 diff = 该消息快照与上一条消息快照之间的差异;
- 回滚到某个检查点 = 把所有已追踪文件恢复到该消息时的状态(覆盖式,回滚前请确认当前改动已另存或已提交)。
与其他机制的关系
- 版本控制追踪的是文件系统状态,与对话消息无关;
- 它与 Git 不冲突:AI 不会替你 commit,版本控制是 Git 之外的另一张安全网,适合「还没来得及 commit 就被改坏了」的场景。
2. 修改留痕(modify history)
任务级的净修改记录,默认开启。
- 每完成一轮任务,本轮对话中 AI 编辑过的全部文件以 unified diff 形式落盘到:
<工作区>/.astrion/modify_history/<对话ID>/; - 每个任务一个
.diff文件,文件名含该任务的用户输入摘要与开始时间; - 对话中的「编辑摘要卡片」展示本轮编辑过的文件列表,点击可查看 diff;卡片的显示时机可在个人空间配置(默认工作完成后显示,也可改为运行期间实时显示)。
用 diff 文件手工恢复
留痕文件可直接用 git 工具操作:
cd <工作区>
git apply <diff文件> # 重做这次修改
git apply -R <diff文件> # 撤销这次修改
典型场景:版本控制没开、Git 没 commit、git checkout 误覆盖了 AI 的劳动成果——去 modify_history 里找到对应任务的 diff,git apply 即可恢复。
该目录由系统自动维护,请勿手工增删其中文件;可在个人空间整体关闭(关闭后既不落盘也不注入提示)。
3. Git 状态栏
输入栏上方的状态条,实时显示当前工作区的 Git 状态摘要(当前分支、未提交改动量等),让你在不离开对话的情况下掌握「工作区现在脏不脏、AI 改了多少」。
- 默认显示;
+菜单 →「Git 状态栏」可快速显隐,个人空间有同款设置项; - 工作区不是 Git 仓库时不显示。
4. 三层机制怎么选
| 需求 | 用哪层 |
|---|---|
| 实时感知工作区改动 | Git 状态栏 |
| 回滚到对话中的某个时间点 | 版本控制 |
| 精确恢复/撤销某一轮任务的修改 | 修改留痕 diff |
| 长期、严肃的规模开发 | 仍然要 Git commit——前三级都是安全网,不是版本管理的替代品 |
推荐姿势:重要项目保持「版本控制开 + 修改留痕开 + 勤 commit」,三张网叠加,AI 怎么折腾都丢不了东西。