在開發 AI 應用時,許多開發者常將大型語言模型(LLM)與 AI Agent(AI 代理人)混為一談。事實上,模型僅能生成文字,而代理人則需要一套完整的執行環境來實現目標。如果你嘗試從零開始建構一個代理人,你可能會發現大部分的時間都花在撰寫 Dockerfile、建立對話狀態儲存庫、設計遙測管線(Telemetry Pipeline)以及處理分散式系統的複雜性,而非專注於代理人本身的邏輯。
為了簡化這個過程,Microsoft Agent Framework 引入了 Harness(代理人框架/吊架)的概念。Harness 就像是一個預先建構好的運行時環境,它為 LLM 提供了必要的「機械結構」,讓開發者能將模型、指令與領域工具直接植入其中,而不需要重新發明輪子。在 .NET 生態系中,透過簡單的 C# 程式碼,開發者就能將一個標準的聊天客戶端(IChatClient)轉換為一個具備規劃與執行能力的代理人。
核心概念:什麼是 Agent Harness
Agent Harness 是一個環繞在模型周圍的運行時(Runtime)。一個真正的代理人需要一個循環機制:它必須能呼叫工具、檢查結果、更新執行計畫、記憶有用資訊,並在面對高風險操作時請求人類核准。Harness 正是負責處理這些瑣碎且重複的編排邏輯。
在 Microsoft Agent Framework 中,這種結構被稱為 Claw(爪子)。開發者提供模型與工具,而 Harness 提供底層的運作機制,包括自動化函數調用、對話歷史持久化、上下文壓縮(Context Compaction)以及規劃導向的待辦清單(Todo list)。這意味著開發者可以將精力集中在定義代理人的「行為」與「能力」,而非開發底層的調度引擎。
能力演進:從簡單工具到複雜任務
以建構一個「個人理財教育助手」為例,透過 Harness 可以循序漸進地擴展代理人的能力,將其從單純的問答機器人提升為專業代理人。
首先是基礎工具的整合。透過 C# 的函數簽名與描述,Harness 能自動生成工具綱要(Tool Schema)。例如,定義一個獲取股價的函數,代理人就能在對話中判斷何時需要呼叫此工具來獲取即時數據,而非僅依賴模型內建的過時知識。
其次是安全地處理數據與權限。當代理人需要存取使用者資產清單(CSV 檔案)時,直接開放檔案系統權限極其危險。Harness 提供了 FileAccessStore(檔案存取儲存),將代理人的操作限制在特定的工作目錄內,防止其存取系統敏感路徑。同時,針對高風險操作(如模擬交易),可以封裝為 ApprovalRequiredAIFunction(需核准函數)。這確保了模型雖能「請求」執行操作,但必須經過人類確認後才能真正執行。為了避免過多瑣碎的核准請求造成干擾,開發者還可以設定自動核准規則,例如允許所有「唯讀」操作自動通過。
進一步地,代理人可以透過以下方式擴展能力: 技能(Skills):將領域知識封裝在可發現的檔案中,僅在需要時載入,避免系統提示詞(System Prompt)過長導致模型混亂。 CodeAct(程式碼執行):允許代理人在受控環境中撰寫並執行程式碼,這在處理複雜數學運算時比純文字生成更可靠。 背景代理人(Background Agents):主代理人可將研究任務委派給多個並行運行的子代理人,大幅提升處理效率。
生產環境的部署與治理
當代理人在本地開發完成後,進入生產環境面臨的挑戰是可觀測性與治理。一個在開發環境中好用的代理人,不能直接將本地檔案系統或 Shell 權限帶入雲端容器。
Microsoft Agent Framework 允許將代理人定義部署為 Foundry Hosted Agent(Foundry 託管代理人)。在部署過程中,開發者可以針對不同環境啟用不同的能力。例如,在生產環境中,利用 OpenTelemetry 追蹤工具調用與 Token 使用量,實現完整的可觀測性(Observability);透過 Microsoft Purview 整合治理策略,確保代理人的行為符合組織規範。此外,引入評估機制(Evaluations)能將「感覺不錯」的主觀體驗轉化為可量化的品質指標。
實務意義與限制
使用 Harness 的核心價值在於將「通用 runtime」與「領域邏輯」解耦。開發者不再需要為每個專案重新構建對話循環或記憶層,而是直接在 composable(可組合)的框架中定義工具、數據邊界與核准流程。
然而,必須意識到能力與風險的正比關係。雖然 Shell 存取與程式碼執行能強大提升代理人的能力,但單純的核准機制不足以替代徹底的隔離(Isolation)。在生產環境中,必須採取嚴格的容器化隔離與權限管控,而非僅依賴框架提供的 API 限制。
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。