最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Codex三種任務(wù)調(diào)度模式實戰(zhàn)指南:串行、并行、SDD

  發(fā)布時間:2026-07-17 17:16:11   作者:Java小白筆記   我要評論
Codex 本質(zhì)上是一個 agent,它的上下文窗口有限,串行處理是默認(rèn)行為,當(dāng)你需要它處理多個任務(wù)或完成一個復(fù)雜功能時,主動選擇調(diào)度模式是效率的關(guān)鍵,本文覆蓋三種模式,每種都有具體的使用方法和完整示例,需要的朋友可以參考下

TL;DR: 小活用串行,獨立任務(wù)用并行,大功能用 SDD。選對模式,效率差 3-5 倍。

一、為什么需要理解調(diào)度模式

用 Codex 干活,最常見的問題是:“我給了它三件事,它怎么一件一件做,做到第二件就忘了第一件?” 或者 “這個功能涉及六個文件,它改到一半上下文就爆了。”

這些問題的根源都是調(diào)度模式選錯了。

Codex 本質(zhì)上是一個 agent,它的上下文窗口有限,串行處理是默認(rèn)行為。當(dāng)你需要它處理多個任務(wù)或完成一個復(fù)雜功能時,主動選擇調(diào)度模式是效率的關(guān)鍵。

本文覆蓋三種模式:串行(默認(rèn))、并行(dispatching parallel agents)、SDD(subagent-driven development),每種都有具體的使用方法和完整示例。

二、三種模式速覽

維度串行模式并行模式SDD 模式
適用場景有依賴關(guān)系的任務(wù)鏈2+ 個獨立任務(wù)一個大的多步驟功能
執(zhí)行方式順序執(zhí)行多個 subagent 同時跑逐 task 串行派發(fā)
上下文共享同一會話每個 agent 隔離每個 subagent 隔離
質(zhì)量門禁無額外審查無額外審查每 task 有 reviewer + 最終全量 review
文件沖突風(fēng)險低(順序做)高(并行改文件)低(串行做)
中斷恢復(fù)依賴會話上下文ledger 文件支持?jǐn)帱c續(xù)跑
成本高(implementer + reviewer)
你需要做的直接說標(biāo)注"并行"給需求 + 說"用 SDD"

決策流程圖

決策流程圖

三、串行模式(默認(rèn))

3.1 什么是串行模式

串行模式是 Codex 的默認(rèn)行為:你給它任務(wù),它按順序一件一件做。所有操作共享同一個上下文窗口。

你不需要做任何特殊操作,正常說話就是串行。

3.2 適用場景

  • 任務(wù)之間有先后依賴(先查代碼,再改代碼,再跑測試)
  • 單一功能開發(fā),改動范圍?。?-3 個文件)
  • 探索性工作(不確定要做什么,需要邊看邊做)
  • 簡單的批量操作(重命名文件、批量添加注釋)

3.3 使用方法

直接說,不需要任何特殊語法:

幫我把 src/tools/send_message.py 中的 print() 全部替換成 logging.info()
讀一下 src/mcp_server.py,找到處理超時的那個函數(shù),把超時時間從 30s 改成 60s
先跑一遍 ruff check src/,然后把所有 lint 報錯修掉

3.4 完整示例

場景: 重構(gòu) send_message.py,提取公共方法。

你的指令:

幫我重構(gòu) src/tools/send_message.py:
1. 把重復(fù)的 HTTP 請求邏輯提取成 _make_request() 方法
2. 給所有公開函數(shù)加上類型注解
3. 跑一遍 pytest 確保沒改壞

Codex 的執(zhí)行過程:

Step 1: 讀取 src/tools/send_message.py,分析代碼結(jié)構(gòu)
Step 2: 識別重復(fù)的 HTTP 請求邏輯
Step 3: 提取 _make_request() 方法
Step 4: 替換原有重復(fù)代碼
Step 5: 添加類型注解
Step 6: 運行 pytest 驗證

所有步驟在同一個上下文中完成,Codex 能看到每一步的結(jié)果。

3.5 串行的局限

