# 进阶 B · 多 Agent 的分工与成本 · ChatGPT · 把日常事情做完

**作者** Aklman · **章节** 16 / 17 · **首发** 2026.10 · **语言** 中文为主, 中英双语
**原文** https://library.aklman.com/books/chatgpt/advanced-multi-agent
**全书 markdown** https://library.aklman.com/books/chatgpt/llms.md
**上一章** https://library.aklman.com/books/chatgpt/advanced-local/llms.md
**下一章** https://library.aklman.com/books/chatgpt/advanced-cloud/llms.md

> 本章来自 Aklman · Library, 完整免费阅读。允许 AI 摘读、引用、问答; 转载请保留作者署名与原文链接 (CC BY-NC-ND 4.0, https://library.aklman.com/license)。

---

> 完整配置内置与自定义角色, 用多路探索、单路实现和独立复核完成一件任务。区分子线程与隔离工作区, 计算全部 agent 的 token。

<span id="legacy-codex-06-multi-agent" />

一次整理三个独立资料夹, 可以分给三个只读助手;一封私人邮件, 通常一个对话就够。多 Agent 的价值来自可独立推进的工作, 主线程仍负责需求、取舍与最终验收。本附录给需要维护个人工具的读者一套完整配置, 并用一个不会碰真实文件的练习展示分工。

### I · 先分清三种并行

| 任务 | 选什么 | 关键边界 |
|---|---|---|
| 同一目标的独立调查、清点、测试 | 同一主线程下的 subagents | 主线程汇总;子线程不自动隔离文件 |
| 多个方案同时修改代码 | 独立 worktree | 隔离检出;仍要集成与验收 |
| 离机运行, 返回远端结果 | 独立 Cloud task | 核对远端材料、权限与保存位置 |

本书默认用「多路读、单路写、独立复核」。读文件也有成本, 测试也可能写缓存或共用数据库:给每个调查员不同范围, 给测试独立输出目录, 不让并行任务共享可变测试数据。若拆分后每一步都要等上一位, 保持单 Agent 往往更简单。

内置 `default` 负责通用工作, `worker` 偏实现与修复, `explorer` 偏读密集探索。只有反复出现、需要不同工具或判断标准的工作才值得自定义。当前 Codex 默认支持子 Agent;Work 的可用性以及 Ultra 主动委派取决于账号和模型, 截至 2026-10-09。[^1]

### II · 一套能放进项目的配置

下载 <a href="/examples/chatgpt/agents/README.md">练习说明</a>、<a href="/examples/chatgpt/agents/config.toml">config.toml</a> 与三份角色文件。个人角色目录是 `~/.codex/agents/`, 项目角色目录是 `.codex/agents/`;本例使用后者。已有配置要合并, 不覆盖。信任项目之前先读这些文件。[^3]

_并发上限只数子线程_
```text title=".codex/config.toml"

```toml
[agents]
enabled = true
max_concurrent_threads_per_session = 3
default_subagent_model = "gpt-6-luna"
default_subagent_reasoning_effort = "high"
interrupt_message = true
```

```

这是截至 2026-10-09 的配置快照。`enabled` 是多 Agent 工具开关;`max_concurrent_threads_per_session` 限制同时打开的子线程, 不含主线程, schema 要求至少 1, 不写则使用客户端默认。两个 `default_subagent_*` 为默认模型和力度。`interrupt_message` 控制中断时是否向模型上下文加入中断消息。前后两个布尔键默认 true。旧 `max_threads` 是兼容名, 新配置用长键。[^2]

> 当前 schema 还注明:启用 features.multi_agent_v2 时会优先于 agents.enabled。已有旧实验 flag 的配置须逐项查新版说明, 不要仅写 enabled = false 就假定所有实现都关闭。额度、管理员策略和客户端限制也可能使实际并发低于你填的数。

#### repo_explorer.toml

```toml
name = "repo_explorer"
description = "Read-only evidence gathering before a change."
model = "gpt-6-luna"
model_reasoning_effort = "high"
sandbox_mode = "read-only"
developer_instructions = """
Inspect only the assigned scope. Do not edit or install packages.
Return findings, file locations, checks run, and unknowns.
Return a short summary, not raw logs.
"""
```

#### implementation_worker.toml

```toml
name = "implementation_worker"
description = "Implement one approved and bounded change."
model = "gpt-6.1-sol"
model_reasoning_effort = "high"
sandbox_mode = "workspace-write"
developer_instructions = """
Edit only assigned files. Preserve unrelated changes.
Do not commit, push, publish, install packages, or rename real files.
Run relevant tests. Return changes, commands, exit status, and risks.
"""
```

#### reviewer.toml

```toml
name = "reviewer"
description = "Independent read-only acceptance."
model = "gpt-6.1-sol"
model_reasoning_effort = "high"
sandbox_mode = "read-only"
developer_instructions = """
Review the actual diff against acceptance criteria. Do not edit.
Report actionable findings with file locations and reproduction.
If none are found, say so and list what remains unverified.
"""
```

三份完整下载:<a href="/examples/chatgpt/agents/repo_explorer.toml">explorer</a>、<a href="/examples/chatgpt/agents/implementation_worker.toml">worker</a>、<a href="/examples/chatgpt/agents/reviewer.toml">reviewer</a>。每份至少有 `name`、`description`、`developer_instructions`;同名会覆盖内置角色, 所以本例不叫 explorer 或 worker。模型是示例选择, 需账号实际支持;没有 Sol 时换可用模型及它支持的力度, 不以升级订阅作为练习前提。

### 模型与权限如何继承

模型与力度先分别按「显式 spawn 值 → [agents] 默认 → 父线程」解析, 再应用自定义文件。文件显式写的 model / effort 优先。若 spawn 或默认只指定新模型而未指定力度, 用新模型默认力度;但自定义文件只写 model 时会保留此前解析出的力度。因此本例把二者一起写。[^1]权限还要考虑父线程当前轮的运行时覆盖:只读角色文件不是不可突破的权限上限。委派前检查实际权限, prompt 也明确只读。

### MCP 与 skill:按需增加, 不默认全接

_可选追加到某份角色文件;skill 路径必须改成实际绝对路径_
```text

```toml
[mcp_servers.openaiDeveloperDocs]
url = "https://developers.openai.com/mcp"

[[skills.config]]
path = "/absolute/path/to/installed-skill/SKILL.md"
enabled = true
```

```

本练习不需要外部工具, 上面是可选配置, 不是必填步骤。`mcp_servers` 配置工具连接, `skills.config` 按已安装 SKILL.md 的绝对路径启停。未写的会话设置继承父线程;追加一个 server 并不自动移除其他 server。对已有连接可设置对应 `enabled = false`, 但还要检查插件带来的工具和服务自身权限。[^5]本地只读沙箱不会自动撤销远端服务的写入能力。

### III · 四条入口, 各管一件事

- **手动指派**: 直接要求派几个 agent, 各查什么、何时等待、回什么摘要。先从这里练。

- **/agent**: CLI 中检查与切换子线程, 不是创建 agent 的命令。当前 codex agents 则浏览共享本地 daemon 上的会话, 两者别混淆。

- **Ultra**: 符合资格的账号和模型可主动委派;其他力度明确提出要求。Ultra 是推理/委派选择, 与 Ultrafast 速度档是两回事。

- **AGENTS.md / skill**: 长期规则或当前触发的 skill 可要求委派。写清适用条件, 不让每个简单任务都启动团队。

### IV · 练习:探索 → 实现 → 验收

练习材料是 <a href="/examples/chatgpt/agents/collision-key.mjs">collision-key.mjs</a> 和 <a href="/examples/chatgpt/agents/collision-key.test.mjs">对应测试</a>:一个纯字符串函数, 当前只去前后空格并转小写。把它们放到新的练习目录, 按 README 放置配置, 运行 `node --test collision-key.test.mjs`。两条起始测试应通过, 但还没覆盖 Unicode 组合形式。整个练习不需要真实文件、网络、依赖安装或外部账号。

**提示词 · Codex · Subagents**

```text
请用多 Agent 完成 <有限任务>。两位 repo_explorer 并行只读查 <实现范围> 和 <测试范围>, 各回文件定位、结论、未知项。等两份结果后, 主线程定方案, 一个 implementation_worker 仅改 <文件清单>。再由 reviewer 对照 <验收条件> 检查实际 diff 并复跑检查。禁止 <动作>。等全部完成, 汇总证据、剩余风险和实际用量, 无法取得用量就写未测。
```

**示例**

```text
请用两位 repo_explorer 只读检查 collision-key.mjs 和 collision-key.test.mjs, 一位查实现, 一位查边界测试。等摘要齐全, 一个 implementation_worker 仅改这两个文件, 增加 NFC 规范化及回归测试。验收:café.txt 与 cafe\u0301.txt 的 key 相同;原空格和大小写测试仍过;空字符串输出空字符串;不同名字仍不同。由 reviewer 独立看 diff 并运行 node --test collision-key.test.mjs。不要安装包、改真实文件名、提交、推送或发数据。返回改动、检查证据和局限, 不要宣称它适用于所有文件系统。
```

这里的 cafe\u0301.txt 表示在测试代码中写 Unicode escape, 或明确使用分解形式的字符, 不是把反斜线字面量当文件名。验收要检查两种实际字符串。参考改法在下载说明里;先自己做, 再比较。第二位 reviewer 即使说通过, 你仍要看测试里是否真的有这两个字符串、命令退出码是否为零。

> 本书实测了起始夹具与本地检查, 并核对了配置语法和 CLI 帮助。尚未在真实账号完成上述模型委派, /agent 也因本轮 TUI 初始化受限未实测。这是一条可复跑工作流, 不冒充已测的产品成功记录。

### V · 把并行的账算在一起

另有一条本轮真实执行的协作记录:主线程制作小工具章的改名预览器, 再让一个子 Agent 只读复核 HTML、测试与教学说明。它返回两个具体问题:选择含换行的非法文件名后, 旧名单仍能重新导出;IMG_10 排在 IMG_2 前面的字典序没有说清。主线程修正状态清理、补充排序说明和测试, 然后在浏览器重跑。复核者没有修改实现文件。

这证明了本次「实现 → 独立复核 → 修正 → 重测」确实发生, 不证明上面的三份角色 TOML 已被客户端发现, 也不证明并行节省了多少时间或 credits。本轮未取得可归因到这次复核的用量数据。读者可以照着复制分工方式, 但不能把不同层次的验证合成一句「多 Agent 全部实测通过」。

每位 agent 都会读上下文、调用工具、产生输出。要统计主线程、全部子线程和返工, 不能只看主线程最后一条回复。子线程返回「结论、来源、未决问题」, 原始日志留在自己的记录里, 可以减轻主线程重复读取的负担。成本公式见 <a href="/books/chatgpt/cost-and-habits">长用章</a>。[^4]

举一个人为账本, 不当实测:每位 Luna 探索员使用 10,000 未缓存输入、2,000 输出 token, 两位共 0.10 credits;Sol 实现者用 20,000 输入、4,000 输出, 为 2.00;Sol reviewer 用 10,000 输入、2,000 输出, 为 1.00;主线程用 10,000 输入、1,000 输出, 为 0.75。合计 3.85 credits, 均按截至 2026-10-09 的 Standard 费率、无缓存与无额外计费工具计算。它不能推出订阅还剩几次, 也不能证明比单 Agent 便宜或更快。

只有在同一组任务上, 记录相同验收标准下的单 Agent 与多 Agent 总用量、等待、返工, 才能判断值不值得保留。先限定并发和输出, 再考虑更轻模型;不把更多角色等同于更认真。

> 分工要减少彼此等待, 验收要回到同一份证据

## 引用与参考

01 · OpenAI · Subagents。角色、委派入口、自定义文件与继承规则;截至 2026-10-09。  (OpenAI · Subagents)
02 · OpenAI · Configuration Reference / config-schema.json。本轮实际读取 JSON schema, 核对 agents 的五个主要键及类型;截至 2026-10-09。  (OpenAI · Configuration schema)
03 · OpenAI · Config basics。项目级配置需受信, 同时受上层强制要求约束;截至 2026-10-09。  (OpenAI · Config basics)
04 · OpenAI · Pricing。Standard credits token 费率, 与订阅内含额度分开理解;截至 2026-10-09。  (OpenAI · Pricing)
05 · OpenAI · Configuration Reference。skills.config、mcp_servers 与模型设置的配置面;截至 2026-10-09。  (OpenAI · Configuration reference)

---

*进阶 B · 多 Agent 的分工与成本 · ChatGPT · 把日常事情做完 · Aklman 著 · CC BY-NC-ND 4.0 · https://library.aklman.com/books/chatgpt/advanced-multi-agent*
