Community生產力與協作github.com

0xVoidw/subagent-allocator

讀取一份已寫好的 plan.md,將其中的任務拆給子代理,並為每個子代理確定角色、模型和思考強度(effort),輸出一份新的分配文件 plan.dispatch.md。目標是在品質和效率基本不變的前提下節省額度。

subagent-allocator 是什麼?

此技能為 Claude Code、OpenAI Codex 等平台設計,用於將 plan.md 轉換為最佳化的子代理分配計劃(plan.dispatch.md)。其核心原理是區分計劃中不同任務的複雜度:大量讀取、搜尋程式碼、執行測試等簡單任務可使用較便宜的模型,只有少數需要推理或架構判斷的任務才需使用高階模型。該技能提供了五種任務標記(明確度、出錯代價、可驗證性、讀取量、影響範圍)和四個檔位(T0 輕量、T1 標準、T2 主力、T3 旗艦)來精確對應任務特性與模型能力,並支援思考強度(effort)調整。它會自動產生包含角色卡、執行順序與階段劃分的完整分配文件,並內建品質保護機制(如完成標準、審查任務、升級階梯),確保在節省額度時不犧牲結果品質。使用者可選擇「省」、「均衡」或「穩」取向,並指定目標平台為 Claude、Codex 或兩者並排輸出。

相容平台✓Claude Code✓Codex CLI~Cursor
npx skills add https://github.com/0xVoidw/subagent-allocator/tree/HEAD/skills/subagent-allocator

Installed? Explore more 生產力與協作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

子代理分配器

把一份 plan.md 變成一張可執行的分工表:誰做什麼、用哪個模型、開多大思考強度、失敗了怎麼升級。

省額度的原理很簡單:計劃裡大部分工作量其實是讀檔案、搜程式碼、跑測試、按規格改程式碼,這些不需要最貴的模型。貴模型只應該花在少數真正需要判斷力的地方。本技能的工作就是把這兩類分開。

輸入

  1. plan.md 的路徑。沒給就找目前目錄下的 plan.md / PLAN.md / PLANS.md,找不到再問。
  2. 目標平台:claude(Claude Code)、codex(OpenAI Codex)或 both。沒說明時按目前執行環境判斷;判斷不了就問一次。
  3. 取向(可選):省、均衡(預設)、穩。只影響下面第 4 步裡拿不定主意時往哪邊靠。

確定平台後,讀對應的參考檔案,裡面有該平台的具體模型名、價格比例和 effort 檔位:

  • Claude → references/claude.md
  • Codex → references/codex.md
  • both → 兩個都讀,輸出裡並排給兩套設定

模型名和價格會過時。參考檔案是唯一的事實來源,不要憑記憶填模型名。

流程

1. 讀計劃,拆成任務單元

沿用 plan.md 自己的步驟劃分,只在兩種情況下調整:

  • 拆開:一個步驟裡同時有「大量讀取/搜尋」和「做判斷/改程式碼」。把讀取部分拆出去給便宜的子代理,它只回傳摘要。
  • 合併:幾個連續的小步驟改的是同一批檔案、需要同一份上下文。合成一個任務,避免重複載入上下文。

不要過度拆分。每個子代理都有啟動開銷(重新讀上下文、寫交接說明),幾分鐘就能做完的小事讓主代理順手做掉,在文件裡標「主代理直接執行」。

2. 給每個任務打五個標記

標記問的問題取值
明確度規格是否已經寫死,照做即可?明確 / 部分 / 開放
出錯代價做錯了容易發現、容易回滾嗎?低 / 中 / 高
可驗證有沒有測試、建構、lint、腳本能自動判對錯?有 / 可補 / 無
讀取量需要讀多少材料才能動手?少 / 多
影響面改動是區域性的,還是跨模組、影響架構?區域 / 跨模組 / 架構

plan.md 裡沒寫清楚的,按最可能的情況判斷,並在輸出的「假設」一欄寫出來,不要停下來逐條問。

3. 映射到四個檔位

各平台的具體模型見參考檔案,這裡只定檔位:

檔位用於典型任務
T0 輕量明確 + 低代價 + 結果一眼能驗搜檔案、讀日誌、跑測試並回報、分類、抽取、摘要
T1 標準明確 + 區域 + 可驗證按規格實作功能、修定位好的 bug、寫測試、寫文件、UI 還原
T2 主力部分明確,或跨模組,或需要除錯判斷多檔案功能、排查原因不明的 bug、程式碼審查、整合子代理結果
T3 旗艦開放 + 架構級,或出錯代價高且無法自動驗證架構決策、大型重構的方案、多約束衝突的取捨、指揮多個子代理

判斷順序:先假設是 T1,然後看有沒有理由往下或往上。

  • 往下到 T0 的理由:任務本質是「找到並報告」,不產出要合併的程式碼。
  • 往上到 T2 的理由:明確度不是「明確」,或影響面不是「區域」。
  • 往上到 T3 的理由:必須同時滿足「開放或架構級」和「錯了代價高」。只滿足一個用 T2 加高 effort。

