上週,我們在 Claude Code 中釋出了動態工作流程。Claude 現在可以即時自行撰寫專屬的 harness,為當下任務量身打造。
雖然預設的 Claude Code harness 是為編碼設計的,但因為許多任務實際上與編碼任務相似,因此它也能適用於其他多種類型的任務。然而,對於某些特定類別的任務,我們必須在 Claude Code 之上建立自訂 harness,才能達到最佳效能,例如研究、安全性分析、Agent 團隊或程式碼審查。
工作流程讓你能動態建立 harness,使 Claude 能在 Claude Code 內部原生解決所有這些問題以及更多問題。你也可以與他人分享和重複使用這些工作流程。
在這篇文章中,我將分享我初次使用工作流程的經驗與心得,幫助你充分發揮其潛力。
話雖如此,最佳做法仍在發展中!動態工作流程通常會消耗更多 token,因此請仔細思考何時以及如何使用它們。
注意:本文也刊登於 Claude Blog
範例提示
在深入技術細節之前,我想先提供一些範例提示,讓你思考工作流程的可能性:
- 「這個測試大概每 50 次會失敗 1 次。建立一個工作流程來重現它,形成理論,並在工作目錄中對抗式地測試這些理論 /goal 直到找到一個可行的理論才停止。」
- 「使用工作流程,回顧我最近的 50 個 session,找出我一直犯的錯誤,然後把重複出現的錯誤轉換成 CLAUDE.md 規則。」
- 「使用一個工作流程翻查 Slack 上過去六個月的 #incidents,找出反覆出現的根本原因,但沒有人開 ticket 的那些。」
- 「拿我的商業計劃,執行一個工作流程,讓不同的 Agent 從投資人、客戶和競爭對手的角度來剖析它。」
- 「這裡有一份包含 80 份履歷的資料夾,使用工作流程為後端職位排序,並雙重檢查前十名。然後用 AskUserQuestion 工具根據評分標準對我進行面試。」
- 「我需要為這個 CLI 工具取個名字。使用工作流程腦力激盪一堆選項,然後進行錦標賽選出前 3 名。」
- 「使用工作流程將我們的 User 模型在所有地方重新命名為 Account。」
- 「瀏覽我的部落格文章草稿,並使用工作流程對程式碼庫驗證每一個技術聲明,我不想發布任何錯誤的內容。」
動態工作流程的運作方式
動態工作流程執行一個 JavaScript 檔案,其中包含一些特殊函數,用來啟動和協調子 Agent:

動態工作流程也包含標準的 JavaScript 函數,例如 JSON、Math 和 Array,以協助處理資料。
特別有用的是,動態工作流程可以決定 Agent 使用哪些模型,以及子 Agent 是否在自己的工作樹中執行,讓 Claude 選擇所需的智慧程度和隔離性。
如果工作流程中斷(例如因使用者操作或關閉終端機),恢復 session 後工作流程將能從中斷處繼續執行。
為什麼需要動態工作流程
當你要求預設的 Claude Code harness 執行任務時,它需要在同一個上下文視窗中同時進行規劃和執行。對於許多編碼任務來說,這樣非常高效,但在長時間執行、大量平行處理和/或高度結構化的對抗性任務中,有時會出現問題。
這是因為 Claude 在同一個上下文視窗中處理複雜任務的時間越長,就越容易出現以下幾種特定失敗模式:
- Agent 懶惰:指 Claude 在完成一項特別複雜、多部分的任務之前就停下來,並在完成部分進度後宣稱任務已結束,例如在安全審查中只處理了 50 個項目中的 20 個。
- 自我偏好偏差:指 Claude 傾向於偏愛自己的結果或發現,尤其是在被要求根據評分標準進行驗證或評判時。
- 目標漂移:指在多次互動後,特別是在壓縮摘要後,逐漸偏離原始目標。每次摘要步驟都會有資訊損失,像邊緣案例需求或「不要做 X」的限制等細節可能會遺失。
建立工作流程有助於透過編排各自擁有獨立上下文視窗和專注、隔離目標的多個 Claude 來對抗這些問題。
動態與靜態工作流程
你可能之前使用 Claude Agent SDK 或 claude -p 建立過靜態工作流程,用來協調多個 Claude Code 實例。
但由於靜態工作流程需要處理所有邊緣情況,它們通常比較通用。有了 Claude Opus 4.8 和動態工作流程,Claude 現在足夠聰明,可以為你的使用案例編寫一個客製化的 harness。