問題原因影響
上下文窗口耗盡任務(wù)太多,前面的信息被擠出后面的任務(wù)"忘了"前面的要求
效率低順序執(zhí)行,無法利用并行能力3 個獨立任務(wù)花 3 倍時間
質(zhì)量無保障沒有獨立 review 環(huán)節(jié)做完就算完,容易有遺漏

四、并行模式(重點)

4.1 核心機(jī)制

并行模式的本質(zhì)是我(Codex)作為 controller,同時派發(fā)多個 subagent,每個 subagent 處理一個獨立的任務(wù)域。它們在同一個時間窗口內(nèi)并發(fā)執(zhí)行,我最后整合所有結(jié)果。

4.1 核心機(jī)制

4.2 并行的硬性條件

不是所有任務(wù)都能并行。必須同時滿足以下所有條件:

條件說明違反后果
任務(wù)之間無數(shù)據(jù)依賴B 不需要 A 的輸出B 拿到過時信息,做出錯誤修改
不改同一個文件兩個 agent 同時改 file.py后提交的覆蓋先提交的
不改同一個配置同時改 pyproject.toml合并沖突
邊界清晰每個任務(wù)的范圍可以一句話描述agent 越界,互相干擾

簡單判斷法: 如果你能把每個任務(wù)分配給不同的人在不同電腦上做,那就能并行。

4.3 觸發(fā)方式

方式一:顯式標(biāo)注"并行"

并行處理以下任務(wù):
1. 重構(gòu) src/tools/send_message.py,提取公共方法
2. 給 src/tools/get_contacts.py 補全單元測試(覆蓋率 > 80%)
3. 更新 README.md 中的 API 文檔部分

方式二:用自然語言描述獨立性

有三件事要做,它們互不影響,你看著并行搞:
- send_message.py 的性能優(yōu)化
- get_contacts.py 的測試補全
- 文檔更新

方式三:讓我自己判斷

幫我做這幾件事:
1. xxx
2. xxx
3. xxx

如果你不加"并行",我默認(rèn)串行執(zhí)行。但如果你列出的任務(wù)明顯獨立(改不同文件),我可能會主動提議并行,問你一句"這幾個任務(wù)互不影響,要并行處理嗎?"

4.4 完整示例

場景: 項目需要做三件獨立的事。

你的指令:

并行處理:
1. src/tools/send_message.py:把 print() 替換成 logging,統(tǒng)一日志格式
2. tests/test_get_contacts.py:補全缺失的邊界測試用例
3. docs/api.md:根據(jù)當(dāng)前代碼更新 API 文檔

Codex 的內(nèi)部調(diào)度過程:

[Controller] 分析任務(wù)依賴關(guān)系:
  - Task 1 改 src/tools/send_message.py
  - Task 2 改 tests/test_get_contacts.py
  - Task 3 改 docs/api.md
  → 三個文件無交集,可以并行

[Controller] 同時派發(fā) 3 個 subagent:
  ┌─ Subagent A: "重構(gòu) send_message.py 日志"
  ├─ Subagent B: "補全 get_contacts 測試"
  └─ Subagent C: "更新 API 文檔"

[Subagent A] 完成:替換了 12 處 print → logging,添加了統(tǒng)一 formatter
[Subagent B] 完成:新增 8 個測試用例,覆蓋率 78% → 89%
[Subagent C] 完成:更新了 3 個 API 的參數(shù)說明,添加了示例

[Controller] 整合檢查:
  - git diff --name-only:確認(rèn)沒有文件被多個 agent 同時修改 ?
  - 運行 pytest:全部通過 ?
  - 運行 ruff check:無新增 lint 錯誤 ?

結(jié)果: 三個任務(wù)在約等于一個任務(wù)的時間內(nèi)完成。

4.5 并行的常見錯誤

錯誤 1:任務(wù)邊界模糊

并行處理:
1. 重構(gòu) src/tools/ 下所有模塊
2. 給 src/tools/ 添加單元測試

問題:兩個任務(wù)都涉及 src/tools/,改同一批文件會沖突。

修正:

并行處理:
1. 重構(gòu) src/tools/send_message.py(只改這個文件)
2. 給 src/tools/get_contacts.py 添加單元測試(只改測試文件)

