Codex Subagent 入门:用三个角色完成一个小任务
想学习多 Agent 协作,可以从一个很小的任务开始:让 Codex 实现购物车总价函数,依次交给三个角色做需求分析、代码实现和独立验证。
这个任务用一个 Agent 也能完成。拆成三个角色,是为了看清楚如何定义职责、传递结果,以及在发现问题后返回修复。
本文整理自一次 Codex 学习会话中的购物车示例,并按 2026 年 10 月 21 日查阅的官方文档核对配置。原会话只展示了方案,没有实际运行这三个 Subagent;下面也不把教学示例当作已经跑通的结果。
先看三个角色怎样协作
主 Agent 接收用户需求并协调流程,三个 Subagent 分别负责:
analyst:明确输入、输出和验收用例。implementer:按方案修改指定文件,并运行测试。verifier:对照原始需求检查实际代码、补查边界,并独立运行测试。
下图中的箭头表示主 Agent 安排的执行顺序,每一阶段完成后才开始下一阶段。三个角色之间的交接由主 Agent 组织。
flowchart TD
M["主 Agent 接收需求"] --> A["analyst:分析与验收用例"]
A --> I["implementer:实现与测试"]
I --> V["verifier:独立验证"]
V -->|通过| D["主 Agent 汇总交付"]
V -->|有问题| F["主 Agent 整理修复项"]
F -->|最多两轮修复| I
Codex 支持按明确请求或适用的项目指令调用 Subagent,并由主 Agent 等待和汇总结果。这里选择串行流程,是因为实现依赖分析,验证又依赖实现。官方 Subagents 文档
第一步:在项目里定义三个 Subagent
准备一个独立练习目录,用支持 Custom agents 的本地 Codex 客户端打开它,并确保本地可以运行 Python 3。不要直接在重要项目中试验。
项目级角色放在 .codex/agents/,每个 TOML 文件定义一个角色,必填字段是 name、description 和 developer_instructions。本例省略模型设置,继承父 Agent 的模型和推理配置。Custom agents 配置说明
1 | cart-demo/ |
先创建三个角色文件。
.codex/agents/analyst.toml:
1 | name = "analyst" |
.codex/agents/implementer.toml:
1 | name = "implementer" |
.codex/agents/verifier.toml:
1 | name = "verifier" |
“不修改文件”是行为指令,不会创建独立的只读沙箱。 Subagent 继承父会话的权限和 sandbox 设置;需要限制实际访问范围时,应在父会话配置相应权限。权限与沙箱说明
第二步:用 AGENTS.md 约定交接顺序
TOML 定义角色职责,工作顺序则需要另外说明。AGENTS.md 适合保存项目中持续生效的协作规则。官方项目指令说明
将下面内容写入练习目录的 AGENTS.md;如果文件已经存在,只合并这一节,保留原有规则。
1 | ## Subagent 练习流程 |
交接时始终保留原始需求。否则,如果分析阶段漏掉了“折扣越界要报错”,后续实现和验证可能一起忽略这个要求。
第三步:发出一个完整任务
在该练习项目的 Codex 聊天中发送以下提示词。任务本身、修改范围和完成条件都写清楚,主 Agent 才有依据调度和验收。
1 | 请实际使用项目定义的 analyst、implementer、verifier Subagents, |
这里特意补充了“空列表也要校验折扣”,避免实现先返回 0,漏掉参数检查。analyst 至少应提出这些用例:
| 输入场景 | 预期结果 |
|---|---|
单项 price=10, quantity=2,折扣 0.1 |
18 |
两项分别为 10 × 2 和 5 × 3,默认折扣 |
35 |
| 空列表,默认折扣 | 0 |
正常商品,折扣为 1 |
0 |
商品数量为 0 |
0 |
| 价格或数量为负数 | ValueError |
折扣为 -0.1 或 1.1,分别搭配空列表和正常商品 |
ValueError |
这些是验收预期,没有被当作本次执行结果。涉及小数比较时,测试可以用 unittest.TestCase.assertAlmostEqual 检查结果;真实支付系统还需要另行设计金额精度和舍入规则。
怎样确认协作真的发生了
观察客户端中的 Subagent 活动和各角色结果,而不仅是最终回复里出现三个角色名。桌面客户端可以从主聊天中的活动记录打开子 Agent 查看工作;支持该功能的 CLI 可以用 /subagents 查看。查看 Subagent 活动
一次完整交付应能回答:三个角色是否实际被调用?implementer 修改了哪些文件?verifier 是否独立读代码、运行测试?还有哪些需求没有覆盖?
如果角色没有被识别,先核对文件位置、TOML 格式和 name,确认当前客户端已加载这些角色、项目允许委派且没有禁用 agents。不要把主 Agent 模拟的角色对话当作调用成功。
本例的 TOML 语法已做本地解析检查,文章也经过 Hexo 构建;三个自定义角色的加载、委派及购物车代码测试,未在当前环境验证。
熟悉串行交接后,再尝试并行执行互不依赖的检查,例如安全审查和测试覆盖检查。并行写文件需要划清归属,避免覆盖;每个 Subagent 都会额外消耗模型和工具资源,小任务未必因此更快或更省 Token。适用场景与开销
本文由 AI 辅助生成,如有错误或建议,欢迎指出。






