第 5 篇 大師 · 第 14 章
多代理、平行工作流與自動化管線
先給結論:高手不是常態開 swarm;高手是知道哪些未知數適合平行查、哪些決策必須留在同一條主線,以及什麼時候該把 writer 搬進獨立 worktree。
本章怎麼標證據
官方 是產品文件、release 或明確官方狀態;達人 是具名作者的第一手做法;社群 是公開 repo/issue 的第三方證據;實作快照/預覽 代表可能漂移。徽章標的是證據類型,不是成效分數;作者自陳的速度、PR 數、token 倍率與 GitHub stars 都不會被當成客觀證明。
14.1 為什麼 Claude subagent 愛用者可能覺得 Claude 比較順?
這種感受不奇怪,而且可以用產品設計解釋,不必急著化約成「哪個模型比較強」。Claude Code 把兩種心智模型直接拆開:具名 subagent 預設從 fresh context 開始;/subtask 則 fork 既有對話。CLI 另有 --worktree,custom agent 也能選配 isolation: worktree。Claude 官方 對已習慣 CLAUDE.md、Markdown agent 定義與 /agents 管理的人,整條路徑可能更像同一套文法。使用感推論
Codex 現在也有內建 explorer/worker、自訂 TOML agents、context fork、/agent thread 檢視、App managed worktree/Handoff 與 CLI /review。Codex 官方 「Claude 比較順」可能與 discoverability、肌肉記憶、agent 定義的組織方式及 CLI worktree 摩擦有關;目前沒有公平 benchmark 能把這種感受升格成速度、品質或成本優勢。 比較推論
| 使用感受來源 | Claude Code | Codex 現行對應 | 公平判讀 |
|---|---|---|---|
| fresh/fork | named subagent 與 /subtask 明確分開 |
現行 V2 實作以 fork_turns=none|all|N 控制 |
兩邊都能控制帶入脈絡;UX、payload、cache 與穩定 contract 不同 |
| CLI worktree | --worktree、custom agent 可選配 per-agent isolation |
App 有 managed worktree;CLI 用原生 Git | terminal 重度使用者在 Claude 的步驟較短 |
| agent 管理 | Markdown 定義、/agents;Agent View 是完整 background sessions 的 research preview |
TOML config layer、/agent、App/IDE thread UI |
Agent definition、subagent task 與完整 background session 是不同層;Markdown 與 TOML/config layer 的組織方式也不同 |
| 團隊感 | experimental Agent Teams 有 shared task list/peer messaging | parent-mediated fan-out;現行 repo 快照有子線訊息與巢狀 spawn 實作快照 | 沒有已文件化的一對一共享 task-list UI |
別把 Claude Agent Teams 跟一般 subagent 混在一起比
Agent Teams 是 experimental product surface,而且 Anthropic 也警告同檔寫入可能互相覆蓋、活躍成員會增加 token;Symphony 則是不同產品層級的 preview/開源 orchestration 參考實作。兩者成熟度與定位不同,都不能當一般本機 subagent 的一對一替代。比較時要對齊「本機 subagent 對本機 subagent」、「managed review 對 managed review」。不同層級的預覽能力
14.2 Codex 現在到底有什麼?先畫清楚邊界
現行 Codex releases 預設啟用 subagent workflows。你可以直接要求委派,也可以讓適用的 AGENTS.md 或 Skill 指示觸發;CLI 用 /agent 查看、切換 agent threads,主線最後收集與整合結果。每條子線會做自己的 model 與 tool work,所以 token 通常高於可比的單 agent run。官方
| 能力 | 現行狀態 | 它隔離什麼 | 它不保證什麼 |
|---|---|---|---|
| Subagent thread | App/CLI/IDE 預設可用 | 對話線、探索噪音、工作責任 | 不等於獨立 cwd、branch、port 或 DB |
| Custom agent | 個人或專案 TOML | instructions、model/effort、sandbox、MCP、Skills 等設定 | 未設定的 session config 仍依 precedence 繼承 |
| App Worktree | desktop app 的 managed checkout | 獨立 working tree/checkout;預設 detached HEAD,可 Handoff 或另走 Git 流程整合 | 外部 service、port、credential、Git object database 仍可能共享 |
CLI /review |
CLI 的 dedicated reviewer | 審查責任;不改 working tree | App/IDE 的預設 chat 行為不同;都不取代 tests、runtime proof 或人類判斷 |
最重要的一句:agent thread 是 context/責任分線;worktree 才是 checkout 分線。目前公開的本機 V2 實作顯示 agents 共用 container、filesystem 與 cwd,一條線的修改會立刻被其他線看到。這也是為什麼官方建議從 read-heavy 工作 fan-out,對 write-heavy 並行更保守。公開文件 官方 repo 實作快照
本章採用的安全預設
研究、QA、文件查證可多線唯讀;主代理唯一寫入。如果真的要多 writer,就替每位 owner 同時配一套專屬 worktree、專屬 branch 與專屬頂層 session,再由唯一 integrator 序列整合。
14.3 決策框架:fan-out 還是維持單 agent?
別用「任務看起來很大」當 fan-out 的理由。真正的判準是:能否把它拆成互不阻塞、各自有 done criteria、結果能低成本合併的子題。
| 任務形狀 | 預設選擇 | 原因 |
|---|---|---|
| 小改動、同一批檔、需要一路做產品/架構取捨 | 單 agent | 委派、重建 context、整合與 review 成本通常更高 |
| 多個互不依賴的探索、來源、假說、測試群、log、審查面向 | 平行 explorers/唯讀 agents | 任務確實獨立時可能縮短 wall-clock 等待,也把噪音留在子線 |
| 未知很多,但最後只需一位 writer | 多 explorer → 主線定案 → 單 writer | 平行發現、序列決策,最少衝突 |
| 多個實作互不碰檔,interface 與驗收已凍結 | 專屬 worktrees 中平行 workers | 每位 writer 都要有專屬 worktree、專屬 branch 與專屬頂層 session |
| 多個 writer 會碰共享檔、generated state 或 dev server | 專屬 worktree+branch+頂層 session | 除了檔案,還要分 port、env、DB 與 server ownership |
| 子任務有前後依賴 | 先畫 DAG,只派已解除阻塞的節點 | 尚未定義的上游 interface 會讓下游平行變成返工 |
| 模糊、判斷密集、需要頻繁問你 | 單一互動式主 agent | 讓需求與取捨沿同一脈絡演進 |
OpenAI 的 Subagents 文件把 exploration、tests、triage、summarization、log analysis 列為平行起點,並警告 write-heavy workflow 的衝突與 coordination overhead。Symphony 團隊也明說,模糊、需要高度判斷的工作仍適合直接交給一條互動式 Codex。官方
Simon Willison 的實務則更像一句檢查碼:平行研究,序列整合。他的 scout 可以只交「相關檔案、限制、可能方案」,不期待 patch;真正的大改仍受限於人類一次能認真驗幾份 diff。Simon Willison,2025-10-05
30 秒 fan-out 檢查
- 至少有兩個子題能同時開始嗎?
- 每條線能寫出自己的「完成定義」嗎?
- 其中一條失敗時,其他線的結果仍有價值嗎?
- 它們不會同時改同一個 write set/shared state 嗎?
- 主代理能用摘要與證據整合,不必重讀每條完整 log 嗎?
五題只要有兩題答「不確定」,先維持單 agent,或先派一條 explorer 把未知數降下來。這是實務決策法,不是官方效能公式。綜合推論
14.4 用對角色:explorer、worker、default 與 custom agents
| 角色 | 官方定位 | 你該怎麼 brief | 常見誤用 |
|---|---|---|---|
explorer |
read-heavy codebase exploration | 問題、只讀範圍、file:line 證據、未知項 | 把 read-heavy 誤當成硬唯讀 sandbox |
worker |
implementation/fixes | 唯一 ownership、interface、non-goals、proof command | 讓多位 worker 共改 shared file |
default |
general-purpose fallback | 範圍明確但不適合前兩者的任務 | 所有事情都塞給 default,失去角色價值 |
| custom agent | 完整 session config layer | 窄、鮮明、工具面與責任一致 | 寫成冗長 persona,卻沒寫交付與停止條件 |
官方把 explorer 稱為 read-heavy,不是「權限上一定不能寫」。若你真的要機械式唯讀,委派前先把 parent turn 的 permission mode 選成唯讀,custom agent 也設 sandbox_mode = "read-only";parent 的 live runtime override 會在 spawn 時重新套用,所以不要只看 TOML 就假設有效。官方
Context:Claude 的 fresh,不等於 Codex 的預設
Codex 公開產品文件保證子代理在自己的 thread 工作、主線收摘要;2026-07-26 的官方 repo V2 實作另顯示 fork_turns 可為 none、all 或正整數 N,省略時是 all。目前 fork 也不是複製全部內部內容:tool calls、tool results、hidden reasoning 與 agent 間訊息會被過濾。官方 repo 實作快照
fork_turns | 目前語意 | 適合 |
|---|---|---|
"none" | 不繼承 parent 對話歷史;仍有 task message、system/developer instructions 與 custom role | 自足 brief、避免搬入歷史噪音 |
"all" | 帶過濾後的完整周邊對話;目前省略預設 | 任務真的依賴整段決策歷史 |
"N" | 只取最近 N turns | 需要近期脈絡,但不想搬完整歷史 |
fork_turns 不是要你直接當 CLI 旗標背
這是現行 orchestration tool schema 的實作細節,可能隨 rollout 演進。一般互動使用者仍可用自然語言委派;若 caller/工具明確暴露此欄位,再依當下 schema 使用。full-history 與 role/model override 的組合在固定 commit 與當前 tool contract 間並不完全一致;需要自訂角色或模型時,先寫自足 brief、核對當前 schema,執行後再用 /agent 確認實際 role/model/status。
14.5 自訂 agent:用 TOML 鎖角色,不靠長篇人格扮演
個人 agent 放 ~/.codex/agents/;專案共享 agent 放 .codex/agents/。standalone 檔案公開必填只有 name、description、developer_instructions,並可覆寫一般 session config,例如 model、reasoning、sandbox、MCP 與 Skills。官方
這是一個以唯讀為預設、只交證據的專案 explorer(委派前仍要確認 parent turn permission):
name = "evidence_explorer"
description = "Read-only explorer that traces code and returns file:line evidence."
sandbox_mode = "read-only"
model_reasoning_effort = "medium"
developer_instructions = """
Stay read-only. Never modify, create, rename, or delete files.
Answer only the assigned question.
Trace the real execution path and cite file:line evidence.
Separate confirmed facts, inferences, and unknowns.
Return concise findings; do not propose a patch unless asked.
"""
全域多代理設定則放在一般 config 的 [agents] 段:
[agents]
enabled = true
# 教學示例值,不是官方預設:
max_concurrent_threads_per_session = 3
default_subagent_reasoning_effort = "medium"
interrupt_message = true
agents.enabled 預設為 true;未設定併發上限時,由 Codex 選擇預設。舊 agents.max_threads 只是 legacy alias。Config basics 也仍列出 Stable、預設 true 的 [features].multi_agent;兩者都是公開設定,本章不武斷推測它們的內部組合語意。官方
custom agent 可提供 model/effort;未設定值會依當前 config/spawn precedence 解析。由於 full-history fork 與 override 行為仍可能受 surface/rollout 影響,寫 automation 前要核對當下 schema 與子線 status,不把單一固定 commit 的 precedence 寫成永久 contract。rollout-sensitive 實作
幾個舊欄位,現在別再照抄
nickname_candidates 不在公開 standalone agent schema。官方文件 agents.max_depth 是 V1 設定,V2 會忽略。官方 repo 實作快照 agents.job_max_runtime_seconds 隨 CSV jobs 移除後只剩 no-op 相容解析。官方移除 commit 這些都已從本章操作範例撤下。
14.6 一份好 brief 要寫什麼?Goal 不夠,還要有交付合約
官方 Subagents 文件要求說清楚:工作怎麼分、主代理要不要等、子線要回什麼;Best practices 再補 Goal、Context、Constraints、Done when。具名實務者的公開 workflow 則反覆出現 ownership、non-goals、proof command 與 blocked escape hatch。官方 具名第一手實踐
九格 brief 合約
- 角色/任務:explorer、worker 還是 reviewer?
- 目標:只寫一個可驗收結果。
- 輸入與 source of truth:issue、spec、檔案、branch。
- 允許讀取範圍:避免全 repo 漫遊。
- 唯一 ownership:精確到檔案/module/worktree。
- Constraints/non-goals:介面、不變條件、明確不做什麼。
- 完成證據:file:line、URL、command、exit code、rendered evidence。
- 交付格式:摘要、檔案、風險、未驗證項。
- 阻塞合約:何時停、向誰回報,禁止怎麼繞過 gate。
Prompt A:三條唯讀研究線,主代理唯一寫入
使用 3 個唯讀 subagents 並行研究以下互不重疊的問題:
1. 〈研究題 A〉
2. 〈研究題 B〉
3. 〈研究題 C〉
共通規則:
- 子代理不得修改、建立或刪除任何檔案。
- 每條線只處理自己的題目,不重做其他線。
- 只採〈允許的來源種類〉。
- 回傳:結論、file:line 或 URL 證據、日期、未驗證項、排除項。
- 主代理等三條全部完成再綜合。
- 只有主代理可修改〈精確檔案清單〉。
- 完成後跑〈checks〉,再對整體 diff 做唯讀 review。
Prompt B:唯讀 explorer
你是唯讀 explorer。不要修改、建立或刪除任何檔案。
目標:
回答〈具體問題〉。
只讀範圍:
〈repo/目錄/檔案〉
必須交付:
1. 涉及的檔案與行號
2. 現行行為與限制
3. 2–3 個可行方案及取捨
4. 風險、未知與需要主代理決定之處
5. 建議的最小驗證命令
找不到證據時標記 UNVERIFIED,不要猜。
Prompt C:有 ownership 的 worker
目標:
〈單一、可驗收的結果〉
唯一 source of truth:
〈spec/issue/plan 路徑〉
你的 ownership:
只可修改〈精確檔案〉。
若有其他並行 writer,你必須在〈專屬 worktree〉的〈專屬 branch〉
另開〈專屬頂層 session〉;缺任何一項就不要平行寫入。
既有介面/不變條件:
〈API、schema、design token、相依輸出〉
Non-goals:
〈明確列出不做事項〉
完成證據:
執行〈精確命令〉並回報 exit code;UI 改動附 rendered evidence。
阻塞合約:
若 gate 失敗、需要跨出 ownership、共享介面未定或遇到其他 agent 衝突,
立即停止並回報;不可繞過驗證,也不可改別人的檔案。
輸出:
變更摘要、檔案清單、驗證結果、剩餘風險。
Prompt D:只找可行動問題的 reviewer
你是唯讀 reviewer,不要修檔。
審查範圍:
〈branch/diff/commit/spec〉
依序檢查:
1. 是否符合 source of truth 與 scope
2. 正確性、回歸與邊界案例
3. 測試是否真的覆蓋本次行為
4. 是否誤改共享介面或其他 agent 的 ownership
5. 是否有未證明的聲稱
輸出:
MUST_FIX、SHOULD_FIX、NO_ACTION。
每項附檔案/行號、理由與最小重現或驗證方式。
若無可行動發現,明確寫「no actionable findings」。
別把整份聊天歷史當 brief
把穩定規格放進 repo 的 spec/plan/workpad,brief 只指向唯一 source of truth,再補這次的 ownership 與 done criteria。OpenAI Codex 團隊把短 AGENTS 當導覽、細節放版本化文件;Symphony 也把狀態與驗證留在持久 workpad。官方團隊第一手 由這兩個案例可推論,持久 artifact 通常比反覆搬整段聊天更容易恢復與查證。實務推論
14.7 平行寫入的鐵律:不要讓兩個 writer 共用同一 checkout
多代理最常見的概念錯誤,是以為「不同 agent thread」自然等於「不同檔案世界」。在現行本機 Codex,多條 agent 線共用 cwd/filesystem;即使 brief 寫得再客氣,檔案、branch、generated artifacts、dev server 與 port 仍可能撞在一起。官方 repo 實作快照
本站安全預設:一個 checkout,一位 writer
- 多條 explorer/reviewer 線保持唯讀。
- 主代理彙整證據、凍結 interface 與最小修改方案。
- 只讓主代理或一位 worker 寫目前 checkout。
- 完成後序列跑 checks、整體 diff review、rendered proof。
這不是保守到不用多代理;它其實把最適合平行的「找未知數」放大,同時把最容易互砸的「整合」保留單一 owner。
真的需要多 writer:專屬 worktree+branch+頂層 session
Codex desktop app 能替 independent chats 建 managed worktrees;預設是 detached HEAD,完成後可 Handoff 回 Local 或另走 Git 流程整合。CLI 目前沒有同等的官方 managed-worktree 旗標;用原生 Git 建 checkout 與 branch,再各開一個獨立頂層 Codex session。官方
git worktree add ../myapp-feature-a -b feature/a
git worktree add ../myapp-feature-b -b feature/b
git worktree list
接著在兩個目錄各開一個頂層 session,brief 明寫 branch、owned paths、shared interface 與 proof。不要在一條本機 subagent session 裡假裝 cwd 已自動分裂。
| 除了檔案,還要分配 | 做法 |
|---|---|
| Dev server/port | 每個 worktree 固定不同 port,寫進 brief |
.env/secrets | 用 bootstrap script 建立;不要假設 ignored files 會跟過去 |
| DB/queue/cache namespace | 用不同 local DB、schema 或 namespace |
| Generated files/lockfile | 指定唯一 owner;共享生成物序列處理 |
| Interface 變更 | 先凍結 contract,或讓上游先完成再解鎖下游 |
| 整合 | 由唯一 integrator 依 DAG 合回,最後重跑完整 gate |
Jesse Peplinski 的 Codex App worktree 實務特別強調:worktree 不會取代 build、test、smoke 與 merge check,也不會自動替你分配 port。這是具名作者的個人流程,不是效能保證,但很適合拿來補「Git 只隔離檔案世界」的盲點。Jesse Peplinski,2026-05-18
14.8 高手怎麼用:不是一種流派,而是三種工作形狀
形狀一:Scout → 主線定案 → 單 writer
Simon Willison 把 agent 當 scout:它可以接受難題,找出相關檔案、約束與可行方案,但不預期直接合併它的 code。主線拿到地圖後凍結 spec,再交一位 owner 寫。這個模式特別適合 root cause 不明的 bug、陌生 codebase 與設計選項尚未收斂的重構。Simon Willison
形狀二:Issue DAG → 獨立 workspace → Human Review
OpenAI 的 Symphony 參考實作把 issue tracker 當 control plane,每張 issue 有 deterministic workspace,只派已解除阻塞的 DAG 節點,並記錄 bounded concurrency、retry/backoff、turn/token telemetry 與 human-review 狀態。重點不是範例一次開幾位 agent,而是未解依賴不派、狀態可恢復、驗收是獨立 gate。官方團隊第一手 preview spec
形狀三:把 repo 變成 agent 能自己證明的環境
OpenAI Codex 團隊的 Harness engineering 經驗,是讓每個 worktree 都能獨立啟動 app、看 logs/metrics、操作 browser,並把命名、架構與品質規則逐步變成 lint、結構測試與工具。AGENTS 保持成短導覽,詳細規格進版本化文件。官方團隊第一手 這提醒你:增加 agent 數量不會自行補救一個無法測試、無法觀測、規則只存在人口相傳的 repo。 綜合推論
Peter Steinberger 的「同資料夾多 session」只能當歷史快照
他在 2025 年文章描述過同時跑多個 Codex CLI session,甚至共用資料夾;這是早於現行 V2 的個人高風險做法。可學的是用 blast radius 判斷、先寫 spec、設 reviewer 與中途回報;不可照抄的是平行 writer 共用 checkout。他現行 codex-first workflow 對平行 writer 要求各配專屬 worktree 與專屬 branch;另一套 maintainer-orchestrator control-plane workflow 則更嚴格,規定每個 repo 只留一條 mutable Codex thread。這是兩套專用規則,不是 Peter 所有流程的統一預設。Peter Steinberger,歷史/現行實踐
14.9 驗收:子代理說「完成」不等於 PASS
多代理工作流最危險的捷徑,是把每條線的自述拼起來就交付。主代理必須重新建立一條可追溯證據鏈:
- Scope check:changed files 是否都在 ownership?有沒有漏做 non-goal 邊界?
- Integration check:先看整體
git diff,確認 shared interface 與合併順序。 - Mechanical gates:跑最小能證明行為的 tests、lint、format、typecheck、build。
- Behavior proof:能啟動就跑 smoke/E2E;UI 改動量 overflow、console、viewport,並留 screenshot/baseline。
- Independent review:用唯讀 reviewer 或 CLI
/review找 correctness、regression、security、test gaps。 - Human judgment:審查真正的 diff 與風險;不要只看 agent 摘要。
在 Codex CLI,/review 會啟動 dedicated reviewer,可選 base branch、未提交變更、commit 或 custom instructions,回 prioritized actionable findings,而且不改 working tree。App/IDE 的 review chat/Detached 行為要依各自 surface 文件看,不能直接套用這四個 CLI 選項。它們都是一雙獨立眼睛,不是測試 runner,也不是核可權的替代品。官方
等所有 workers 結束後:
1. 主代理先檢查整體 git diff 與 ownership。
2. 執行〈tests/lint/typecheck/build/rendered checks〉。
3. 二擇一:另開唯讀 custom reviewer,或在 CLI 執行 /review;
每項發現必須附 file reference 或重現步驟。
4. 只有高風險變更才做兩層獨立審查,並預先限制修正迴圈。
5. 不得把 worker 自述、測試檔存在或 reviewer 沒回報,單獨視為 PASS。
四值驗證,不要把沒測過塗成綠色
| 狀態 | 意思 | 該附什麼 |
|---|---|---|
| PASS | 已執行且通過 | 命令/工具、exit code、可核對輸出 |
| FAIL | 已執行且失敗 | 失敗點、影響、下一步 |
| N/A | 此專案/變更不適用 | 為什麼不適用 |
| UNVERIFIED | 因環境、權限、缺基線或人工判斷而未能證明 | 缺的證據與如何補驗 |
Simon Willison 的「交付你已證明能運作的 code」實務,要求 automated tests 之外仍要人工示範;視覺變更要有 screenshot。這不是 Codex 專屬功能,但正好補上 agent 自我宣告最容易漏掉的一段。Simon Willison,2025-12-18
14.10 成本控制:fan-out 是用 token 買平行與乾淨 context
可跨版本保守引用的核心成本事實是:每個 subagent 都有自己的 model/tool work,所以可比情境下會比單 agent 多用 token。官方 目前沒有公開、穩定、可泛化的「N 個 agent 就精確 N 倍」公式;較便宜的單次模型是否因重工、re-review 而提高總成本,也缺同條件對照。研究邊界/推論
可以用這個心智帳本估算,但它不是計費公式:
總成本 ≈ 主線決策
+ Σ(每條子線的 context + reasoning + tool work)
+ 整合重讀
+ 驗證與 reviewer
+ 衝突/錯誤造成的返工
六個真正有用的控制桿
- 先限制 agent 數:第一次從 2–3 條獨立唯讀線開始,不追求滿載。
- 限制 concurrency:用
max_concurrent_threads_per_session設上限;這是容量上限,不是目標。 - 按風險路由 model/effort:封閉的探索用較快/較省的可用模型與 low/medium;跨檔推理、security、reviewer 才升高。
- 縮小帶入 context:能寫自足 brief 就別無意義搬完整 parent 對話歷史;若工具暴露
fork_turns,再依當前 schema 選none/最近 N turns。 - 只回 distilled findings:結論、證據、未知、下一步;不要把 raw logs 全回灌主線。
- 限制 review loop:例如最多兩輪;仍有爭議就回主代理/人類裁決,不讓 reviewer ping-pong 無限繁殖。
最多使用 3 個 subagents,只 fan-out 彼此獨立的讀取工作。
探索線使用較快、較省的可用 model 與 medium/low effort;
只有需要跨檔推理的 reviewer 使用 high。
若兩條線會修改同一檔、依賴前一條結論,
或無法定義各自 done criteria,維持單 agent。
每條線只回 distilled findings,不附完整 logs。
reviewer 修正迴圈最多 2 輪;仍有爭議時交回主代理/人類。
第三方公開 workflow 也提醒:小模型若需要更多回合、更多 re-review 或最後仍要強模型重做,總成本不一定較低。這是合理的實務風險,不是官方 benchmark。公開 workflow/issue
14.11 Claude → Codex:最低摩擦的遷移路線
| Claude Code 習慣 | Codex 對應 | 不能硬做一比一的地方 |
|---|---|---|
CLAUDE.md | AGENTS.md | 兩邊載入與作用域細節仍依各自文件 |
.claude/agents/foo.md | .codex/agents/foo.toml | 兩邊都不只是 persona;先搬 name/description/instructions,再逐項重映射 tools、permissions、hooks、memory、background、MCP 與 isolation |
| Explore | explorer | Codex 是 read-heavy;硬唯讀需 sandbox |
| general-purpose implementer | worker/default | 依任務是否執行導向選 |
| named fresh subagent | custom agent+fork_turns="none" | 後者是現行 tool schema,先核當前版本 |
/subtask full fork | fork_turns="all" | fork payload 過濾規則不完全相同;正整數 N 是 Codex 額外的 partial-history 模式 |
/agents 定義管理 | .codex/agents/*.toml | Codex /agent 只負責 inspect/switch active threads,不是定義管理器 |
--worktree/可選的 isolation: worktree | Codex App Worktree/Handoff;CLI 原生 git worktree | Claude 可對單一 custom subagent 選配 worktree;Codex App 主要以頂層 chat 為粒度 |
| Agent Teams | 主代理統籌 subagents;大型編排另研究 Symphony | 沒有已文件化的同等 shared task-list surface |
| reviewer/completion workflow | 唯讀 custom reviewer+checks+CLI /review | hook、managed review 與本機 review 是不同層 |
四階段遷移,不要第一天就複製整隊
- 階段 1:一主多讀——主代理做所有決策與寫入,只讓 1–3 條 explorer 找證據。
- 階段 2:角色化——把反覆出現的 explorer/reviewer brief 寫成 project custom agents,必要時設唯讀 sandbox。
- 階段 3:單一 worker——spec 凍結後,讓一位 worker 擁有明確 paths 與 proof command;主代理整合。
- 階段 4:隔離多 writer——只有 ownership、interface 與驗收都能預先切開時,才讓每位 writer 以專屬 branch、專屬 worktree 與專屬頂層 session 工作。
這條路線刻意保留 Claude 使用者熟悉的「主線做判斷、子線做封閉任務、另一條線審查」,只把 agent 定義、thread 操作與 worktree 入口換成 Codex 的現行 surface。它是遷移建議,不是兩個產品性能等價的宣告。綜合推論
14.12 版本清場:本章修掉哪些過時說法?
| 過時說法 | 2026-07-26 可核實現況 |
|---|---|
spawn_agents_on_csv 是 experimental 批次 fan-out |
0.145.0 已移除 CSV-backed agent jobs |
job_max_runtime_seconds 控 worker timeout |
只留 no-op compatibility parser,已從 generated schema 隱藏 |
max_threads = 6 是固定預設 |
現行鍵是 max_concurrent_threads_per_session;官方不公布固定預設值 |
max_depth = 1 鎖死孫代理 |
只屬 V1;V2 忽略,現行 child 可再 spawn |
[features].multi_agent 已由 agents.enabled 取代 |
兩者都是公開設定且預設 true;不要自行假定是二選一 |
| 只有使用者明講才會委派 | 適用 AGENTS.md/Skill 指示也可觸發 |
| 所有 child 一律繼承 parent model/effort | custom agent 可提供 model/effort;fork 與 override 組合依當前 surface/schema 核對 |
nickname_candidates 是 standalone agent 穩定欄位 |
公開 standalone schema 未列,不放進範例 |
| subagent 自然隔離 checkout | 現行本機 agents 共用 cwd/filesystem;要用 worktree 另隔離 |
spawn_agents_on_csv 的移除有不可變官方 commit 與 0.145.0 release 可核對;不是「暫時找不到文件」。max_depth 與 shared cwd 則以當日官方 repo 實作快照補公開文件的細節。官方 release/commit 實作快照
小結
- ✅ Claude 使用者覺得較順,可能與 fresh/fork 心智模型、CLI worktree、agent 管理 UX 與肌肉記憶有關;沒有公平公開 benchmark 能把感受升格成客觀勝負。
- ✅ Codex 現行有預設開啟的 subagents、
/agent、default/worker/explorer、custom TOML agents、context fork、App worktree/Handoff 與 CLI/review。 - ✅ fan-out 優先用在互不依賴的探索、測試、triage、log 與 review;小改、同檔、循序決策與高互動任務保留單 agent。
- ✅ brief 要有 goal、source of truth、ownership、constraints、non-goals、proof、交付格式與 blocked contract。
- ✅ subagent thread 不隔離 checkout;本站安全預設是多讀一寫。多 writer 時,每位 owner 都要有專屬 worktree、專屬 branch 與專屬頂層 session。
- ✅ 主代理要重看整體 diff、跑 gates、做 runtime/rendered proof,再交唯讀 reviewer 或 CLI
/review;子代理自述不是 PASS。 - ✅ 成本同時受 agent 數、context、model/effort、tool work、review loop 與返工影響;併發上限不是應開數。
- ✅ 本章已移除 CSV fan-out、固定
max_threads=6、max_depth=1、job runtime 與 standalonenickname_candidates等過時教學。
動手試試
- 挑一個陌生模組,用 14.6 的 Prompt A 開兩到三條唯讀研究線;要求 file:line、未驗證項與排除項,主代理不要讓任何子線寫檔。
- 建立
.codex/agents/evidence-explorer.toml,設sandbox_mode = "read-only";委派前把 parent permission 選成唯讀,再用/agent檢查子線是否真的以你預期的角色工作。 - 拿一個近期小改套 14.3 的五題檢查。若不值得 fan-out,刻意用單 agent 完成,記下省掉哪些委派/整合成本。
- 挑一個能切開的雙模組任務,先只寫 brief:owned paths、shared interface、proof command、port ownership、blocked contract,以及兩套專屬 worktree/branch/頂層 session。沒有全答出來前,不要開第二位 writer。
- 完成一個 change 後,先跑最小 checks,再用 Prompt D 或 CLI
/review做唯讀審查;最後以 PASS/FAIL/N/A/UNVERIFIED 回報。
本章查證範圍
每個來源的發布/更新狀態、第一手證據、可用結論、限制、排除項與查證日期,都集中在下方來源與查證邊界。任何只有作者自陳的績效數字、stars、匿名討論與舊版 issue,都沒有被拿來當客觀成效。
來源與查證邊界
| 來源 | 日期 | 用在本章 | 限制 |
|---|---|---|---|
| Codex Subagents | 頁面未標發布日;查證 2026-07-26 | surface、roles、custom agents、permission、成本、fan-out 起點 | 不提供固定最佳 agent 數或 token 倍率 |
| Codex Best practices | 頁面未標發布日;查證 2026-07-26 | Goal/Context/Constraints/Done when、驗證閉環 | 不是多代理 benchmark |
| Codex Code review | 頁面未標發布日;查證 2026-07-26 | CLI /review 的四種 scope 與 dedicated reviewer |
不取代 tests/人類核可 |
| Codex Worktrees | 頁面未標發布日;查證 2026-07-26 | desktop app managed worktree/Handoff 邊界 | 不是 CLI managed flag |
| Codex CLI 0.145.0、CSV removal commit | 2026-07-21/2026-07-20 | V2 stabilized、CSV jobs 移除 | release 狀態不代表未來不再演進 |
| Codex V2 tool schema,commit 61a4488 | 2026-07-26 | fork_turns 與 delegation guidance |
實作快照,可能隨 rollout 漂移 |
| Ryan Lopopolo:Harness engineering | 2026-02-11 | worktree 可啟動、短 AGENTS、機械規則與驗收 | 團隊自陳績效不泛化 |
| OpenAI Symphony、公開 repo | 文章 2026-04-27;repo 查證快照 2026-07-26,更新日 UNVERIFIED | issue DAG、workspace、telemetry、human-review gate | preview/參考實作;範例數值非建議值 |
| Simon Willison:Parallel coding agents、Proven to work | 2025-10-05/2025-12-18 | scout、review 瓶頸、測試+人工證明 | 跨 harness 的具名個人實踐 |
| Peter Steinberger:Just Talk To It、現行 agent-scripts | 2025-10-14/持續更新 | blast radius、brief、review loop、現行 worktree 紀律 | 同 checkout 作法只列歷史反例;主觀比較不作成效 |
| Jesse Peplinski:Worktrees with Codex | 2026-05-18 | port/server ownership 與 integration checks | 個人流程 |
| Jesse Vincent/Prime Radiant:Superpowers v6.2.0、成本 issue #1152 | v6.2.0:2026-07-23;issue:2026-04-13 | 獨立任務、ledger、review circuit breaker;重建 context 的成本風險 | 第三方跨 harness 方法;issue 是 aIacoella 在 Superpowers 5.0.7/Codex 0.120.0 的單一自陳,無 token 數或對照組 |
| Claude Subagents、Worktrees、Agent Teams、Costs | 頁面未標發布日;查證 2026-07-26 | fresh/fork、CLI worktree、teams 與成本的公平比較 | teams 是 experimental;不推論模型勝負 |
目前仍是 UNVERIFIED 的事
沒有公開、同任務、同模型層級、同驗收標準的資料,能證明 Claude 或 Codex 在多代理速度、品質或總成本上普遍勝出;也沒有可泛化的「高手應同時開 N 位 agent」數字。GitHub issue 只能證明有人回報,open issue 也不是 roadmap 承諾。