<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>TOML on 记录点滴 - 分享</title><link>https://www.iminling.com/tags/toml/</link><description>Recent content in TOML on 记录点滴 - 分享</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><copyright>iminling.com</copyright><lastBuildDate>Sat, 11 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://www.iminling.com/tags/toml/index.xml" rel="self" type="application/rss+xml"/><item><title>Codex Subagent 配置与使用指南：目录、TOML 与并行任务</title><link>https://www.iminling.com/ai/codex-subagent-guide/</link><pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate><guid>https://www.iminling.com/ai/codex-subagent-guide/</guid><description>&lt;img src="https://images.iminling.com/app/hide.php?key=UGNnR0p5cmtVbFhnVlFMNmpvVXcyc1QvSWRXalNMYVo4NUQ4ZmQxNmtmMmtsSFU1b2pFZzBxbitZOVZnMVFRREFmWFVJN3M9" alt="Featured image of post Codex Subagent 配置与使用指南：目录、TOML 与并行任务" /&gt;&lt;h1 id="codex-subagent-配置与使用指南目录toml-与并行任务"&gt;Codex Subagent 配置与使用指南：目录、TOML 与并行任务
&lt;/h1&gt;&lt;p&gt;当一个任务同时包含代码探索、风险审查、测试验证和文档核对时，让主会话从头到尾串行处理并不总是最高效。&lt;/p&gt;
&lt;p&gt;Codex 的 Subagent（子代理）机制允许主代理把相互独立的工作交给不同代理线程：有人负责查代码，有人负责跑测试，有人负责核对文档，最后再由主代理汇总结果。&lt;/p&gt;
&lt;p&gt;但 Subagent 不是“开得越多越快”。任务能不能独立、权限有没有收紧、输出格式是否明确，往往比代理数量更重要。&lt;/p&gt;
&lt;p&gt;这篇只讲 Codex 自身的 Subagent 配置与使用。如果你想比较 Codex 和 Claude Code 的 Agent 设计差异，可以看 &lt;a class="link" href="https://www.iminling.com/ai/codex-vs-claude-agent-comparison/" &gt;Codex 也能定义 Agent：和 Claude Code Agent 到底差在哪&lt;/a&gt;；如果你其实想找的是 &lt;code&gt;SKILL.md&lt;/code&gt; 应该放在哪里，则看 &lt;a class="link" href="https://www.iminling.com/ai/codex-skill-directories/" &gt;Codex 的 skill 放在哪、怎么被发现&lt;/a&gt;。&lt;/p&gt;
&lt;h2 id="先说结论"&gt;先说结论
&lt;/h2&gt;&lt;p&gt;Codex 的 Subagent 可以理解成：&lt;strong&gt;由主代理创建、在独立线程中执行一个明确子任务、完成后把结果交还给主代理的工作单元。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Codex 自带三种基础 Agent：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;主要用途&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;default&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;通用后备代理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;worker&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;实现、修复和执行型任务&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;explorer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;以阅读和代码库探索为主的任务&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果内置角色不够用，可以通过 TOML 文件定义自定义 Agent：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;范围&lt;/th&gt;
&lt;th&gt;目录&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;用户级&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.codex/agents/&amp;lt;name&amp;gt;.toml&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;项目级&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.codex/agents/&amp;lt;name&amp;gt;.toml&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一个自定义 Agent 至少需要 &lt;code&gt;name&lt;/code&gt;、&lt;code&gt;description&lt;/code&gt; 和 &lt;code&gt;developer_instructions&lt;/code&gt; 三个字段。模型、推理强度、沙箱、MCP 和 skill 开关等配置可以按需覆盖，不写时通常从父会话继承。&lt;/p&gt;
&lt;h2 id="核心概念subagent-解决什么问题"&gt;核心概念：Subagent 解决什么问题
&lt;/h2&gt;&lt;p&gt;Subagent 最适合两类任务。&lt;/p&gt;
&lt;p&gt;第一类是&lt;strong&gt;可以并行的独立调查&lt;/strong&gt;。例如审查一个分支时，把安全风险、测试缺口和可维护性问题交给三个代理分别检查。&lt;/p&gt;
&lt;p&gt;第二类是&lt;strong&gt;需要隔离关注点的专项工作&lt;/strong&gt;。例如让只读代理探索代码，让另一个代理运行测试，避免每个代理都同时修改文件。&lt;/p&gt;
&lt;p&gt;可以把整个过程理解成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;主代理
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── explorer：定位相关代码和调用链
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── reviewer：检查风险和回归
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── test-runner：运行测试并整理失败信息
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;主代理等待结果、处理冲突、给出最终结论
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这里最重要的不是“多代理”三个字，而是&lt;strong&gt;主代理负责拆分和汇总，子代理负责边界明确的子任务&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="什么任务适合什么任务不适合"&gt;什么任务适合，什么任务不适合
&lt;/h2&gt;&lt;p&gt;适合交给 Subagent 的任务通常有这些特点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;各子任务可以独立完成，不必频繁等待彼此结果。&lt;/li&gt;
&lt;li&gt;主要工作是阅读、搜索、测试、日志分析或资料核对。&lt;/li&gt;
&lt;li&gt;每个子任务能用一句话说清输入、范围和输出。&lt;/li&gt;
&lt;li&gt;主代理可以根据多个结果做最终取舍。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不适合直接并行的任务包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多个代理同时修改同一组文件。&lt;/li&gt;
&lt;li&gt;第二步必须依赖第一步产生的代码或结论。&lt;/li&gt;
&lt;li&gt;任务很小，拆分和汇总的成本高于直接完成。&lt;/li&gt;
&lt;li&gt;目标本身还不清楚，代理之间容易各自理解成不同方向。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个实用原则是：&lt;strong&gt;先并行只读调查，再由一个明确的实现代理落地修改。&lt;/strong&gt; 这样比让多个代理同时施工更容易控制冲突。&lt;/p&gt;
&lt;h2 id="自定义-agent-放在哪里"&gt;自定义 Agent 放在哪里
&lt;/h2&gt;&lt;p&gt;个人长期复用的 Agent 放在：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/.codex/agents/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;~/.codex/agents/reviewer.toml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要跟仓库一起版本控制、供团队共用的 Agent 放在：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;lt;repo&amp;gt;/.codex/agents/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;例如：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;my-project/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── .codex/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── config.toml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── agents/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── code-mapper.toml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ ├── reviewer.toml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;│ └── test-runner.toml
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── src/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每个 TOML 文件定义一个自定义 Agent。项目级配置适合写入与仓库结构、测试命令和团队职责相关的约束；用户级配置更适合通用角色。&lt;/p&gt;
&lt;h2 id="最小-toml-怎么写"&gt;最小 TOML 怎么写
&lt;/h2&gt;&lt;p&gt;一个最小可用的代码审查 Agent 可以这样写：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;reviewer&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;代码审查代理，负责发现正确性、安全性、行为回归和测试缺口。&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;developer_instructions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;你只负责审查，不修改代码。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;优先报告能够复现或能从代码路径证明的问题。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;每个问题都要给出文件位置、影响和建议验证方法。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;如果没有发现实质问题，明确说明未发现，而不是凑数量。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;三个必填字段各自承担不同职责：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;字段&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;name&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Codex 创建或引用该 Agent 时使用的身份名称&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;description&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;说明什么情况下适合使用这个 Agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;developer_instructions&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;定义它具体怎样工作、做什么和不做什么&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Codex 以 &lt;code&gt;name&lt;/code&gt; 作为身份来源，文件名只是方便管理的约定。虽然 &lt;code&gt;foo.toml&lt;/code&gt; 可以写成 &lt;code&gt;name = &amp;quot;bar&amp;quot;&lt;/code&gt;，但让文件名与 &lt;code&gt;name&lt;/code&gt; 保持一致更容易排查。&lt;/p&gt;
&lt;h2 id="常用可选配置"&gt;常用可选配置
&lt;/h2&gt;&lt;p&gt;自定义 Agent 文件还可以使用正常 Codex 会话配置中的部分字段：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;code_mapper&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;只读代码探索代理，负责定位入口、调用链和受影响文件。&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;model&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;gpt-5.4-mini&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;model_reasoning_effort&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;medium&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;sandbox_mode&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;read-only&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;nickname_candidates&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Atlas&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Delta&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;Echo&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;developer_instructions&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;先定位代码，不修改文件。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;输出入口、主要调用链、状态变化和建议继续检查的文件。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;只报告有证据支持的路径。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s2"&gt;&amp;#34;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;常见字段包括：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;字段&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;为该 Agent 指定模型&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;model_reasoning_effort&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;调整推理强度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sandbox_mode&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;限定为只读或允许工作区写入&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;mcp_servers&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;给该 Agent 配置专用 MCP 服务&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;skills.config&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;控制该 Agent 可使用的 skill&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;nickname_candidates&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;为多个同类实例提供便于区分的显示昵称&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;code&gt;nickname_candidates&lt;/code&gt; 只影响界面展示，不改变 Agent 的真实身份；Codex 仍然通过 &lt;code&gt;name&lt;/code&gt; 创建和引用它。&lt;/p&gt;
&lt;h2 id="继承规则不写不等于没有"&gt;继承规则：不写不等于没有
&lt;/h2&gt;&lt;p&gt;自定义 Agent 不是从一张完全空白的配置开始运行。官方把 Agent TOML 作为创建会话时叠加的配置层，未覆盖的可选设置通常从父会话继承。&lt;/p&gt;
&lt;p&gt;这意味着：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不写 &lt;code&gt;model&lt;/code&gt;，通常沿用父会话的模型选择。&lt;/li&gt;
&lt;li&gt;不写 &lt;code&gt;sandbox_mode&lt;/code&gt;，不会自动变成只读代理。&lt;/li&gt;
&lt;li&gt;父会话启用的 MCP 或其他配置，子代理可能继续继承。&lt;/li&gt;
&lt;li&gt;在 Agent 文件中显式配置的值，会用于覆盖对应设置。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;因此，涉及安全边界时不要依赖想象中的默认值。只做探索或审查的 Agent，建议明确写：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;sandbox_mode&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;read-only&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;需要修改代码的 Agent 再单独授予工作区写入能力。&lt;/p&gt;
&lt;h2 id="怎样触发-subagent-工作流"&gt;怎样触发 Subagent 工作流
&lt;/h2&gt;&lt;p&gt;最可控的方式是在任务中明确要求使用 Subagent，并说明如何拆分：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;请使用并行 Subagent 审查当前分支：
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;一个负责安全风险，一个负责测试缺口，一个负责可维护性。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;等待三个 Agent 全部完成后，再按严重程度汇总，并附文件位置。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果已经定义了自定义 Agent，可以直接点名角色：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;让 code_mapper 先定位这次故障涉及的前后端调用链，
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;让 reviewer 独立检查回归风险。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;等待两者完成后汇总结论，暂时不要修改代码。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;不同 Codex 产品界面、模型模式和项目规则可能影响是否会主动委派。对需要稳定复现的工作流，建议显式写出：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;要不要使用 Subagent。&lt;/li&gt;
&lt;li&gt;使用几个 Agent，分别承担什么角色。&lt;/li&gt;
&lt;li&gt;哪些任务并行，哪些任务必须串行。&lt;/li&gt;
&lt;li&gt;是否允许修改文件。&lt;/li&gt;
&lt;li&gt;主代理何时等待、怎样汇总结果。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="怎样写好一个子任务"&gt;怎样写好一个子任务
&lt;/h2&gt;&lt;p&gt;一个好的子任务至少包含五个部分：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;目标&lt;/strong&gt;：要解决什么问题。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;范围&lt;/strong&gt;：检查哪些目录、文件、接口或日志。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;边界&lt;/strong&gt;：是否允许编辑、是否允许扩大调查范围。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;输出&lt;/strong&gt;：需要结论、证据、文件位置还是测试结果。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完成条件&lt;/strong&gt;：什么时候可以停止并返回主代理。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;例如，下面这条比“看看前端有没有问题”更稳定：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;只读检查 web/settings 下保存配置的完整调用链。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;定位按钮事件、状态更新、API 请求和错误处理。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;不要修改文件。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;返回涉及的文件、关键函数、最可能的失败点，以及需要主代理验证的两项证据。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Subagent 拿到的是被委派的上下文，不应该假设它自动理解主会话中所有隐含目标。任务说明越具体，返回结果越容易被主代理直接使用。&lt;/p&gt;
&lt;h2 id="控制并发和嵌套深度"&gt;控制并发和嵌套深度
&lt;/h2&gt;&lt;p&gt;全局或项目级的 Subagent 运行参数写在 &lt;code&gt;config.toml&lt;/code&gt; 的 &lt;code&gt;[agents]&lt;/code&gt; 下：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;agents&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;max_threads&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;max_depth&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;主要配置包括：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;字段&lt;/th&gt;
&lt;th&gt;作用&lt;/th&gt;
&lt;th&gt;官方当前默认值&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;agents.max_threads&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;同时保持打开的 Agent 线程上限&lt;/td&gt;
&lt;td&gt;&lt;code&gt;6&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;agents.max_depth&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Agent 继续创建下一级 Agent 的最大深度&lt;/td&gt;
&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;agents.job_max_runtime_seconds&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;批量 CSV Worker 的默认超时&lt;/td&gt;
&lt;td&gt;未设置时单次调用默认 1800 秒&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;agents.interrupt_message&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;中断时是否在 Agent 上下文中记录可见消息&lt;/td&gt;
&lt;td&gt;&lt;code&gt;true&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;根会话深度是 &lt;code&gt;0&lt;/code&gt;。默认 &lt;code&gt;max_depth = 1&lt;/code&gt; 表示根代理可以创建直接子代理，但子代理不能继续无限向下创建孙代理。&lt;/p&gt;
&lt;p&gt;不要为了“更智能”随意提高嵌套深度。层级越深，越容易出现任务重复扩散，Token、等待时间和本机资源消耗也会同步增加。大多数代码任务保留一层子代理已经足够。&lt;/p&gt;
&lt;h2 id="一个更稳的实际工作流"&gt;一个更稳的实际工作流
&lt;/h2&gt;&lt;p&gt;假设要排查“设置弹窗保存失败”，可以分成三步。&lt;/p&gt;
&lt;h3 id="第一步并行调查"&gt;第一步：并行调查
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;browser_debugger&lt;/code&gt;：复现界面问题，记录操作步骤、控制台和网络请求。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;code_mapper&lt;/code&gt;：只读定位按钮、状态管理、API 请求和后端处理链路。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这两个任务互不依赖，可以并行执行，而且都不修改代码。&lt;/p&gt;
&lt;h3 id="第二步主代理汇总"&gt;第二步：主代理汇总
&lt;/h3&gt;&lt;p&gt;主代理等待两个结果，对比“界面实际行为”和“代码预期路径”，确定故障点。如果结论冲突，先补证据，不急着进入实现。&lt;/p&gt;
&lt;h3 id="第三步单一-agent-修改"&gt;第三步：单一 Agent 修改
&lt;/h3&gt;&lt;p&gt;确认原因后，只让一个 &lt;code&gt;worker&lt;/code&gt; 或专用实现 Agent 修改代码和运行针对性测试。这样可以避免多个代理同时触碰相同文件。&lt;/p&gt;
&lt;p&gt;完整请求可以写成：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-text" data-lang="text"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;调查设置弹窗保存失败的问题。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;先让 browser_debugger 复现并收集浏览器证据，同时让 code_mapper 只读梳理调用链。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;等待两者完成后，由主代理判断根因。
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;只有根因明确后，才让一个 worker 实施最小修复并运行相关测试。
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="subagent-与-skill-的关系"&gt;Subagent 与 Skill 的关系
&lt;/h2&gt;&lt;p&gt;两者可以配合，但不是同一种能力：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;对比项&lt;/th&gt;
&lt;th&gt;Subagent&lt;/th&gt;
&lt;th&gt;Skill&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;核心作用&lt;/td&gt;
&lt;td&gt;独立执行一个被委派的子任务&lt;/td&gt;
&lt;td&gt;提供可复用的任务工作流&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;主要文件&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.codex/agents/*.toml&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;.agents/skills/&amp;lt;name&amp;gt;/SKILL.md&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;是否有独立线程&lt;/td&gt;
&lt;td&gt;有&lt;/td&gt;
&lt;td&gt;没有，通常由当前 Agent 读取并执行&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;是否可配置模型和沙箱&lt;/td&gt;
&lt;td&gt;可以&lt;/td&gt;
&lt;td&gt;Skill 本身不等同于独立会话配置&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;典型场景&lt;/td&gt;
&lt;td&gt;并行探索、专项审查、测试、日志分析&lt;/td&gt;
&lt;td&gt;发布流程、文章封面发布、固定检查清单&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;一个 Subagent 可以被配置为使用某些 Skills，但“给 Agent 加一个 Skill”不等于又创建了一个 Subagent。&lt;/p&gt;
&lt;p&gt;还要注意 Skill 目录内部可能出现 &lt;code&gt;agents/openai.yaml&lt;/code&gt;。它用于描述该 Skill 的展示、依赖或调用策略，不是项目级 &lt;code&gt;.codex/agents/*.toml&lt;/code&gt; 自定义 Agent，不能混为一谈。&lt;/p&gt;
&lt;h2 id="常见问题与解决方案"&gt;常见问题与解决方案
&lt;/h2&gt;&lt;h3 id="自定义-agent-是不是放进去就会自动运行"&gt;自定义 Agent 是不是放进去就会自动运行
&lt;/h3&gt;&lt;p&gt;不是。TOML 文件只是让 Codex 知道存在这样一个角色。是否创建它，仍取决于当前任务、产品行为和委派指令。需要确定使用时，直接在提示词中点名。&lt;/p&gt;
&lt;h3 id="项目级和用户级应该选哪个"&gt;项目级和用户级应该选哪个
&lt;/h3&gt;&lt;p&gt;与仓库结构、团队命令、项目权限有关的角色放项目级 &lt;code&gt;.codex/agents/&lt;/code&gt;；跨仓库通用的个人角色放 &lt;code&gt;~/.codex/agents/&lt;/code&gt;。&lt;/p&gt;
&lt;h3 id="文件名必须和-name-一样吗"&gt;文件名必须和 name 一样吗
&lt;/h3&gt;&lt;p&gt;不是硬性要求，&lt;code&gt;name&lt;/code&gt; 才是身份来源。但两者保持一致更方便维护，也能减少点名时的混淆。&lt;/p&gt;
&lt;h3 id="多开几个-agent-一定更快吗"&gt;多开几个 Agent 一定更快吗
&lt;/h3&gt;&lt;p&gt;不一定。只有互相独立的任务才容易获得并行收益。多个 Agent 修改同一位置、反复读取同一批文件，或者需要频繁互相等待时，通常只会增加成本和冲突。&lt;/p&gt;
&lt;h3 id="子代理能不能继续创建子代理"&gt;子代理能不能继续创建子代理
&lt;/h3&gt;&lt;p&gt;由 &lt;code&gt;agents.max_depth&lt;/code&gt; 决定。默认值 &lt;code&gt;1&lt;/code&gt; 允许根会话创建一层直接子代理，但不允许继续向下递归。除非确实需要分层委派，否则建议保留默认值。&lt;/p&gt;
&lt;h3 id="怎样避免-subagent-擅自修改代码"&gt;怎样避免 Subagent 擅自修改代码
&lt;/h3&gt;&lt;p&gt;同时做两件事：在 TOML 中设置 &lt;code&gt;sandbox_mode = &amp;quot;read-only&amp;quot;&lt;/code&gt;，并在 &lt;code&gt;developer_instructions&lt;/code&gt; 和具体子任务里明确写“只读检查，不修改文件”。权限限制负责硬边界，文字说明负责工作目标。&lt;/p&gt;
&lt;h2 id="总结"&gt;总结
&lt;/h2&gt;&lt;p&gt;用好 Codex Subagent，关键不在于创建多少 Agent，而在于四件事：&lt;/p&gt;
&lt;p&gt;第一，&lt;strong&gt;角色要窄&lt;/strong&gt;。一个 Agent 只承担一种清楚的职责。&lt;/p&gt;
&lt;p&gt;第二，&lt;strong&gt;任务要能独立&lt;/strong&gt;。优先并行探索、测试、日志分析和文档核对，不要让多个 Agent 同时修改同一片代码。&lt;/p&gt;
&lt;p&gt;第三，&lt;strong&gt;权限要明确&lt;/strong&gt;。只读任务显式使用 &lt;code&gt;sandbox_mode = &amp;quot;read-only&amp;quot;&lt;/code&gt;，需要施工时再交给单一实现 Agent。&lt;/p&gt;
&lt;p&gt;第四，&lt;strong&gt;并发要受控&lt;/strong&gt;。保留合理的 &lt;code&gt;max_threads&lt;/code&gt; 和默认一层嵌套，避免代理递归扩散。&lt;/p&gt;
&lt;p&gt;当主代理负责拆分、等待和汇总，Subagent 才真正是在节省时间，而不是把一个问题变成更多上下文和更多冲突。&lt;/p&gt;
&lt;h2 id="写在最后"&gt;写在最后
&lt;/h2&gt;&lt;p&gt;这篇解决的是 Codex Subagent 自身的配置和使用。如果你要继续比较两家 Agent 在自动委派、权限模型和工程化能力上的差异，可以接着看 &lt;a class="link" href="https://www.iminling.com/ai/codex-vs-claude-agent-comparison/" &gt;Codex 也能定义 Agent：和 Claude Code Agent 到底差在哪&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;Codex 的 Subagent 仍在快速迭代，尤其是不同产品界面的主动委派行为、批量任务和管理入口。本文基于 2026 年 7 月的官方文档整理，升级版本后建议再次核对官方说明。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;参考资料&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://developers.openai.com/codex/subagents" target="_blank" rel="noopener"
&gt;Subagents – Codex | OpenAI Developers&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>