Agent 改了仓库里的设计,用 git 撤回还是用快照撤回
两者配合使用。git 记录仓库历史;Variant Design 的 undo B 按请求撤回 B,rollback 撤回一次接入,发现文件后来又被编辑就拒绝执行。让 Agent 动手前先检查并保存自己的工作;探索时用 undo,确认接入结果后再提交。使用 git restore 前要看清恢复来源和目标,它可能覆盖尚未保存的编辑。
发布于 2026-11-02两者的区别
- 范围:git 可以记录整个仓库,也能按路径操作;undo B 只动 B 自己的文件和 tokens,A/C 和最终选择不变。
- 单位:git revert 针对提交,git restore 针对路径;undo 针对一次请求,一个请求分几步改完,也会一起撤回。
- 恢复来源:默认 git restore 从暂存区恢复工作文件;--staged 改动暂存区,默认来源是 HEAD。它们不会根据 Agent 请求区分编辑。
- 记录位置:git 在 .git/;快照在 variant-output/ 的历史里,接入前的备份在 variant-output/.integrations/。
1. Agent 动手前:先提交自己的改动
先检查改动,再提交需要保留的文件,或确认 stash 的范围。下面的 -u 会包含未跟踪的新文件,但不包含被忽略的文件;需要的忽略文件另行备份。stash 会从工作区移走保存的改动,恢复时可能有冲突。技能的 .variant-work/ 含项目源码副本,不要提交,也不要用 -a 不加区分地收进仓库对象。
git status --short
git stash push -u -m "before design exploration"2. 探索阶段:用 undo
三个方向都在 variant-output/ 里,还没进入你的源码。这时改坏了一版,发 undo B 就行,不用回退整个仓库,其他两版的修改也保得住。
undo B3. 接入之后:先 rollback,再交给 git
接入会改你的源码。技能先备份每个目标文件,再写入。只要这些文件之后没被改过,rollback 就能恢复原样,提交与否不影响这个判断。
确认要保留之后,像平常一样提交。撤销已提交的接入时,可以检查 git revert:它新增一个反向提交,可能需要处理冲突;应先确认目标提交只包含你要撤销的内容。
node <skill-root>/scripts/variant-integrate.mjs list variant-output
node <skill-root>/scripts/variant-integrate.mjs rollback variant-output <integration-id>保存与恢复的边界
- 从未进入 Git 对象、快照或其他备份的内容,覆盖后不能指望这些记录找回。
- 技能快照不覆盖 Agent 在流程之外直接改的文件;这部分需要版本控制、编辑器历史或其他备份。
- 在提交过程中挡住外部编辑器的写入。技能的锁只对它自己的操作有效。