← 文章列表
Harness Engineering

從一個任務出發:怎麼疊加一個夠用的 Agent 系統

2026-05-01 · — views

這個系列看了四個 Agent 框架,每個都很完整,每個都很複雜。但我想在結束前回答一個更實際的問題:如果你現在要做一個 Agent 系統,你真的需要這些嗎?

答案大概是:不全需要,但有幾件事從一開始就應該做對。


先回答一個問題

在你開始疊加任何東西之前,建議先問自己:在你的場景裡,Agent 壞掉最壞的情況是什麼?

這個問題比選哪個框架重要得多。

如果壞掉只是輸出一個不太好的結果,你的問題是品質,你需要的是 Guardrail 和輸出驗證。如果壞掉是 API 卡住、任務中斷、子 Agent 沒有回應,你的問題是可靠性,你需要的是 retry 機制和任務持久化。如果壞掉是 Agent 在你的機器上做了不該做的事,你的問題是安全,你需要的是攔截層和權限分級。

這個問題選定了,後面幾乎每一個決策就跟著定了。


第一層:核心迴圈

先把 Agent 能跑起來。一個 Agent 的最小結構不複雜:拿到任務、呼叫 LLM、根據回應決定下一步、呼叫工具、再回到 LLM。這個迴圈是所有複雜性的起點。

如果你的任務有明確的邊界,用 LangGraph 就夠了。它的圖結構讓你清楚地定義狀態轉移,不需要學一整套框架的抽象。hermes、OpenClaw、CrewAI 這些框架之所以存在,是因為它們要解更通用的問題,但你的任務是特定的,「夠用」比「通用」重要。

這一層要做對的事只有一件:把 prompt 和執行邏輯分開。別把 prompt 寫死在程式碼裡,之後你會一直回來改它。


第二層:Plugin 設計

這一層建議從第一天就做,不要等到遇到問題。

所謂 Plugin 設計,是讓工具、記憶後端、模型,都是可以替換的零件,而不是焊死在你的核心迴圈裡。

這件事聽起來像是工程上的潔癖,但它解決的是一個真實的問題:你現在選的 LLM 不會是你永遠用的 LLM。你現在用的工具在某個場景下可能要換一個。如果這些東西和核心迴圈纏在一起,每次替換都是一場手術。

看過這個系列的四個框架,它們在架構底層幾乎都收斂到同一個模式:核心迴圈不動,外圍的工具、模型 adapter、記憶後端全部都是可以插拔的模組。這不是巧合,是大家踩過同樣的坑之後得到的結論。

把這個做對,你的系統有一個穩定的核心,剩下的是換零件。


第三層:Fail Recovery

這一層等你真的遇到問題再加,但要知道它分三個子層,每個子層解的問題不一樣。

第一個子層:API 和工具的錯誤處理。 LLM API 會 timeout、會 rate limit、外部工具會跑壞。Exponential backoff、重試次數上限、fallback 模型,這些是基礎設施層的問題。你的系統跑起來之後,API 失敗通常是第一個撞到的問題,那時候加不晚。

第二個子層:輸出品質的驗證。 工具執行成功,LLM 也回應了,但輸出不符合你的要求,基礎設施層看不見這個問題。CrewAI 的 Guardrail 在這裡:驗證失敗時,把「你上次的輸出有這個問題」作為 context 重新執行,讓品質收斂,而不是單純重試。

第三個子層:任務狀態的持久化。 長時間運行的任務,中途失敗不應該從頭來。任務進度、已完成的步驟、context,都應該可以恢復。這個問題通常是等你的任務真的跑得很長、失敗成本很高的時候才會碰到。

這三個子層不一定要同時加。按照你最常遇到的失敗模式,一個一個來。


第四層:24/7 可靠性

這一層只有在你的系統真的需要不間斷運行的時候才需要。

所謂 24/7 可靠性,不只是「server 不要死」,而是系統在任何中斷情況下都有恢復路徑:API 限流有佇列,任務被打斷有 checkpoint,子 Agent 掛掉有偵測和重啟機制。OpenClaw 幾乎把所有的工程努力都放在這個問題上,因為它的場景是真的不能停。

但你的場景呢?如果你的 Agent 是一個批次處理任務,跑完就結束,這一層你可能永遠不需要。如果你的 Agent 是一個後台服務,任何中斷都會被使用者感知,那這一層早晚要補上。

一個實用的判斷方式:先讓系統跑起來,觀察它真實的失敗模式。大多數情況下,你會發現 90% 的問題集中在某一兩個點,那才是值得用力的地方。


結語:換對零件,不要換整個機器

這個系列看下來,我覺得最有價值的一個隱喻是:Agent 系統像機甲機器人,骨架相同,手臂和模組可以根據場景替換。

你在 coding 場景換上 bash 工具,在研究場景換上 web search,在客服場景換上資料庫查詢工具。換的是零件,不是重寫框架。這需要你把核心迴圈和外圍模組分得很清楚,這就是為什麼第二層建議從一開始就做。

至於更複雜的東西,Plugin 設計、Fail recovery、24/7 可靠性,hermes 的 RL 訓練迴路,這些不是你不需要,而是等你的系統成長到那個程度,你自然會知道需要哪一個。

從一個任務出發,先讓它能跑,再讓它跑得穩,再讓它永遠在線。這個順序比從一開始就設計一個「完整的 Agent 系統」更實際,也更不容易繞遠路。