Claude 圖工程:把線性 Agent 重畫成可驗證工作圖

多步驟 agent 不必永遠「A 做完才輪到 B」。先畫出真正會傳遞資料的邊,再讓獨立工作平行、讓需要全體結果的地方匯流,並把驗證與停止條件放進圖裡。

先換一個問題:兩步之間真的有資料依賴嗎?

原文的核心不在於把 agent 拆得越多越好,而在於辨認每個工作單元的輸入、輸出與依賴關係。

觀念 1

節點是有邊界的工作

一個節點最好只負責一件事,接受明確輸入並輸出可驗證的結構。這樣下一個節點不用猜測,也才有替換或平行化的空間。

觀念 2

邊是資料契約,不是「然後」

如果下一步沒有讀取上一步的結果,兩者就沒有真正的邊;把它們排成隊只是等待,不是流程設計。

觀念 3

程式負責管線,模型負責判斷

展平、去重、過濾與路由是確定性工作,應交給程式;需要理解、取捨與綜整時,才呼叫 agent。

6 種會反覆出現的圖形

圖不是抽象裝飾;它直接決定 latency、成本、容錯方式與你能掌握的工作範圍。

01

鏈(Chain)

A → B → C 是最簡單的退化圖。它可運作,但每一段都會等待,任一節點停滯就阻塞後續工作。

02

扇出/匯入(Diamond)

先拆工作,再讓多個獨立節點平行處理,最後合併。研究、程式碼審查與市場掃描都很適合這個形狀。

03

路由(Router)

Agent 可以判斷風險或類型;但由程式根據分類選擇下一條邊,讓控制流對相同輸入保持可預期。

04

驗證邊(Verifier)

把結果送往下游前,先由獨立檢查器嘗試推翻它。可用不同視角驗證,或用評審團決定哪些發現能留下。

05

收斂迴圈(Loop-until-dry)

未知規模的探索應設定停止條件,例如連續兩輪沒有新發現;去重對象必須是所有已見項目,而非只對已確認結果。

06

管線(Pipeline)

若每個項目不需要等整批資料,讓它個別往下一階段流動。只有跨集合去重、比較或總體決策才值得設置 barrier。

從線性腳本遷移時,先做這 5 件事

01|為每個節點寫下輸入、輸出與唯一職責

以 schema 或明確資料形狀界定合約。驗證失敗應在節點邊界處重試或失敗,而不是把不可靠的自由文字丟給下一步解析。

02|逐一檢查每個「and then」

問下一步是否真的讀取前一步輸出。若沒有,切斷這條假邊,改為同時執行;這通常是最直接的速度提升來源。

03|把資料處理留在程式層

例如 flatMap、Set 去重與欄位過濾,都是便宜、可重現且即時的邊操作;不要花模型呼叫去做管線接頭。

04|讓驗證者與產生者分離

對重要發現,以正確性、安全性、可重現性等不同鏡頭進行獨立檢查。這能降低同一個 agent 同時產生與認可自己答案的偏誤。

05|按工作性質分配模型與同步點

重複、受限的擷取或分類可使用較便宜的模型,關鍵綜整再用高能力模型;預設採 pipeline,只有需要全體結果時才建立等待屏障。

哪些任務最適合先畫圖?

A

多來源研究與報告

平行蒐集不同角度,程式去重壓縮,再由綜整節點寫出結論;引用或關鍵主張可再經獨立驗證。

B

大規模程式碼審查

每個路由或模組由一個節點檢查,發現先經安全、正確性、重現性驗證,再由最終節點彙整風險。

C

依風險分流的工作流

小型變更走快速檢查;高風險變更觸發更完整的平行審查。分類可以是模型判斷,分流規則則應由程式明訂。

D

未知範圍的漏洞探索

每輪發現新項目後加入 seen 集合,驗證存活者,直到連續空輪才結束;避免反覆花費成本重新發現已被否決的死路。

真正的轉變:從「叫 Agent 多做幾步」改為「讓工作圖更寬、更可靠」

把獨立工作扇出、把資料整理留給程式、把信心關卡放在邊上。當一個任務的依賴關係被畫清楚,速度、成本與可驗證性才能一起被工程化。