錯誤 2:隱藏依賴

并行處理:
1. 修改 config.yaml 中的數(shù)據(jù)庫連接配置
2. 更新所有讀取 config.yaml 的模塊

問題:Task 2 依賴 Task 1 改了什么配置。

修正:先做 Task 1,再做 Task 2(串行)。

錯誤 3:粒度太細(xì)

并行處理:
1. 把第 23 行的變量名改成 request_timeout
2. 把第 45 行的變量名改成 max_retries

問題:改同一個文件,而且粒度太細(xì)沒必要開 subagent。

修正:直接串行,一個 apply_patch 就搞定。

4.6 并行的最佳實踐

實踐說明
每個任務(wù)指定文件范圍“只改 send_message.py” 比 “優(yōu)化發(fā)送模塊” 更安全
任務(wù)數(shù) 2-5 個太少沒必要并行,太多難以整合
任務(wù)粒度適中一個獨立文件/模塊/子系統(tǒng)是一個好的粒度
完成后跑全量測試即使每個 agent 都測過了,整合后也可能有意外
明確說"并行"一個關(guān)鍵詞就夠,不要讓我猜

4.7 工具級并行(自動)

除了任務(wù)級并行,還有一種更輕量的并行:工具調(diào)用級并行。這是我默認(rèn)就做的,不需要你操心。

比如你讓我讀 5 個文件,我不會一個一個讀,而是 5 個 cat 同時發(fā)出。你讓我跑 3 個搜索,3 個 rg 同時發(fā)出。

# 我會自動并行執(zhí)行這些操作:
讀取 src/tools/send_message.py    ┐
讀取 src/tools/get_contacts.py    ├─ 同時發(fā)出,同時返回
讀取 src/tools/create_group.py   ┘

這種并行對你來說是透明的,不需要特別操作。

五、SDD 模式(重點)

5.1 什么是 SDD

SDD(Subagent-Driven Development)是 Codex 的重量級開發(fā)模式。它不是簡單的"幫我寫代碼",而是一套完整的開發(fā)流程管理系統(tǒng)。

核心思想:我作為 controller(項目經(jīng)理),把一個完整的功能拆成多個 task,每個 task 派一個 implementer subagent 去實現(xiàn),做完再派一個 reviewer subagent 審查,有問題打回修復(fù),最后做全分支 review。

5.2 SDD 的五個角色

角色職責(zé)由誰扮演
Controller拆任務(wù)、派 subagent、整合結(jié)果、處理沖突Codex 主會話
Implementer實現(xiàn)單個 task 的代碼、寫測試、提交Subagent(隔離上下文)
Reviewer審查 implementer 的代碼,檢查需求符合度 + 代碼質(zhì)量Subagent(隔離上下文)
Fix Subagent修復(fù) reviewer 發(fā)現(xiàn)的問題Subagent(隔離上下文)
Final Reviewer對整條分支做全量審查Subagent(用最強模型)

5.3 SDD 的完整流程(六步)

Step 1:寫 Plan

Controller 把你的需求拆成獨立 task,每個 task 寫清楚:

  • 做什么(具體要求)
  • 驗收標(biāo)準(zhǔn)(怎么算做完)
  • 涉及的文件
  • 依賴關(guān)系

Plan 寫到文件中(如 docs/plans/feature-plan.md),作為后續(xù)所有 subagent 的需求來源。

Step 2:創(chuàng)建隔離工作區(qū)

建一個 git worktree + feature branch,所有改動在隔離分支上做,不污染 main。

Step 3:逐 Task 派發(fā)

對每個 task,controller 執(zhí)行:

1. task-brief 腳本提取 task 描述 → brief 文件
2. 派發(fā) implementer subagent(附 brief 路徑 + 上下文)
3. implementer 實現(xiàn)代碼、寫測試、提交
4. implementer 寫 report → report 文件
5. review-package 腳本生成 diff 文件
6. 派發(fā) reviewer subagent(附 brief + report + diff)
7. reviewer 通過 → 標(biāo)記 task 完成
8. reviewer 發(fā)現(xiàn)問題 → 派發(fā) fix subagent → 重新 review

