# 示例：审查并修复代码缺陷

> 在现有仓库中建立复现基线、限制修改范围，并用测试与差异完成一次可验证修复。

Canonical page: /examples/review-and-fix-code



<Takeaways>
  <li>
    先复现问题，再允许修改
  </li>

  <li>
    把必须保持的行为写进任务
  </li>

  <li>
    用测试、类型检查和最终差异验收
  </li>
</Takeaways>

这个示例适合已有代码仓库中的局部 Bug。目标不是让 Agent “看看代码”，而是交付一条能够被证明有效、范围清楚且容易回退的修改。

## 起始状态 [#起始状态]

准备一个可恢复的测试仓库，并确认：

<Checklist title="提交任务前">
  <li>
    项目能够按 README 安装和运行，当前失败不是依赖未安装造成的。
  </li>

  <li>
    问题有明确现象、复现步骤或失败测试。
  </li>

  <li>
    工作区中已有修改已经保存，并且你知道哪些改动不能覆盖。
  </li>

  <li>
    Vetta 会话绑定到仓库根目录，首次尝试使用「沙盒受限」。
  </li>
</Checklist>

## 提交完整任务 [#提交完整任务]

把方括号内容替换为真实信息；不知道测试命令时，保留“从项目脚本中确认”这条要求。

<Plate no="01" title="代码修复任务">
  ```text
  修复 [页面或模块] 中的这个问题：[实际现象]。

  复现步骤：
  1. [第一步]
  2. [第二步]
  3. 当前结果是 [错误结果]；期望结果是 [正确结果]。

  工作要求：
  - 先阅读当前目录适用的项目指令、README、相关源码和测试；
  - 先运行最小复现或相关测试，记录修改前的基线；
  - 找出根因后再修改，不绕过现有校验，也不覆盖工作区中的已有改动；
  - 修改范围限制在 [允许修改的目录或模块]；
  - 为这个回归新增或更新一个在旧行为下会失败的测试；
  - 运行相关测试和项目已有的快速检查；
  - 最后说明根因、主要修改、实际运行的命令与结果，以及仍未验证的风险。

  如果复现信息不足、必须改动公共合同，或需要执行不可恢复操作，请先停止并说明原因。
  ```
</Plate>

## 执行时检查证据 [#执行时检查证据]

<Signals>
  <Signal title="基线">
    先出现复现结果或失败测试，而不是直接开始大范围编辑。
  </Signal>

  <Signal title="范围">
    读取和修改集中在相关模块，没有顺手重写无关文件。
  </Signal>

  <Signal title="保护">
    遇到权限、冲突或不明确合同会暂停说明。
  </Signal>

  <Signal title="闭环">
    修改后重新运行同一复现，并补充与风险匹配的检查。
  </Signal>
</Signals>

## 预期产物 [#预期产物]

* 一组针对根因的源码修改，而不是只改错误提示或隐藏失败。
* 一个能够防止同类回归的测试；纯配置或文档问题除外。
* 实际执行过的测试、类型检查或 lint 结果。
* 一份简短交付说明，明确未运行的高成本验证及原因。

## 验收结果 [#验收结果]

<Checklist title="接受这次修复前">
  <li>
    原始复现现在通过，且不是通过删除功能或降低校验实现。
  </li>

  <li>
    新增测试确实覆盖用户可观察行为，而不是只断言内部调用。
  </li>

  <li>
    最终差异中没有密钥、生成垃圾或无关格式化。
  </li>

  <li>
    已有工作区改动仍然保留。
  </li>

  <li>
    Agent 没有声称未实际运行的检查已经通过。
  </li>
</Checklist>

## 结果不符合时恢复 [#结果不符合时恢复]

不要重新提交整个任务。指向具体证据，让 Agent 在现有会话中缩小修正范围：

```text
当前修复还不能验收：[失败测试或具体差异]。
请保留已经正确的修改，只处理 [文件/行为]；不要扩大到 [禁止范围]。
先解释这个失败与根因的关系，再修改并只重跑相关验证。完成后列出新的差异和结果。
```

如果修改方向已经错误，停止会话并从 Git 或备份恢复受影响文件，再用更窄的允许范围重新开始。

<Continue>
  <ContinueLink href="/core/context-tools-and-permissions/" title="控制上下文与权限" description="引用复现材料并限制 Agent 可以执行的动作。" />

  <ContinueLink href="/core/progress-results-and-recovery/" title="检查结果与恢复" description="从工具记录、文件差异和测试判断任务是否真的完成。" />

  <ContinueLink href="/examples/batch-project-audit/" title="把只读检查扩展到多个项目" description="先稳定单项目规则，再交给批量任务。" />
</Continue>
