排障:CC 改多了怎么办
CC 改多了不要立刻让它继续修。先让它列出全部改动,区分必须保留、可以讨论和应该撤回,再收窄回原任务范围。
收窄模板
CC 改多了时,第一反应不是“继续修一下”,而是暂停。继续修往往会把无关改动越滚越大。
本次修改超出范围了,请先暂停。 请不要继续改文件,先列出: 1. 所有被修改的文件。 2. 每个文件和原任务的关系。 3. 哪些修改是完成原任务必须的。 4. 哪些修改是无关优化、格式化或重构。 5. 如何只保留必要修改。 请先给出收窄方案,不要直接执行。
什么叫改多了
- 本来改 1 个文件,结果改了 5 个。
- 本来修 Bug,结果顺手重构组件。
- 本来改文案,结果改了布局和样式系统。
- 本来不装依赖,结果新增了包。
- 本来只读分析,结果开始写文件。
- 本来修当前问题,结果把历史问题也一起修。
改多了通常分三类:
| 类型 | 例子 | 处理 |
|---|---|---|
| 范围扩大 | 顺手改无关页面 | 收窄到原目标 |
| 技术扩大 | 引入依赖、重构架构 | 先撤回或单独评审 |
| 文件扩大 | 格式化、生成产物、临时文件 | 分类确认是否保留 |
先看 diff
请只分析当前 diff,不要修改文件。 请按文件分类: 1. 和原始任务直接相关。 2. 可能相关,但需要确认。 3. 明显无关。 4. 可能是格式化、生成文件或临时文件。 请给出建议:哪些保留,哪些撤回,哪些需要我人工确认。
先不要让 CC 自己撤
很多人发现改多了,会马上说“把多余的撤掉”。这一步很危险,因为 CC 可能分不清哪些是用户手动改的,哪些是它刚才改的。
更稳的做法是先生成撤回计划。
请先生成撤回计划,不要执行。 要求: 1. 列出准备撤回的文件。 2. 说明每个文件为什么属于超范围修改。 3. 如果只撤回文件里的某几段,请列出具体片段。 4. 标出可能包含用户手动改动的地方。 5. 等我确认后再执行。
判断哪些改动该保留
| 类型 | 处理 |
|---|---|
| 直接修复原问题 | 保留 |
| 为修复原问题必须做的小调整 | 保留,但说明理由 |
| 顺手优化 | 暂缓或撤回 |
| 大范围格式化 | 通常撤回 |
| 新依赖 | 默认撤回,除非确认必须 |
| 生成产物 | 根据项目规则判断,通常不手改 |
| 用户手动改动 | 不允许覆盖 |
哪些改动可以暂缓
如果改动本身不错,但不属于当前任务,不要急着保留:
请把超范围但可能有价值的改动列为后续任务。 要求: 1. 不混入本次提交。 2. 说明它解决什么问题。 3. 说明为什么不属于当前任务。 4. 如果以后要做,怎么单独验收。
确认后再执行
可以按收窄方案处理。 要求: 1. 只保留完成原任务必须的修改。 2. 撤回无关优化和无关重构。 3. 不要丢失用户已有改动。 4. 完成后重新检查 diff 并解释。
不要丢用户改动
如果工作区里有你自己手动改过的内容,一定要先提醒 CC。
注意:工作区里可能有我手动改过的内容。 撤回超范围改动时: 1. 不要用 git reset --hard。 2. 不要直接覆盖整个文件。 3. 先说明准备撤回哪些具体片段。 4. 如果无法区分我的改动和你的改动,请停下来问我。
如果它已经装了依赖
你刚才引入了新依赖,请先暂停。 请说明: 1. 这个依赖是否是完成原任务必须的。 2. 有没有不引入依赖的方案。 3. 修改了哪些包管理文件。 4. 如果撤回依赖,需要撤回哪些文件变化。 5. 在我确认前不要继续安装或删除依赖。
如果已经改了很多文件
文件很多时,不要逐个让 CC 猜。先按目录和类型分组。
当前改动文件较多,请先分组。 请按下面格式输出: 1. 源码文件: 2. 样式文件: 3. 文档文件: 4. 配置文件: 5. 生成产物: 6. 包管理文件: 7. 其他: 每组说明和原任务的关系,以及建议保留还是撤回。
如果收窄后任务还没完成
撤回无关改动后,原任务可能还没完成。这时不要回到大范围修改,应该重新进入 Plan Mode。
无关改动已经收窄。 请重新进入 Plan Mode: 1. 原始目标是什么。 2. 当前还差什么。 3. 最小修改范围是什么。 4. 需要修改哪些文件。 5. 如何验收。 不要使用刚才被撤回的扩大方案。
收窄后的验收
请验证收窄结果。 要求: 1. 当前 diff 是否只剩原任务相关内容。 2. 是否撤回了无关重构。 3. 是否保留了必要修复。 4. 是否误删用户手动改动。 5. 是否需要重新 /verify。
防止下次再改多
下次执行同类任务前,请先提醒我设置边界。 边界包括: 1. 允许修改哪些文件。 2. 禁止修改哪些文件。 3. 是否允许安装依赖。 4. 是否允许格式化。 5. 验收标准是什么。
验收结果
- 你知道改多了要先暂停。
- 你能让 CC 区分必要改动和无关改动。
- 你知道不要丢失用户已有改动。
- 你知道收窄后还要重新验收。
- 你知道撤回前要先生成计划,不能让 CC 直接粗暴覆盖。