Step 4:全分支 Review

所有 task 完成后,用 review-package 生成整條分支的 diff,派一個 final reviewer 做全量審查。

Step 5:收尾

finishing-a-development-branch 決定是 merge 到 main 還是提 PR。

Step 6:進(jìn)度追蹤

整個過程有一個 .superpowers/sdd/progress.md ledger 文件,記錄每個 task 的狀態(tài)和 commit SHA。即使會話中斷、上下文壓縮,controller 也能從 ledger 恢復(fù),不會重復(fù)做已完成的任務(wù)。

5.4 觸發(fā)方式

方式一:明確說"用 SDD"

用 SDD 做:給 WeChat MCP server 加群聊管理功能,包括建群、拉人、踢人、發(fā)群公告。
先寫 plan,確認(rèn)后再執(zhí)行。

"先寫 plan"意味著你想看一下任務(wù)拆分是否合理,確認(rèn)后再讓我跑。

方式二:全自動模式

用 SDD 做:給 WeChat MCP server 加群聊管理功能(建群、拉人、踢人、發(fā)群公告)。
plan 你自己判斷,不用給我確認(rèn),直接跑。

這樣我全程自動執(zhí)行,只在遇到真正需要你決定的問題才打斷你。

方式三:分階段控制

第一步:用 writing-plans 幫我寫一個群聊管理功能的 plan。

看完 plan 后:

第二步:用 SDD 執(zhí)行這個 plan。

5.5 完整示例

場景: 給 WeChat MCP server 添加好友管理功能。

你的指令:

用 SDD 做:給 WeChat MCP server 加三個好友管理工具:
1. search_contact - 按關(guān)鍵字搜索聯(lián)系人
2. add_friend - 發(fā)送好友請求
3. accept_friend - 接受好友請求

先給我看 plan。

Step 1:Controller 生成的 Plan

# Plan: 好友管理功能

## 全局約束
- Python 3.10+,Ruff 格式化,類型注解
- 每個工具必須有輸入校驗
- 測試覆蓋率 > 80%
- 日志用 logging 模塊,不用 print

## Task 1: search_contact 工具
- 創(chuàng)建 src/tools/search_contact.py
- 實現(xiàn)關(guān)鍵字搜索,支持姓名和備注名
- 參數(shù):keyword (str), limit (int, 默認(rèn) 20)
- 返回:匹配的聯(lián)系人列表
- 測試:tests/test_search_contact.py
- 驗收:正常搜索 + 空結(jié)果 + 特殊字符搜索

## Task 2: add_friend 工具
- 創(chuàng)建 src/tools/add_friend.py
- 實現(xiàn)發(fā)送好友請求
- 參數(shù):contact_id (str), message (str, 可選)
- 返回:請求狀態(tài)
- 測試:tests/test_add_friend.py
- 驗收:正常發(fā)送 + 重復(fù)請求 + 無效 ID

## Task 3: accept_friend 工具
- 創(chuàng)建 src/tools/accept_friend.py
- 實現(xiàn)接受好友請求
- 參數(shù):request_id (str)
- 返回:接受狀態(tài)
- 測試:tests/test_accept_friend.py
- 驗收:正常接受 + 已處理請求 + 無效 ID

## Task 4: 注冊工具 + 集成測試
- 在 src/mcp_server.py 中注冊三個新工具
- 添加集成測試驗證工具注冊和調(diào)用流程

你說 “plan 沒問題,開始執(zhí)行” 后:

Step 2:Controller 創(chuàng)建 worktree

git worktree add ../feature-friend-management -b feat/friend-management

Step 3:逐 Task 執(zhí)行

======= Task 1: search_contact =======

[Controller] 提取 task brief → .superpowers/sdd/task-1-brief.md
[Controller] 派發(fā) implementer(選標(biāo)準(zhǔn)模型)

  [Implementer] 讀取 brief,理解需求
  [Implementer] 寫測試(TDD)
  [Implementer] 實現(xiàn) search_contact 函數(shù)
  [Implementer] 跑 pytest: 6/6 通過
  [Implementer] 提交 commit: a1b2c3d
  [Implementer] 寫 report → .superpowers/sdd/task-1-report.md
  [Implementer] 狀態(tài): DONE

