Codex 工作流程
針對本地 Codex App Server 執行 Claude Code 動態工作流程腳本。編寫方式與原生動態工作流程完全相同 — 使用 export const meta 加上包含 agent()、parallel()、pipeline()、phase()、log()、args、budget、workflow() 的內容 — 但每個 agent() 呼叫會以一個 Codex (GPT) 執行緒+回合執行,而非 Claude 子代理。
僅能手動調用。 Claude 不會自動觸發此技能 (disable-model-invocation: true);僅在使用者輸入 /codex-workflows 或明確要求 Codex 工作流程時才會執行。一旦調用,請依照下方循環進行 — 所有工作將由 Codex/GPT 代理執行。如果使用者實際上想要 Claude 子代理,請告知並引導他們使用原生 Workflow 工具。
下方的 RUNNER 指的是捆綁的執行器目錄:runner/(相對於此技能的基礎目錄,載入技能時會顯示)。若是經典的 skills-dir 安裝,路徑為 ~/.claude/skills/codex-workflows/runner — 下方範例中的文字路徑假設此安裝方式;若此技能以插件形式安裝,請替換為你的基礎目錄。它依賴 Node ≥ 18,無其他套件。
預設粗略意圖模式
一兩句粗略描述就足夠。 你不需要為此技能提供完整的工程規格 — 描述你想要的內容(例如 /codex-workflows 先強化這個目標,我再執行),技能就會自行將其編譯成可運作的框架:它會分類任務、選擇最小可行規模、原型、框架模式,建立任務合約、組合階段、分配角色、應用品質/認知標準、編寫腳本、選擇安全執行設定,然後執行 — 過程中會說明其假設。
在此模式下的運作規則:
- 粗略意圖即合約。對任何未指定的內容做出合理假設並說明;不要用後續問題打擾使用者。
- 選擇最小可用的框架,而非最大可能的那個(參見反過度建構規則)。
- 不要產生一個巨大的提示要求使用者貼回。 直接編譯並繼續編寫/執行。(唯一的例外是
prompt-only模式 — 參見模式偵測。) - 這取代了任何外部的「元提示」:現在擴張發生在技能內部。下方 將粗略意圖編譯成工作流程 整個小節就是那個編譯器。
預設執行檢查清單
每次執行,依序進行(下方各小節會詳細說明每個步驟):
- 預檢 Codex 一次 (
handshake.js);記錄最新的 frontier 模型。 - 編譯粗略意圖:分類任務 → 規模 → 原型 → 模式(命名其避免的失敗模式) → 任務合約。說明你的假設。
- 編寫腳本到儲存庫中 (
./<name>.workflow.js)。 - 設定:
--frontier· 根據規模設定 effort (--effort medium用於quick_harness,--auto-effort用於standard/deep) · 除非需要寫入否則使用--sandbox read-only· 設定有上限的--budget· 嚴格 schema (additionalProperties:false)。 - 評估規模 — 對於昂貴或複雜的工作流程,先執行
--plan。 - 在 Codex 執行器上執行(絕不使用原生
Workflow工具)。 - 呈現 — 內嵌 ASCII 地圖 +
summarize-run重點摘要;引用腳本、日誌、檢視器、報告和執行摘要的路徑(參見輸出行為)。
模式偵測
根據使用者措辭讀取模式,然後據此行為:
| 模式 | 觸發條件 | 行為 |
|---|---|---|
| 預設 (粗略意圖) | 1–2 句粗略描述 | 內部編譯 → 編寫 → 執行。說明假設。 |
--multi (艦隊) | --multi 標誌,或「艦隊」/「一次執行多個工作流程」 | 編譯艦隊計畫(2–4 個並行變體工作流程,相似且/或相異),在背景啟動它們,並監督:輪詢 fleet status、回答閘道、轉向、終止、分叉,然後綜合結果。參見艦隊模式。 |
prompt-only | 「僅提示」、「僅調用」、「不要執行」 | 輸出完整的 /codex-workflows 調用/規格(下方的 A–L 結構)並停止 — 不編寫也不執行。 |
write-only | 「編寫但不執行」、「僅編寫」 | 編寫工作流程腳本,列印其路徑,在執行前停止。 |
run-existing | 給定腳本路徑或已儲存的工作流程名稱 | 跳過編譯;直接透過執行器執行該腳本/名稱。 |
quick | 「快速」、「小型」、「便宜」 | 偏向使用 quick_harness(2–5 個代理)。 |
deep | 「深入」、「徹底」、「詳盡」 | 允許較大的 / deep_harness;證明規模的合理性。 |
no-write | 「不要寫入檔案」、「只要告訴我」 | 僅回傳最終 JSON/Markdown;無報告/來源檔案;--sandbox read-only。 |
兩個優先順序規則:如果使用者給出腳本路徑或已儲存的名稱,則執行它(不重新編譯)。如果使用者給出詳細規格,則照著執行,但仍套用下方的安全性和執行預設值。否則視為粗略意圖 → 編譯。
在 prompt-only 模式下,你輸出的調用遵循技能內部建構的相同 A–L 結構:A 名稱 · B 目的 · C 任務合約 · D 輸入/上下文重建 · E 階段 · F 角色 · G 反包裝標準 · H 輸出 · I 執行設定 · J 安全性/認知 · K 最終回應格式 · L 產品化。然後停止 — 不執行。
循環
在預設粗略意圖模式下,安靜地執行步驟 1–2,並在編寫前說明你的假設。下方的機制 — 握手、執行命令、內嵌地圖 — 保持不變;步驟 2 和 4 是粗略意圖被編譯的地方。
-
預檢 — 每個工作階段一次,或每當執行無法連線時,確認 Codex 可達且已認證:
node ~/.claude/skills/codex-workflows/runner/test/handshake.js它會列印
state: ready以及可用的模型。如果失敗,告訴使用者執行codex login(執行器需要在 PATH 上有已登入的codexCLI)。從該列表中,記錄最新的 frontier 模型 — 最新的旗艦通用模型(不是-mini/-spark變體;model/list會將其標記為isDefault,且其描述稱其為最強)。GPT-5.6 Codex 系列為 Sol(旗艦)、Terra(平衡)和 Luna(高效);目前 frontier 是gpt-5.6-sol。執行中的每個代理都使用它(參見模型)。 -
編譯粗略意圖成工作流程(參見將粗略意圖編譯成工作流程):分類任務 → 選擇規模 → 選擇原型 → 選擇模式並命名其避免的失敗模式 → 建立任務合約 → 組合階段 → 分配角色 → 套用標準。將產生的假設在編寫前告知使用者。
-
編寫一個從編譯結果而來的工作流程腳本(參見編寫)。將其寫入使用者的專案中,以便他們可以閱讀和重新執行 —
./<name>.workflow.js,或workflows/<name>.workflow.js/examples/harness-zoo/<name>/(適用於可重複使用的框架)。腳本是純 JavaScript,僅使用注入的全域變數(無匯入)。 -
選擇執行設定(參見執行預設值):
--frontier,針對所選規模的 effort 標誌(標準/深入框架用--auto-effort,快速框架用--effort medium),除非執行需要寫入否則使用唯讀沙箱,以及有上限的--budget。對於昂貴或複雜的工作流程,先執行--plan— 這是一個不消耗 token 的乾執行,計算每個階段/effort 的代理數量並估算--budget。 -
執行它 — 總是傳入
--frontier,再加上針對所選規模的 effort 標誌:標準/深入框架用--auto-effort(它會根據每個代理所屬層級的並行寬度來縮放其 effort,因此孤立的合成/評判閘道思考最努力),或快速框架用--effort medium(參見Effort)。--frontier將每個代理固定為最新的 frontier 模型(參見模型):node ~/.claude/skills/codex-workflows/runner/bin/run-workflow.js <script.js> --frontier --auto-effort [其他標誌] # quick_harness: … <script.js> --frontier --effort medium [其他標誌]進度會串流到 stderr;工作流程的回傳值會以 JSON 格式列印到 stdout。當結果很大時,捕獲 stdout 到檔案(
… 1>/tmp/result.json)。若要即時觀看執行,請加上--tui(在新終端機視窗中的即時 ASCII 地圖)和/或--gui(瀏覽器中的即時 HTML 檢視器)— 參見執行 → 即時監控。 -
呈現結果給使用者(參見輸出行為)— 摘要,提及腳本路徑,並在對話中內嵌執行結果的 ASCII 地圖,讓他們原生看到執行圖形(無需開啟視窗):
node ~/.claude/skills/codex-workflows/runner/bin/map-run.js --journal <journal> --no-color(
<journal>是執行記錄的✎ journal: …路徑,預設為.workflow-journal/<name>.jsonl。)將該輸出貼到你的回覆中,放在```text區塊內 — 它包含協調器 → 階段層級 → 代理網格 → 結果 DAG,以及每個代理的 model/effort/tokens/time 和一行結果摘要。對話中一律使用--no-color(原始 ANSI 在聊天中會顯示為亂碼)。對於即時、工作階段內的監控,使用run_in_background執行工作流程,並在執行期間重新渲染此快照幾次(正在執行的代理顯示為⠋ … running…);若要改用流暢的即時視窗,則加上--tui/--gui(參見執行 → 即時監控)。執行結束時也會列印一行成本/可靠性摘要。若要取得更詳細的細目 — 按階段的 token、成本最高/最慢的代理,以及任何紅旗(許多 null、未分階段的巨大扇出、預設 effort 成本)— 在日誌上執行
summarize-run並將重點摺疊到你的回覆中(參見摘要執行)。
使用此技能時,請勿調用原生的 Workflow 工具。 編寫腳本並透過上述 CLI 執行,正是將工作路由到 Codex 的方式;調用原生工具會產生 Claude 子代理。
艦隊模式 (--multi):啟動、監督、轉向
當使用者傳入 --multi(或要求一個艦隊 / 一次執行多個工作流程)時,你是 N 個並行執行的操作員 — 而非發射後不理的啟動器。你編譯艦隊計畫,在背景啟動每個變體,然後執行監督循環:輪詢狀態、回答閘道、轉向偏離的 worker、終止死路、分叉有前景的線索,並在最後綜合結果。人類設定一次政策(目標、總預算、風險承受度);你做出變體無法自行做出的執行中判斷決策。
1 · 編譯艦隊計畫
將意圖分解為 2–4 個變體,並在啟動前說明計畫(變體、每個變體的賭注、每個執行的預算)。兩個軸向,可自由混合:
- 相似 — 相同框架,不同切片:透過
--args將大輸入拆分到各執行,或從不同起始假設/種子攻擊同一問題。一個腳本 + 每個執行各自的--args+--run-id(讓日誌不會衝突),或 N 份腳本副本。 - 相異 — 不同的框架形狀,針對任務的不同理論下注:例如
loop_until_dry錯誤搜尋 vsadversarial_verification掃描 vssessionful_controller_loop調查,全都針對同一目標。每個變體一個腳本。
將使用者的整體預算分配到各變體(狀態會顯示每個執行相對於其上限的花費)。根據現有的 GPT-5.5 測量結果,現實地估算大量讀取的扇出: 一個負責讀取 repo/程式碼庫 的代理,無論其 effort 等級如何,成本約為 ~400–600k tokens — 輸入佔主導,因此 --effort low 並不會讓掃描變便宜,而 --plan 按 effort 的估算會低估它(測量:四次「低」掃描 = 2.1M,每次 525k,而計畫估算為 150k/代理)。在 xhigh 等級(--auto-effort 會給予每個會話 worker 的回合,寬度 1)時,一個讀取回合約為 ~1–1.5M(測量:一個導覽 worker 的第一回合 + 一次轉向觸發了 2.5M 的上限)。預算 ≈ 讀取者數量 × 500k + xhigh 讀取回合數 × 1.2M + 非讀取者 × 計畫估算,並保留餘裕。觸發上限是可恢復的(--resume 會免費重播前綴),但代價是一次監督往返。也對艦隊套用反過度建構規則:2 個良好區分的變體勝過 4 個冗餘的 — 每個變體必須押注在其他變體沒有的東西上。
2 · 為監督編寫
每個變體都包含監督者檢查點 — human() 閘道,位於外部判斷可以重新導向執行路徑的關鍵點:
const directive = await human(
`第 ${round} 輪結果:${summary}。下一輪的指示?`,
{ id: `round${round}`, choices: ["continue", "stop"], default: "continue", timeoutMs: 240_000 })
if (directive === "stop") break
if (directive !== "continue") await worker.steer(directive) // 自由文字 = 轉向指令
這是轉向通道:自由文字回答就是指令,腳本會套用它(session.steer(...),重新調整下一輪的方向,縮小範圍)。在回合之間、昂貴階段之前以及不確定的情況下放置閘道。預設值必須安全 — 一個未回答的閘道會超時並套用其預設值,執行會以無人值守方式降級,絕不卡住。(這使用日誌化的 human() 通道,因此 --resume 會重播回答而非重新詢問。)
3 · 啟動 — 每個艦隊一個目錄,每個執行在背景中
變體共享一個目錄(這就是 fleet status <dir> 監督的方式)。使用 run_in_background 啟動每個變體,一律加上 --interactive(它會啟用無頭回答通道):
node ~/.claude/skills/codex-workflows/runner/bin/run-workflow.js hunt-orm.workflow.js \
--frontier --auto-effort --interactive --budget 1500000 1>hunt-orm.result.json
# 相同腳本,不同切片 → 使用 --run-id 隔離:
node …/run-workflow.js hunt.workflow.js --args '{"slice":"auth"}' --run-id auth --interactive …
4 · 監督 — 循環
在其他工作之間輪詢艦隊摘要(並在閘道可能待處理時立即處理)