使用動態工作流程的有用模式
你可以直接要求 Claude 建立一個工作流程來開始使用動態工作流程,或使用觸發詞「ultracode」來確保 Claude Code 建立工作流程。
但建立對動態工作流程運作方式的心理模型,將有助於你理解何時使用它們,以及如何透過提示引導 Claude。
以下是 Claude 在建立工作流程時可能使用和組合的幾種常見模式:

分類與行動
使用一個分類 Agent 來決定任務類型,然後根據任務路由到不同的 Agent 或行為。或者,在最後使用一個分類 Agent 來決定輸出。
扇出與整合
將任務拆分成許多較小的步驟,對每個步驟執行一個 Agent,然後整合這些結果。這在步驟數量眾多,或每個步驟需要自己乾淨的上下文視窗以避免互相干擾或交叉污染時特別有用。整合步驟是一個屏障——它等待所有扇出 Agent 完成,然後將它們的結構化輸出合併成一個結果。
對抗性驗證
對於每個產生的 Agent,分別執行一個獨立的 Agent,根據評分標準或條件對其輸出進行對抗性驗證。
生成與過濾
針對一個主題生成大量想法,然後根據評分標準或驗證進行過濾,去除重複項,只回傳最高品質、經過測試的想法。
錦標賽
與其分工,不如讓 Agent 競爭。產生 N 個 Agent,各自使用不同的方法嘗試相同的任務。然後使用一個評判 Agent 以兩兩比較的方式評判結果,直到產生一個勝者。
持續循環直到完成
對於工作量未知的任務,循環產生 Agent,直到滿足停止條件(沒有新的發現,或日誌中沒有更多錯誤),而不是固定次數的嘗試。
使用案例
創造性地思考何時以及如何要求 Claude Code 建立動態工作流程。我發現工作流程有時對非技術性工作甚至更有用。

遷移與重構
Bun 使用工作流程從 Zig 重寫為 Rust。你可以在 Jarred 的 X 貼文中了解更多細節。
關鍵是將任務分解為一系列需要處理的步驟,例如呼叫點、失敗的測試、模組等。為每一個修復在工作樹中產生一個子 Agent 來進行修復,然後讓另一個 Agent 進行對抗性審查,再合併。考慮告訴 Agent 不要使用資源密集的命令,這樣你就可以在機器資源不耗盡的情況下最大化平行處理。
深度研究
我們在 Claude Code 中發布了一個深度研究技能 (/deep-research),它使用動態工作流程。具體來說,它會扇出網路搜尋、擷取來源、對抗性驗證其聲明,並整合出一份附引用報告。
但你不僅僅可以針對網路搜尋進行這種研究。例如,要求 Claude 從 Slack 的內容中編制一份狀態報告,或深入研究程式碼庫來了解某個功能是如何運作的。
深度驗證

另一方面,如果你有一份報告,想要檢查並驗證其中引用的每一個事實性聲明,你可以建立一個工作流程,讓一個 Agent 識別所有事實性聲明,然後產生一個子 Agent 來詳細檢查每一項。你還可以讓一個驗證 Agent 檢查來源子 Agent,確保其來源品質高。
排序

你可能有一個清單,想根據某些你認為 Claude Code 擅長評估的定性指標進行排序,例如:按錯誤嚴重性排序的支援工單。但如果你嘗試在一個提示中排序超過 1000 行,品質會下降且無法容納在上下文中。相反地,可以執行一個錦標賽、一個兩兩比較 Agent 的管道(比較性判斷比絕對評分更可靠),或平行分桶排序再合併。每次比較都是一個獨立的 Agent,因此確定性循環持有賽程表,只有運行順序保留在上下文中。
記憶與規則遵循