[Controller] review-package → .superpowers/sdd/task-1-review.diff
[Controller] 派發(fā) reviewer

  [Reviewer] 需求符合度: 全部滿足
  [Reviewer] 代碼質(zhì)量: 通過
  [Reviewer] 發(fā)現(xiàn): keyword 參數(shù)未做長度校驗 (Minor)

[Controller] Minor 問題,記錄到 ledger,最后統(tǒng)一處理

======= Task 2: add_friend =======

[Controller] 提取 task brief → .superpowers/sdd/task-2-brief.md
[Controller] 派發(fā) implementer

  [Implementer] 實現(xiàn) add_friend 函數(shù)
  [Implementer] 跑 pytest: 5/5 通過
  [Implementer] 提交 commit: d4e5f6a
  [Implementer] 狀態(tài): DONE

[Controller] 派發(fā) reviewer

  [Reviewer] 需求符合度: 不通過
  [Reviewer] 問題: 缺少重復(fù)請求檢測, spec 要求返回明確狀態(tài) (Critical)

[Controller] 派發(fā) fix subagent

  [Fixer] 添加重復(fù)請求檢測邏輯
  [Fixer] 跑 pytest: 6/6 通過
  [Fixer] 提交 commit: g7h8i9j

[Controller] 重新派發(fā) reviewer

  [Reviewer] 需求符合度: 全部滿足
  [Reviewer] 代碼質(zhì)量: 通過

======= Task 3: accept_friend =======
... (類似流程)

======= Task 4: 注冊 + 集成測試 =======
... (類似流程)

Step 4:全分支 Review

[Controller] review-package merge-base..HEAD → 全分支 diff
[Controller] 派發(fā) final reviewer(用最強模型)

  [Final Reviewer] 三個工具的代碼風(fēng)格一致 ?
  [Final Reviewer] 所有輸入都有校驗 ?
  [Final Reviewer] Task 1 的 keyword 長度校驗 (Minor) → 需要修復(fù)
  [Final Reviewer] 集成測試覆蓋了主流程 ?

[Controller] 派發(fā)一個 fix subagent 修復(fù)所有 minor 問題
[Controller] 重新跑全量測試 ?

Step 5:收尾

[Controller] 功能開發(fā)完成,所有測試通過
[Controller] 選項:
  1. 直接 merge 到 main
  2. 推遠(yuǎn)程分支,提 PR

Step 6:Ledger 記錄

# SDD Progress Ledger

Task 1: complete (commits a1b2c3d, review clean, minor: keyword length)
Task 2: complete (commits d4e5f6a..g7h8i9j, review clean after fix)
Task 3: complete (commits k1l2m3n, review clean)
Task 4: complete (commits o4p5q6r, review clean)
Final review: complete (commits s7t8u9v, minor fix applied)

5.6 SDD 的關(guān)鍵設(shè)計決策

為什么 implementer 之間是串行的?

因為多個 task 可能改同一個文件(比如都要在 mcp_server.py 注冊工具)。如果并行,后一個 implementer 的改動會覆蓋前一個。串行保證每個 implementer 看到的是最新代碼。

為什么每個 subagent 上下文隔離?

如果 implementer 共享上下文,做到 Task 3 時它已經(jīng)被 Task 1 和 Task 2 的大量細(xì)節(jié)淹沒了。隔離上下文意味著每個 subagent 只看到自己需要的信息(brief + 相關(guān)代碼),效率更高,犯錯更少。

為什么要 review 而不是直接信任 implementer?

Implementer 是"球員",reviewer 是"裁判"。球員自己覺得自己踢得好不算數(shù),需要獨立的裁判來判斷。而且 reviewer 看到的是 diff 而不是全量代碼,更容易發(fā)現(xiàn)問題。

5.7 SDD 的 Implementer 狀態(tài)機(jī)

每個 implementer 完成后會匯報四種狀態(tài)之一:

