预计阅读时间: 17 分钟
Codex 在调试和重构中的价值,来自它能快速连接错误现象、代码路径、测试结果和最小修改。但这类任务风险也高:如果没有证据,它可能改掉症状而不是根因;如果没有边界,重构可能变成无关大改。
这一篇讨论三类高频工作:修 bug、做 review、做重构。
调试:先建立证据链
不要一上来让 Codex “猜哪里错了”。更好的指令是:
请先基于错误日志和相关代码建立根因假设,列出你要验证的证据,再开始修改。
调试证据一般来自:
- 报错堆栈。
- 测试失败输出。
- 浏览器控制台。
- 服务端日志。
- 最近变更 diff。
- 数据库或接口响应。
- 相关配置和环境变量。
Codex 应该先把这些证据串起来,再选择修复点。
一个 bug 修复流程
1. 复现问题:确认错误能稳定出现。
2. 缩小范围:找到入口、调用链和状态变化点。
3. 建立假设:说明为什么这里可能是根因。
4. 最小修改:只改根因相关位置。
5. 防回归:补测试或至少补可重复检查。
6. 复测:确认原问题消失,附近行为不退化。
7. 汇报:说明根因、修复、验证和残余风险。
如果无法复现,Codex 应该说“没有复现成功”,而不是直接给一个看起来合理的修复。
代码审查:让发现先于总结
让 Codex review 时,提示应该更像代码审查任务,而不是让它夸改动:
请按代码审查方式检查当前 diff。
优先找 bug、回归、遗漏测试、边界条件和安全风险。
先列发现,按严重程度排序,附文件和行号。
好的 review 输出应该包含:
- 具体文件和行号。
- 为什么这是问题。
- 什么情况下会触发。
- 建议的修复方向。
- 没有问题时,也说明测试覆盖或残余风险。
不要把格式、偏好和命名小事放在严重逻辑问题前面。真正有价值的 review 是保护行为。
重构:先定义不变性
重构的第一原则是行为不变。你可以这样要求 Codex:
请先写出这个重构必须保持不变的行为,再提出小步计划。
每一步完成后运行相关测试或类型检查。
常见不变性包括:
- 公共 API 不变。
- URL、SEO、结构化数据不变。
- 数据库字段含义不变。
- 错误处理语义不变。
- 用户可见文案不变。
- 性能关键路径不退化。
如果无法证明行为不变,重构就应该缩小。
识别危险重构
这些信号说明需要停下来重新规划:
- 一次修改跨越多个无关模块。
- 删除了大量代码但没有测试证明。
- 引入新抽象却没有减少实际复杂度。
- 为了“统一风格”改变了用户可见行为。
- 同时改数据模型、UI、部署和文档。
- 不能清楚解释为什么现有结构不够用。
Codex 很擅长做机械重构,但机械重构必须有边界。
用测试保护 Codex 的速度
如果已有测试不足,可以让 Codex 先补一条 characterization test,也就是先记录当前行为:
请先补一个描述当前行为的测试,不改变生产代码。测试通过后再做重构。
这样重构前后可以对比。对于没有测试框架的项目,也可以用构建、快照、curl、截图或脚本输出来建立轻量保护。
审查 Codex 自己的修改
Codex 完成一轮修改后,最好让它自己进入 review 模式:
请检查你刚才的修改,重点看:
- 是否有未同步的英文/中文路由。
- 是否破坏 sitemap/canonical。
- 是否遗漏移动端。
- 是否误改无关文件。
- 是否需要文档记录。
这一步常常能发现“实现完成但产品契约漏掉”的问题。
调试提示模板
现象:
<错误或截图>
复现:
<步骤>
约束:
- 先定位根因,不要直接猜修复。
- 只做最小改动。
- 补能防回归的测试或检查。
- 解释验证结果。
Review 提示模板
请 review 当前未提交修改。
优先级:
1. 行为回归。
2. 数据、权限、安全和部署风险。
3. 缺失测试或验证。
4. 可维护性问题。
请用文件/行号给发现;如果没有发现,也说明剩余风险。
重构提示模板
请重构 <模块>,目标是 <目标>。
要求:
- 先列出必须保持不变的行为。
- 拆成小步。
- 不改无关视觉/文案/API。
- 每一步后运行相关检查。
参考资料
- OpenAI Codex Manual: https://developers.openai.com/codex/codex-manual.md
- Code review with Codex: https://learn.chatgpt.com/docs/code-review
- Codex best practices: https://learn.chatgpt.com/guides/best-practices