Communitygithub.com

scasella/claude-dynamic-workflows-codex

在本地 Codex App Server 上執行動態工作流程腳本 — 用多個 Codex / GPT 代理(agent / parallel / pipeline / phase / budget DSL)取代 Claude 子代理,進行程式碼庫稽核、大型遷移及多代理審查或研究。只需給一兩句粗略描述,它就會為你編譯出合適的框架;加上 --multi 即可啟動受監督的並發工作流程艦隊。僅能透過 /codex-workflows 手動調用。

claude-dynamic-workflows-codex 是什麼?

這個技能讓 Claude Code 使用者能透過 Codex App Server 執行動態工作流程,利用 GPT 代理(如 GPT-5.6 Sol)而非 Claude 子代理來處理大型任務。它接受簡潔的粗略意圖描述,自動編譯成可運行的腳本,支援多種模式:預設粗略意圖模式、艦隊模式(--multi)、僅提示模式、僅寫入模式等。技能包含完整的執行生命週期:預檢 Codex 連線、編譯意圖、編寫腳本、設定參數(如 front-tier 模型、effort 等級、sandbox 唯讀、預算限制)、執行並呈現結果(內嵌 ASCII 地圖與摘要)。支援 Codex 動態工作流程的所有 DSL 原語(agent, parallel, pipeline, phase, budget 等),且能安全處理人機協作閘道(human gates)與斷線恢復(--resume)。

相容平台✓Claude Code✓Codex CLI✓Cursor✓Antigravity
npx skills add scasella/claude-dynamic-workflows-codex

在你喜歡的 AI 中提問

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

說明文件

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 模式 — 參見模式偵測。)
  • 這取代了任何外部的「元提示」:現在擴張發生在技能內部。下方 將粗略意圖編譯成工作流程 整個小節就是那個編譯器。

預設執行檢查清單

每次執行,依序進行(下方各小節會詳細說明每個步驟):

  1. 預檢 Codex 一次 (handshake.js);記錄最新的 frontier 模型。
  2. 編譯粗略意圖:分類任務 → 規模 → 原型 → 模式(命名其避免的失敗模式) → 任務合約。說明你的假設。
  3. 編寫腳本到儲存庫中 (./<name>.workflow.js)。
  4. 設定: --frontier · 根據規模設定 effort (--effort medium 用於 quick_harness,--auto-effort 用於 standard/deep) · 除非需要寫入否則使用 --sandbox read-only · 設定有上限的 --budget · 嚴格 schema (additionalProperties:false)。
  5. 評估規模 — 對於昂貴或複雜的工作流程,先執行 --plan。
  6. 在 Codex 執行器上執行(絕不使用原生 Workflow 工具)。
  7. 呈現 — 內嵌 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 是粗略意圖被編譯的地方。

  1. 預檢 — 每個工作階段一次,或每當執行無法連線時,確認 Codex 可達且已認證:

    node ~/.claude/skills/codex-workflows/runner/test/handshake.js
    

    它會列印 state: ready 以及可用的模型。如果失敗,告訴使用者執行 codex login(執行器需要在 PATH 上有已登入的 codex CLI)。從該列表中,記錄最新的 frontier 模型 — 最新的旗艦通用模型(不是 -mini/-spark 變體;model/list 會將其標記為 isDefault,且其描述稱其為最強)。GPT-5.6 Codex 系列為 Sol(旗艦)、Terra(平衡)和 Luna(高效);目前 frontier 是 gpt-5.6-sol。執行中的每個代理都使用它(參見模型)。

  2. 編譯粗略意圖成工作流程(參見將粗略意圖編譯成工作流程):分類任務 → 選擇規模 → 選擇原型 → 選擇模式並命名其避免的失敗模式 → 建立任務合約 → 組合階段 → 分配角色 → 套用標準。將產生的假設在編寫前告知使用者。

  3. 編寫一個從編譯結果而來的工作流程腳本(參見編寫)。將其寫入使用者的專案中,以便他們可以閱讀和重新執行 — ./<name>.workflow.js,或 workflows/<name>.workflow.js / examples/harness-zoo/<name>/(適用於可重複使用的框架)。腳本是純 JavaScript,僅使用注入的全域變數(無匯入)。

  4. 選擇執行設定(參見執行預設值):--frontier,針對所選規模的 effort 標誌(標準/深入框架用 --auto-effort,快速框架用 --effort medium),除非執行需要寫入否則使用唯讀沙箱,以及有上限的 --budget。對於昂貴或複雜的工作流程,先執行 --plan — 這是一個不消耗 token 的乾執行,計算每個階段/effort 的代理數量並估算 --budget。

  5. 執行它 — 總是傳入 --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 檢視器)— 參見執行 → 即時監控。

  6. 呈現結果給使用者(參見輸出行為)— 摘要,提及腳本路徑,並在對話中內嵌執行結果的 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 錯誤搜尋 vs adversarial_verification 掃描 vs sessionful_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 · 監督 — 循環

在其他工作之間輪詢艦隊摘要(並在閘道可能待處理時立即處理)

相關技能