agentmentoragentmentor

第 05 节:跑测试和验证

本节 objectives:

  • 能要求 Codex 找到并运行合适的验证命令。
  • 能看懂测试失败时该修代码、修测试还是调整任务。
  • 能让 Codex 在最终报告里列出验证证据。

先修:会审 diff 并给反馈 | 上一节 << 04 | 下一节 06 >>

"已完成"必须有证据

Codex 能运行命令,但它不一定天然知道你的项目最短验证路径。你要训练自己在任务里写明:"先找现有测试命令;改完跑相关测试;如果跑不了,解释阻塞和替代检查。"Codex CLI 的交互模式会展示命令和输出,这让你能把验证放进同一个协作回路。1

测试不是唯一验证。UI 改动可能需要截图,文档改动可能需要链接检查,课程生成样例需要 course-guard.mjs。关键是:每个完成声明后面都要有可复查的证据。

讲解

验证分三类:

类型适合什么例子
自动测试逻辑、解析、API、组件行为npm test, pytest, vitest run glossary
静态检查类型、格式、lint、构建npm run lint, tsc --noEmit, npm run build
手动验证UI、内容质量、外部服务截图、浏览器点击、guard 输出

失败也分三类:

  1. 改动引入真实 bug:修代码。
  2. 测试表达旧行为:确认新行为后改测试。
  3. 环境阻塞:记录缺依赖、权限或网络,给替代验证。

课程生成 skill 的 guard 是典型机械验证:它检查引用、死链、模板段、README 覆盖、frontmatter、glossary 和 sources 权威字段。2 这类 guard 过了不等于课程完美,但没过就不能交付。

跟我做一遍(worked example)

任务:新增一门课程样例。

你给 Codex 的验证要求:

text
写完后必须跑:node scripts/course-guard.mjs agent-mentor/skills/generate-course-from-topic/examples/learn-using-codex
如果失败,按 violation 修到通过。最终报告 guard 输出、变更文件列表和你引用的主要来源。

Codex 可能遇到失败:

text
GUARD FAIL- 03-read-plan-and-status.md: 悬空引用 `[caret S99]`- glossary[4]: source [^S12] 在 sources.md 找不到

这不是"测试坏了",是课程文件不满足契约。修法是补 sources 块或改引用,不是绕过 guard。

换你补全(faded example)

你让 Codex 改了一个 React 组件。请补全验证要求:

text
改完后请先运行 ____________________。如果没有专门测试,请运行 ____________________。如果本地环境跑不了,请 ____________________。最终总结必须包含 ____________________。

参考答案:

text
改完后请先运行相关组件测试或最近的 vitest 文件。如果没有专门测试,请运行 npm test 或 npm run lint 中与该包最接近的命令。如果本地环境跑不了,请贴出错误、说明缺什么,并做静态 diff 自查。最终总结必须包含命令、结果、失败原因或未跑原因。

关键判断点是不要把"无法运行"写成"已验证"。

小结 + 通向下一节

验证是 Codex 工作闭环的一半。你要让它找到正确命令、解释失败、重跑确认,并在最终报告里留下证据。

下一节处理更容易踩线的部分:权限、联网和工作树。

Footnotes

  1. Codex CLI features — https://developers.openai.com/codex/cli/features

  2. course-guard.mjs

练习

Level 1: 在你的项目里让 Codex 找验证命令。

提示 1

先跑小测试,再跑大测试。

提示 2

失败输出要保存给 Codex 看。

提示 3

最终总结里没有验证证据,就让它补。

自评