Harness 概覽
Harness 讓 Agent 能夠處理長時間運行的複雜目標,同時確保其工作可持續保存、清晰可見並可受引導。它可在重試及中斷期間保留進度,亦讓使用者和其他系統能夠檢視進度、加入情境資訊、批准操作、重新引導 Agent 或將其停止。
在 Mastra 中,harness 是指一組用於管理 Agent 的功能,讓 Agent 不受單次不間斷運行所限。你可以個別採用這些功能,亦可按需要組合使用。
AgentController 是專為互動式 Agent 應用程式而設的 harness。它在基礎 Agent 迴圈之上,為每位使用者或每項任務提供獨立工作階段、持久保存的對話串與狀態、可切換的模式與模型、Tool 權限與審批、子 Agent 編排,以及事件與顯示狀態串流。
只要工作需要持續一段時間,Agent harness 都能派上用場。常見例子包括讓變更經歷 CI 及審查整個流程的編程助手、並行協調多項任務的軟件工廠、隨事故發展而調整應對方式的 SRE Agent,以及隨着帳戶、訊號和對話變化而作出回應的市場拓展 Agent。
何時使用 harness何時使用 harness 的直接連結
根據 Agent 的需要選擇起點。你可以使用一項或多項功能。
| 如果你想…… | 從這裏開始 | 原因 |
|---|---|---|
| 在用戶端連線中斷或伺服器重新啟動後,仍可繼續使用某次運行 | 持久 Agent | 保存運行狀態,並讓用戶端重新連接其串流。 |
| 在不造成阻塞的情況下運行耗時的 Tool、Workflow 或子 Agent | 背景任務 | 以非同步方式完成工作,並將結果傳回 Agent。 |
| 讓 Agent 持續工作,直至達成目標 | 目標 | 評估對話串範圍內的目標,直至目標完成或用盡運行預算。 |
| 在週期性時間自動開始工作 | 排程 | 按 cron 排程開始獨立運行,或將提示傳送至現有對話串。 |
| 加入情境資訊、重新引導進行中的工作,或喚醒閒置的對話串 | 訊號 | 立即傳送輸入,或保留至下一輪再傳送。 |
| 回應 GitHub、Slack、持續整合或其他外部系統的變更 | 訊號 Provider | 追蹤訂閱,並將相符事件轉送至 Agent 對話串。 |
| 建立具備工作階段、模式、狀態、審批和事件的互動式產品 | AgentController | 在共用的 Agent runtime 上託管獨立工作階段。 |
| 讓使用者引導運行、將後續工作加入佇列,或停止互動式運行 | AgentController | 透過每個工作階段提供運行控制。 |