跳转到内容

第一次创建自定义 Subagent

这一篇开始创建第一个自定义 Subagent。

本篇目标不是创建一个能做所有事的代理,而是创建一个边界很窄、风险很低、容易验收的代理:

tutorial-reviewer:只负责审查教程是否喂饭级,不修改文件。

它适合这个站点,因为后续会持续写教程。 教程审查有稳定标准:前置条件、步骤顺序、预期结果、失败分支、验收标准、是否存在跳步。

前置教程:什么时候需要自定义 Subagents
如果你还不能判断什么时候该自定义,先完成前置教程。

依据来源:OpenAI Codex 官方手册中 Subagents、custom agents、内置代理、项目级 .codex/agents/、自定义 agent 必填字段、nickname_candidates、沙盒继承等章节。

完成后,你应该得到:

  • 一个项目级目录:.codex/agents/
  • 一个自定义 agent 文件:.codex/agents/tutorial-reviewer.toml
  • 一个只读教程审查代理:tutorial-reviewer
  • 一次只读检查,确认配置没有危险项
  • 一次调用练习,确认 Codex 能按这个角色审查文档
  • 一套回滚方式

为什么第一个自定义 Subagent 选教程审查

Section titled “为什么第一个自定义 Subagent 选教程审查”

第一个自定义代理应该满足 4 个条件:

  1. 职责足够窄。
  2. 不需要修改文件。
  3. 输出标准容易判断。
  4. 和当前项目长期相关。

教程审查刚好符合。

不建议第一次创建下面这些代理:

不建议的代理原因
自动修复代理容易并行改文件,风险高
全能工程师代理边界太宽,和主会话职责重叠
自动提交代理涉及 Git 提交,风险不适合新手第一篇
安装排障代理可能频繁请求命令权限

本篇只做只读审查。

第 1 步:先让 Codex 判断是否适合创建

Section titled “第 1 步:先让 Codex 判断是否适合创建”

不要直接创建文件。 先让 Codex 只读检查项目状态。

复制这段:

请只读检查当前项目是否适合创建第一个自定义 Subagent。
目标角色:
tutorial-reviewer,用于审查教程文档是否足够喂饭级。
要求:
1. 不要创建、修改、删除任何文件。
2. 检查项目是否已有 .codex/agents/ 目录。
3. 检查是否已有同名 tutorial-reviewer agent。
4. 检查项目里是否有教程文档或 docs 内容,判断这个角色是否有长期价值。
5. 如果已有自定义 agents,请列出文件名和用途,但不要修改。
6. 最后给出是否建议继续创建项目级 tutorial-reviewer 的结论。

预期结果:

  • Codex 会检查项目结构。
  • 如果没有 .codex/agents/,会说明可以新建。
  • 如果已有同名文件,会提醒不要覆盖。
  • 如果项目没有教程内容,会建议先不要创建。

如果 Codex 发现已有 .codex/agents/tutorial-reviewer.toml,先不要继续。 让 Codex 解释已有文件:

请只读解释现有 .codex/agents/tutorial-reviewer.toml。
要求:
1. 不要修改文件。
2. 说明 name、description、developer_instructions 的含义。
3. 判断它是否只读。
4. 判断是否包含模型、沙盒、MCP 或 Skills 配置。
5. 判断是否建议复用、调整,还是重新设计。

第 2 步:先生成设计方案,不写文件

Section titled “第 2 步:先生成设计方案,不写文件”

确认可以创建后,先让 Codex 生成方案。

复制这段:

请设计一个项目级自定义 Subagent,先不要写文件。
代理名称:
tutorial-reviewer
用途:
审查中文教程文档是否达到喂饭级标准。
限制:
1. 第一版只配置 name、description、developer_instructions。
2. 不配置 model。
3. 不配置 model_reasoning_effort。
4. 不配置 sandbox_mode。
5. 不配置 MCP。
6. 不配置 Skills。
7. 代理只能只读审查,不修改文件。
8. 输出必须包含文件路径、问题等级、问题说明、建议修复方式。
请输出:
1. 为什么这个角色值得自定义。
2. 预计创建的文件路径。
3. TOML 内容草稿。
4. 风险点。
5. 回滚方式。

你要重点检查:

  • 文件路径是 .codex/agents/tutorial-reviewer.toml
  • 必填字段都有:namedescriptiondeveloper_instructions
  • 没有写入 API Key。
  • 没有配置联网能力。
  • 没有要求自动改文件。
  • 没有让它自动提交 Git。
  • 没有把它写成“全能代理”。