5.7 SDD 的 Implementer 狀態(tài)機(jī)

狀態(tài)含義Controller 的處理
DONE全部完成,無疑問直接進(jìn) review
DONE_WITH_CONCERNS完成但有疑慮評估疑慮嚴(yán)重性,決定是進(jìn) review 還是先處理
NEEDS_CONTEXT缺少信息補充信息,重新派發(fā)
BLOCKED無法完成換更強的模型 / 拆更小的任務(wù) / 問用戶

5.8 SDD 的 Model Selection 策略

不是所有 subagent 都需要用最貴的模型。Controller 會根據(jù)任務(wù)復(fù)雜度選擇:

任務(wù)類型推薦模型例子
機(jī)械實現(xiàn)(1-2 個文件,明確 spec)快速便宜模型提取公共方法、添加日志
集成實現(xiàn)(多文件協(xié)調(diào))標(biāo)準(zhǔn)模型注冊工具、連接模塊
架構(gòu)設(shè)計 / 最終 Review最強模型全分支審查

這能顯著降低成本,同時保證關(guān)鍵環(huán)節(jié)的質(zhì)量。

六、模式選擇決策樹

當(dāng)你不確定用哪個模式時,按這個流程判斷:

模式選擇決策樹

速查:什么時候用什么

你說實際使用的模式
“幫我改一下 xxx”串行
“先讀代碼再改”串行
“并行處理這 3 件事”并行
“這幾件事互不影響,一起搞”并行
“用 SDD 做 xxx 功能”SDD
“先寫 plan 再執(zhí)行”SDD(分階段)
“用 writing-plans 寫 plan”SDD 的第一步

七、總結(jié)與最佳實踐

核心原則

  1. 默認(rèn)串行 – 大多數(shù)任務(wù)串行就夠用
  2. 獨立任務(wù)用并行 – 關(guān)鍵詞是"并行"或"互不影響"
  3. 大功能用 SDD – 關(guān)鍵詞是"用 SDD"
  4. 文件沖突是最大風(fēng)險 – 無論哪種模式,確保任務(wù)邊界不重疊
  5. 粒度適中 – 太細(xì)沒必要拆 subagent,太粗拆不開

成本 vs 質(zhì)量權(quán)衡

串行:低成本,低質(zhì)量保障 → 適合日常小改動
并行:中成本,低質(zhì)量保障 → 適合批量獨立任務(wù)
SDD:高成本,高質(zhì)量保障 → 適合正式功能開發(fā)

不是所有任務(wù)都需要 SDD。一個改三行代碼的 bugfix 用 SDD 是殺雞用牛刀。但一個涉及 10 個文件、需要完整測試覆蓋的新功能,SDD 的額外成本是值得的。

常見誤區(qū)

誤區(qū)正確做法
所有任務(wù)都串行做獨立任務(wù)并行,效率翻倍
所有任務(wù)都想并行有依賴的任務(wù)并行會出錯
小改動也用 SDDSDD 的 overhead 對小任務(wù)不劃算
SDD 不寫 plan 直接執(zhí)行Plan 是 SDD 的靈魂,沒有 plan 的 SDD 就是高級串行
并行任務(wù)改同一批文件確保每個任務(wù)的文件范圍不重疊

以上就是Codex三種任務(wù)調(diào)度模式實戰(zhàn)指南:串行、并行、SDD的詳細(xì)內(nèi)容,更多關(guān)于Codex任務(wù)調(diào)度模式實戰(zhàn)指南的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

林口县| 乐亭县| 兰州市| 威海市| 瑞金市| 米林县| 宁明县| 怀来县| 上栗县| 韩城市| 甘孜县| 陈巴尔虎旗| 宜君县| 松溪县| 肇庆市| 小金县| 都匀市| 闵行区| 中山市| 多伦县| 黑山县| 洱源县| 曲水县| 徐水县| 抚宁县| 仲巴县| 东安县| 丰城市| 临江市| 客服| 历史| 都兰县| 三穗县| 衡南县| 磐安县| 平顺县| 都江堰市| 大渡口区| 尼勒克县| 图木舒克市| 友谊县|