如果你有一組特定規則,且發現 Claude 即使放入 CLAUDE.md 中仍然會遺漏或難以遵循,可以建立一個工作流程,其中包含一個必須由驗證 Agent(每個規則一個驗證 Agent)檢查的規則清單。建立一個懷疑論者角色子 Agent 來審查這些規則,確保它們符合要求,將有助於避免過多的誤報。
反過來也有效:挖掘你最近的 session 和程式碼審查評論中你一直犯的錯誤,用平行 Agent 進行聚類,對每個候選規則進行對抗性驗證(這個規則能防止真正的錯誤嗎?),然後將倖存者提煉回 CLAUDE.md。
根本原因調查
除錯的最佳方式是想出幾個獨立的假設並測試它們,但如果只使用一個上下文視窗,Claude 可能會遇到自我偏好偏差。
工作流程可以透過產生 Agent 從不相關的證據中生成假設來結構性地防止這種情況。例如,針對日誌、檔案和資料分別使用獨立的 Agent。然後每個假設都可以面對一個由驗證者和反駁者組成的小組。
這不僅限於程式碼。工作流程可用於銷售(為什麼三月份銷售額下降?)、資料工程(為什麼這個 pipeline 失敗?)或任何事後檢討活動。
大規模分類

每個團隊都有支援佇列、錯誤報告或其他無法由人類完全處理的待辦事項。
分類工作流程會對每個項目進行分類,與已追蹤的項目進行去重,並採取行動。這可能意味著嘗試修復或升級給人類使用者。
分類工作流程的一個有用模式是隔離。這包括禁止讀取不受信任的公開內容的 Agent 執行高權限操作,而這些操作則由負責根據資訊採取行動的 Agent 執行。
將分類工作流程與 /loop 配對,讓 Claude 持續執行此操作。
探索與品味
工作流程在探索解決方案的不同方法時很有用,特別是當它基於品味時,例如設計或命名,並且會受益於評分標準。
嘗試要求 Claude 探索一系列解決方案,並為審查 Agent 提供一個良好解決方案的評分標準。當審查 Agent 認為已滿足標準時,任務即完成。解決方案也可以根據評分標準透過錦標賽進行排序或選擇。
評估
你可以透過在工作樹中產生獨立的 Agent,然後產生比較 Agent 來根據評分標準比較和評分特定輸出,從而對特定任務進行輕量級評估。例如,根據特定條件評估然後改進你建立的技能。
模型與智慧路由
建立一個針對你的任務調整的分類 Agent,由其決定使用哪個模型。當你的任務涉及許多工具呼叫,並且在執行前進行研究可以識別出最適合該任務的模型時,這會很有幫助。
例如,對於「解釋 auth 模組如何運作」這個任務,最佳模型取決於 auth 模組中的檔案數量以及程式碼庫的結構。分類 Agent 可以進行此研究,然後根據預期的任務複雜度路由到 Sonnet 或 Opus。
何時不使用動態工作流程
工作流程是新的。雖然有許多使用案例會產生超乎預期的結果,但並非每個任務都需要它們,而且它們最終可能會消耗顯著更多的 token。
最好創造性地使用工作流程,以你以前未曾嘗試的方式來推動 Claude Code。對於常規的編碼任務,試著問自己:它真的需要更多計算嗎?例如,大多數傳統的編碼任務並不需要一個由 5 位審查者組成的小組。
建立動態工作流程的技巧
提示技巧
使用上述的具體技術進行詳細提示,可以為動態工作流程創造最佳結果。
工作流程不僅適用於大型任務。你可以提示模型使用「快速工作流程」。例如,你可以快速建立一個對某個假設的對抗性審查。
結合 /goal 和 /loop
當使用可以重複的工作流程時,例如分類、研究或驗證,可以將其與 /loop 配對以定期執行,並與 /goal 配對以設定嚴格的完成要求。
Token 使用預算
你可以為動態工作流程設定明確的 token 使用預算,以限制某個任務使用的 token 數量。你可以用類似「使用 10k tokens」的預算來提示,這將設定上限。
儲存與分享動態工作流程
你可以透過在工作流程選單中按「s」來儲存工作流程。你可以將它們簽入 ~/.claude/workflows 或透過技能進行分發。

要透過技能分享它們,請將你的 JavaScript 工作流程檔案放入技能和資料夾中,並在 SKILL.MD 中引用它們。為了提供更多靈活性,你可能希望提示 Claude 將技能中的工作流程視為模板,而不是需要逐字執行的腳本。

一個全新的世界
工作流程是擴展 Claude Code 的一種有用的新方式。我鼓勵你將此視為一個起點,在如何最佳使用它們方面仍有許多值得探索。請讓我們知道你發現了什麼。
Thariq Shihipar 和 Sid Bidasaria (@sidbid) 是 Anthropic 的技術員工,負責 Claude Code。