第一版推荐保持简单。

TOML 内容可以接近这样:

name = "tutorial-reviewer"
description = "Review Chinese tutorial documents for step-by-step completeness, prerequisites, expected results, failure branches, and acceptance criteria."
developer_instructions = """
You are a read-only tutorial reviewer.
Scope:
- Review Chinese tutorial documents.
- Focus on whether a beginner can follow the document and get a reliable result.
- Check prerequisites, step order, expected results, failure branches, acceptance criteria, and unclear wording.
Rules:
- Do not modify files.
- Do not run commands unless the parent explicitly asks for read-only inspection.
- Do not invent missing product behavior.
- Mark uncertain findings as uncertain.
- Prefer concrete file paths and section names.
Output:
- Overall judgment.
- Findings grouped by severity: high, medium, low.
- For each finding: file path, section, issue, reason, suggested fix.
- End with the smallest next improvement task.
"""

注意:这里没有配置模型、沙盒、MCP、Skills。 这是刻意的。

第一版先验证角色是否有用。 等它确实稳定,再考虑加更复杂的配置。

第 4 步:让 Codex 创建自定义 agent 文件

Section titled “第 4 步:让 Codex 创建自定义 agent 文件”

确认方案后,再让 Codex 写文件。

复制这段:

请创建项目级自定义 Subagent 文件。
目标文件:
.codex/agents/tutorial-reviewer.toml
要求:
1. 如果 .codex/agents/ 不存在,可以创建。
2. 如果 tutorial-reviewer.toml 已存在,不要覆盖,先停止并告诉我。
3. 只创建这个 TOML 文件,不修改其他文件。
4. 第一版只包含 name、description、developer_instructions。
5. 不配置 model、model_reasoning_effort、sandbox_mode、MCP、Skills。
6. developer_instructions 必须明确只读审查,不修改文件。
7. 完成后展示文件内容,并解释每个字段的作用。

预期结果:

  • Codex 创建 .codex/agents/
  • Codex 创建 .codex/agents/tutorial-reviewer.toml
  • Codex 展示 TOML 内容。
  • Codex 说明没有配置高风险项。

如果 Codex 想顺手改 AGENTS.mdconfig.toml 或其他文件,拒绝:

不要修改其他文件。
本次只允许创建 .codex/agents/tutorial-reviewer.toml。
请停止额外修改,并说明原因。

创建后,让 Codex 自查:

请检查刚创建的 .codex/agents/tutorial-reviewer.toml。
要求:
1. 确认 TOML 语法是否合理。
2. 确认必填字段 name、description、developer_instructions 是否存在。
3. 确认 name 是否为 tutorial-reviewer。
4. 确认它是否只读。
5. 确认没有配置 model、sandbox_mode、MCP、Skills。
6. 确认没有密钥、账号、私有地址。
7. 如果发现风险,只说明风险,不要修改文件。

通过标准:

  • name 正确。
  • description 足够具体。
  • developer_instructions 明确只读。
  • 输出格式清楚。
  • 没有额外复杂配置。

第 6 步:重新打开 Codex 会话或确认加载状态

Section titled “第 6 步:重新打开 Codex 会话或确认加载状态”

项目级自定义 agent 可能需要重新打开项目、重启当前会话,或让 Codex 重新读取配置后才能稳定识别。

先问:

请告诉我当前会话是否已经能识别项目级自定义 Subagent:tutorial-reviewer。
要求:
1. 不要修改文件。
2. 如果需要重启会话或重新打开项目,请明确告诉我。
3. 如果可以直接使用,请说明我应该如何请求你调用它。

如果 Codex 建议重启,就重启当前 Codex 会话或重新打开项目。 不要在没加载成功前继续测试。

第 7 步:第一次调用自定义 Subagent

Section titled “第 7 步:第一次调用自定义 Subagent”

第一次调用必须只读。

复制这段:

