跳到主内容

Claude 改坏了怎么办?回退与检查点

2026-10-30 发布 来源:我告诉你AI导航 阅读

AI 智能体自主改代码,快是快,可方向一错,几十秒就能改出一片狼藉:改了不该改的文件、把能跑的代码改挂、测试红了一片还在继续打补丁。Claude Code 与多数同类工具的一个区别,是它提供了原生的检查点机制:Esc Esc 或 /...

AI 智能体自主改代码,快是快,可方向一错,几十秒就能改出一片狼藉:改了不该改的文件、把能跑的代码改挂、测试红了一片还在继续打补丁。Claude Code 与多数同类工具的一个区别,是它提供了原生的检查点机制:Esc Esc 或 /rewind 可以把对话与代码状态回退到此前某一步,不必完全依赖 git 手工收拾。但这套机制要用对顺序——先停手,再回退,最后清点 git 管不到的副作用。这篇按排障文惯例给一条固定的恢复顺序,外加 fix loop 的破法;Codex 侧没有检查点、纯靠 git 的同款场景,见改坏代码怎么撤一篇对照着看。

第一步:Esc 停止,别在坏结果上叠补丁

发现改坏了,第一反应决定损失大小。继续在对话里说改回去,它会基于当前已坏的状态继续打补丁,错上加错,几轮之后连哪里是原始状态都说不清。正确动作是先中断:交互会话里按 Esc,正在执行的步骤立刻停下,工作区冻结在已坏但不再恶化的状态——这是所有回退动作的前提。判断要不要停有个朴素标准:测试开始连红、它反复改同一个文件、改动范围明显超出任务描述,三个信号中任意一个出现,就值得按停而不是旁观。停手之后也别急着清上下文,回退要靠这份历史里留存的检查点。

第二步:Esc Esc 与 /rewind 回到检查点

Claude Code 在对话推进过程中自动留存检查点,按两次 Esc(Esc Esc)可以唤出历史步骤列表,选某一步回退;也可以直接敲 /rewind 达到同样效果。回退的对象分两类,用前想清楚:一是回退对话状态,把讨论拉回某一步重新谈;二是连带回退代码状态,把文件恢复到那一步的样子——后者才是改坏之后的常用姿势。两点边界要记:检查点覆盖的是 Claude Code 自己的改动轨迹,你手工改过的内容、它改动之前就存在的状态,不在回退范围内;回退到早期检查点,其后所有对话与改动一并作废,选点之前先想清楚要放弃多少。机制细节随版本演进,截至发稿,以官方文档为准。

第三步:git 兜底与侧效应清点

检查点不是万能替代,git 仍是最终退路。三类情况要靠 git:一是改动已经 commit,检查点回不去已提交的历史,用 git revert 或 reset 处理;二是改动混着你自己的手工编辑,整体回退会误伤,用 git diff 盘点后按文件挑着恢复;三是多人协作的分支,回退动作要走正常 git 流程而不是 agent 内部机制。还有一层容易被忽略:回退只管文件,管不到已经发生的副作用——它跑过的数据库迁移、装过的依赖、发出去的请求,都不在任何回退机制的覆盖里,要手工逐项清点。并行改动的隔离预防,见worktree 隔离一篇的通用讨论。

步骤动作管得到什么管不到什么
停手按 Esc 中断正在执行的步骤工作区冻结在已坏但不再恶化的状态已经产生的坏改动不会自动消失
回退Esc Esc 唤出历史步骤,或敲 /rewind对话状态与代码状态可一并回退你手工改过的内容、它动手前的既有状态
git 兜底已提交历史用 revert 或 reset;混合改动用 diff 盘点后按文件恢复已 commit 的历史与协作分支数据库迁移、装过的依赖、发出去的请求

fix loop 的破法:收窄指令加失败测试

比一次性改坏更磨人的是 fix loop:它改一版、测试红、再改一版、还是红,来回打转,每轮都在消耗额度,越改越偏。破法分两步。第一步收窄指令:把「修好这个 bug」换成「只改 src/auth.py 里的超时判断,其他文件一概不动」——范围收窄后,它不再四处撒网,转圈的概率大幅下降。第二步给失败测试:把那条红的测试命令明确交给它,让它以测试转绿为唯一目标,而不是靠自己的感觉反复重写。两步之后仍在转圈,说明方向或信息有缺口,停掉,回退到检查点,换一条路径重新描述任务,比在第十轮补丁上继续叠加便宜得多。任务描述怎么写才算收窄,见任务描述攻略一篇。

事前防线:每任务 commit 是退路的起点

回退手段再全,也不如事前留好退路。社区反复验证的一条纪律是每任务 commit:让 agent 动手之前,先把当前工作区的干净状态提交一次。理由很硬:有了这笔提交,它的所有改动都在版本历史上分得清清楚楚,检查点失效、git 回退、事后审查全都有的放矢;没有这笔提交,回退命令会连你自己的半成品一起清掉。配套两条:一是大任务拆小,每个小任务的 diff 你愿意逐行看完,改坏了损失也小;二是盯着 diff 的习惯别丢——回退是出事之后的补救,逐行看 diff 才是出事之前的把关,盯不住的场景切回默认权限模式,见权限模式与规则一篇的档位选择。想把这套顺序固化成团队应急流程,可以让 DeepSeek 把停手、回退、git 兜底、fix loop 破法四步整理成一页卡片,再让 Kimi 出几道情景题考新人,练两遍顺序感就立住了。

回退检查点速查

  • 先按 Esc 停手,别在坏状态上继续对话叠补丁
  • Esc Esc 或 /rewind 回检查点,代码与对话可一并回退
  • 已提交历史、混合改动、协作分支走 git,回退后手工清点副作用
  • fix loop 破法:收窄指令到单文件,以失败测试转绿为目标
  • 每任务 commit,退路从开工前就留好

回退检查点快问快答

  • 回退检查点后,代码和对话都回到过去了吗?可以两者都回退,也可以只回其一,选择时看清楚选项;你手工做的改动与它动手前的既有状态不在覆盖范围内。
  • 检查点和 git 要二选一吗?不冲突,是两层:检查点管会话内的快速回退,git 管提交后的历史与协作流程;每任务 commit 之外再留检查点,退路更宽。
  • 它转圈改不好的时候,值得继续等吗?两三轮无进展就该停。按收窄指令与失败测试两步重来一次,还不行就回退换路径,第十轮补丁几乎不会比第三轮更好。

反馈页面信息

请描述需要更正的地方,页面标题和网址会自动附上。

也可以发邮件至 [email protected]