一份正常的計劃裡 T3 任務通常只有 0 到 2 個。如果分出來一半都是 T3,回去重新檢查拆分,多半是把「讀取」和「判斷」捆在一起了。

4. 定思考強度

effort 是比換模型更細的旋鈕,先調它。

  • 起步一律用參考檔案裡該檔位的預設起步值。
  • 可驗證 = 有:保持起步值,甚至降一檔。模型能跑測試自檢時,高 effort 的收益很小。
  • 可驗證 = 無 且 出錯代價 ≥ 中:升一檔。
  • 有人在即時等結果:降一檔,速度優先。
  • 取向為 省 時拿不定主意就取低的,穩 時取高的。

超過 high 之後,再升 effort 的花費往往接近直接換上一檔模型的低 effort。所以升級階梯寫成這樣:

  1. 先補驗證手段(給它一條能跑的測試或檢查指令)
  2. effort 升一檔,最多到 high
  3. 換上一檔模型,effort 從該檔的最低起步值開始

Codex 的 T0 是例外,它在高 effort 下 CP值 依然很好,詳見 references/codex.md。

5. 品質保護

省額度不能以返工為代價,返工比一開始用對模型更貴。下面幾條是保證「品質變化不明顯」的手段:

  • 每個任務都要有完成標準。能寫成指令的寫成指令(pytest tests/x、npm run build)。寫不出完成標準的任務,檔位升一級。
  • 改程式碼和關鍵判斷留在 T1 以上。T0 只讀不寫,或只寫不進主分支的東西(報告、清單)。
  • 便宜模型做完後,由高一檔的模型審 diff。審 diff 只讀變更部分,token 很少,卻能攔住大部分問題。在分配表裡把它列成一個獨立的審查任務,放在每個階段末尾。
  • 子代理只回傳結論。在角色說明裡規定回傳格式和長度上限(如「不超過 200 字的摘要 + 相關檔案路徑列表」),避免長輸出灌滿主代理的上下文。

6. 排執行順序

  • 互不依賴的任務標成可並行。
  • 盡量把同一模型的任務排在一起,在階段之間的自然斷點換模型。中途頻繁換模型會丟快取,等於重付一遍上下文的錢。
  • 平台特有的事項(快取歸屬、長上下文加價閾值等)見參考檔案,命中時寫進輸出的「注意事項」。

輸出

在 plan.md 同目錄寫 plan.dispatch.md,用下面的結構。任務很多時表格保留全部任務,角色卡只給子代理任務寫。

# 子代理分配:<計劃名>

來源:<plan.md 路徑> 平台:<claude / codex / both> 取向:<省 / 均衡 / 穩>

## 總覽

| # | 任務 | 執行者 | 檔位 | 模型 | effort | 依賴 | 可並行 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 1 | … | 探查員 | T0 | … | … | 無 | 與 2 |

檔位分佈:T0 ×n,T1 ×n,T2 ×n,T3 ×n
主代理:<模型> / <effort>,負責 <協調、整合、最終驗收等>

## 執行階段

### 階段 1:<名稱>(模型:…)
- 任務 1、2 並行
- 階段末審查:<誰審、審什麼>

## 角色卡

### 任務 1:<名稱>
- **角色**:<一句話定位,如「唯讀探查員:定位所有呼叫舊介面的位置」>
- **模型 / effort**:… / …
- **目標**:…
- **輸入**:<要讀的檔案、目錄、報錯資訊>
- **約束**:<不許改什麼、遵循什麼規範>
- **完成標準**:<指令或可檢查的狀態>
- **回傳格式**:<內容與長度上限>
- **升級階梯**:補驗證 → effort 升到 … → 換 … / …
- **選型理由**:<一句話,對應五個標記>

## 假設與注意事項
- <plan.md 沒寫清、由本技能推斷的地方>
- <平台相關的成本陷阱>

## 預計節省
相對「全部用主力檔預設設定」的粗略估計:<如「約一半任務降到 T0/T1,這部分單價降到 1/2 至 1/20」>

角色卡的「目標、輸入、約束、完成標準」四項就是可以直接貼給子代理的提示詞,寫的時候按能獨立看懂來寫,子代理看不到 plan.md 的其餘部分。

「預計節省」只給量級和依據,不要編造精確百分比。實際消耗取決於任務本身,建議使用者跑完後對照用量統計回頭調整。

範例

plan.md 裡有一步:

  1. 把 utils/ 下所有用 oldLogger 的地方換成 newLogger,注意有些地方傳了自訂 formatter

處理:這一步混了「找出所有呼叫點」(讀取量多、唯讀)和「替換並處理 formatter 特例」(要改程式碼、有特例需要判斷)。拆成兩個任務:

#任務執行者檔位effort理由
3a列出所有 oldLogger 呼叫點,標出帶自訂 formatter 的探查員T0起步值唯讀,漏了會被 3b 的 grep 檢查發現
3b按清單替換,formatter 特例逐個適配實作者T1起步值規格明確,完成標準是 grep -r oldLogger utils/ 為空且測試通過

如果沒有測試覆蓋 formatter 行為,3b 的 effort 升一檔,並在「假設與注意事項」裡寫明。

相關技能