请使用自定义 Subagent tutorial-reviewer 只读审查一篇教程文档。
目标文档:
请从当前项目中选择一篇教程文档,优先选择最近新增或内容较短的一篇。
要求:
1. 使用 tutorial-reviewer 这个自定义 Subagent。
2. 只读审查,不修改文件。
3. 不运行构建命令。
4. 不提交 Git。
5. 审查重点:前置条件、步骤顺序、预期结果、失败分支、验收标准、是否存在跳步。
6. 等 tutorial-reviewer 完成后,由主会话汇总结果。
输出格式:
1. 被审查文件。
2. 总体判断。
3. 高 / 中 / 低问题列表。
4. 每条问题包含文件路径、章节、问题、原因、建议修复。
5. 最小下一步改进任务。

预期结果:

  • Codex 明确使用 tutorial-reviewer
  • 子代理只读审查文档。
  • 汇总结果带文件路径和章节。
  • 没有文件被修改。

如果 Codex 没有使用自定义 agent,而是主会话自己审查,追问:

这次练习要求调用自定义 Subagent tutorial-reviewer。
请确认当前会话是否识别该 agent。
如果识别,请重新使用 tutorial-reviewer 只读审查。
如果不识别,请说明需要重启会话、调整文件位置,还是 TOML 配置有问题。
不要修改文件。

第 8 步:验收自定义 Subagent 是否合格

Section titled “第 8 步:验收自定义 Subagent 是否合格”

调用完成后,让 Codex 验收:

请验收 tutorial-reviewer 这个自定义 Subagent 是否创建成功。
验收标准:
1. .codex/agents/tutorial-reviewer.toml 存在。
2. 文件包含 name、description、developer_instructions。
3. 代理职责是教程只读审查。
4. 没有配置额外模型、沙盒、MCP、Skills。
5. 已经完成一次只读审查。
6. 审查结果包含文件路径、章节、问题、原因和建议修复。
7. 本次没有修改任何文件。
请按“通过 / 不通过 / 需要补充”的格式输出。

如果结果不通过,不要急着改复杂配置。 先修 developer_instructions

例如:

tutorial-reviewer 输出太笼统。
请只修改 .codex/agents/tutorial-reviewer.toml 中的 developer_instructions。
目标:
让输出必须包含文件路径、章节、问题等级、问题原因和建议修复。
不要修改其他文件。

如果不想保留这个自定义 agent,让 Codex 回滚:

请移除 tutorial-reviewer 自定义 Subagent。
要求:
1. 删除 .codex/agents/tutorial-reviewer.toml。
2. 如果 .codex/agents/ 目录为空,可以删除空目录。
3. 不要删除 .codex/ 下的其他配置。
4. 不要修改 AGENTS.md。
5. 删除后说明实际删除了哪些路径。

如果项目里已有其他 agents,不要删除目录。

优先检查:

  • 文件是否放在 .codex/agents/
  • 文件扩展名是否是 .toml
  • name 是否是 tutorial-reviewer
  • TOML 是否有语法错误。
  • 当前项目是否已重新打开或当前会话是否已重新加载。

让 Codex 只读排查:

请只读排查为什么当前会话识别不到 tutorial-reviewer。
要求:
1. 检查 .codex/agents/tutorial-reviewer.toml 是否存在。
2. 检查 TOML 必填字段。
3. 检查 name 是否正确。
4. 检查是否需要重启会话或重新打开项目。
5. 不要修改文件。

立即停止:

请停止 tutorial-reviewer 的修改行为。
这个自定义 Subagent 第一版只能只读审查。
请说明它为什么尝试修改文件,并建议如何调整 developer_instructions。
不要继续执行修改。

然后只改 instructions:

请只修改 .codex/agents/tutorial-reviewer.toml 的 developer_instructions。
加强限制:该代理只能审查和输出建议,不能修改文件。
不要修改其他字段。

说明 instructions 不够具体。 补充输出格式即可,不要增加复杂配置。

请优化 tutorial-reviewer 的 developer_instructions。
要求输出必须包含:
1. 文件路径。
2. 章节或段落位置。
3. 问题等级。
4. 问题说明。
5. 为什么影响喂饭级。
6. 建议修复方式。
不要增加模型、沙盒、MCP 或 Skills 配置。

完成本篇后,你应该能确认:

  • 已创建 .codex/agents/tutorial-reviewer.toml
  • namedescriptiondeveloper_instructions 字段正确。
  • 代理职责足够窄。
  • 代理第一版只读。
  • 已完成一次只读审查。
  • 审查结果比普通提示词更稳定。
  • 你知道如何回滚。

下一步可以继续写团队工作流:如何把 AGENTS.md、Skills、Hooks、Subagents 组合成一套可持续的 Codex 使用规范。