MUST · 手搓你的 AI Agent · 組件 02

Agent 迴圈逐步器

一步一步看 Agent 如何用工具做事:模型只會寫字,做事的是 Harness。

選一個任務

大型語言模型(large language model, LLM)本身只能做一件事:讀入一段文字,再寫出一段文字。所謂 Agent(代理),是把模型放進一個會反覆循環的程式裡。

每一輪,模型讀完整段上下文(context,即到目前為止的全部對話與結果),決定要不要用工具;要用,就寫一張請求單——工具調用(tool call)。包住模型的那層程式叫 Harness(執行框架):它檢查權限、真正執行、把結果貼回上下文,再把整段上下文交還模型。如此重複,直到模型不再提出請求。下面四個任務都是預先編寫好的示意,結果每次相同。

任務(選一個)

切換任務、「無工具」或「跳過驗證」都會重新開始。權限模式在舞台右邊的 Harness 面板設定,可以隨時改。

迴圈舞台

按「下一步」走一輪迴圈。左邊是模型每一輪看見的上下文;中間是模型唯一能做的事——寫字;右邊是 Harness 替它做事的地方。留意黃色的請求單:模型寫的只是一張單,它自己碰不到檔案。

第 0 步 / 約 6 步

    左 · 每一輪送給模型的上下文(context)

    由上而下依時間排列。每一步模型都會把整段再讀一次。

    • 系統提示(含工具清單)
    • 用戶任務/插話
    • 模型輸出
    • 工具請求單
    • 工具結果
    • Harness 訊息

    中 · 只會寫字模型(model)

    這一格只會出現文字。要做事,模型只能在文字裡附上一張請求單。

    右 · 做事的Harness(執行框架)

    讀模型寫的請求單,查權限,真正執行,再把結果寫回上下文。

    權限檢查尚未有請求
    權限模式

    權限模式(permission mode)是 Harness 的功能,不是模型的——第 4 堂會展開。

    模擬檔案系統模擬

      執行結果
      
                

      本頁所有模型輸出與工具結果均為預先編寫的示意,並非真實模型即時產生;詞元(token)數以經驗法則估算(中文每字約 0.6 個、英文每字約 0.3 個)。

      重點一

      模型只會寫字,做事的是 Harness

      模型的輸出永遠是一段文字。它「讀檔案」時,其實只是寫了一句「請讀取 下載/報告.docx」;真正打開檔案、把內容抄回上下文的,是 Harness。模型看不見硬碟、上不了網、也刪不了任何東西——除非 Harness 替它做。

      所以「模型執行了程式」這句話是錯的:模型寫了一張請求單,Harness 執行了程式。權限、日誌、叫停,全都發生在 Harness 這一層。

      重點二

      每一步都把整段歷史再送一次

      重點三

      宣稱完成不等於完成:要驗證

      模型說「已寫入檔案」,只代表它寫了一句話。檔案是否真的有內容、程式是否真的跑對,要靠再讀一次、再列一次、再跑一次來確認——這一步叫驗證(verification)。任務 1 勾選「讓模型跳過驗證」,就能看到一次「宣稱完成」與「真的完成」之間的落差。

      課堂角色扮演:三分鐘體會迴圈

      不用電腦,兩個人就能演出上面那三格。

      1. 一位同學扮演模型。規則只有一條:只能寫字條,不准離開座位、不准碰任何東西。想知道甚麼、想做甚麼,都寫成一張請求單,例如「請打開第三格抽屜,告訴我裡面有甚麼」。
      2. 教師扮演 Harness。接過字條,先決定准不准(可以拒絕!),准就照做,然後如實把結果寫在字條下面交回去——不多說一句。
      3. 任務:「找出講台抽屜裡有幾支白板筆,寫在白板上。」看模型要寫幾張字條、有沒有先列出再拿、最後有沒有回頭確認白板上寫的數字對不對。

      模型(字條):「請打開講台左邊第一格抽屜,列出裡面的東西。」

      Harness(回覆):「三支白板筆(黑、紅、藍)、一塊板擦、一卷膠帶。」

      模型(字條):「請在白板上寫『白板筆:3 支』。」 Harness:「已寫。」

      模型(字條):「請讀出白板上現在寫著甚麼。」 Harness:「白板筆:3 支」 模型:「完成。」

      重點:扮演模型的同學從頭到尾沒有碰過抽屜、也沒有碰過白板——這正是真實 Agent 的處境。

      想一想

      課堂討論用,每題兩分鐘。

      1. 你每天做的事情裡,哪一件你願意交給一個「有工具的 Agent」去做?它需要哪幾種工具(讀檔、寫檔、上網、寄訊息、付款……)?其中哪一種工具你不會授權給它——為甚麼?
      2. 「模型執行了程式碼」這句話為甚麼是錯的?正確的說法應該是甚麼?如果把「模型」換成「Agent」,這句話又對不對?
      教師提示(討論後再展開)

      第 1 題可引導的方向:讀取類工具(列出、讀檔、查詢)風險低,因為不改變世界;寫入類(寫檔、寄訊息)中等,錯了要花力氣收拾;不可逆類(刪除、付款、發佈)最高,正是任務 3 的「刪除檔案」為何預設要問。可順勢引出第 4 堂的權限模式:授權不是「全給」或「全不給」,而是按動作的可逆性分級。

      第 2 題可引導的方向:正確的說法是「模型寫了一張執行程式的請求單,Harness 執行了程式,並把輸出貼回上下文」。把主詞換成「Agent」則說得通,因為 Agent 一詞指的是「模型 + Harness + 工具」整個迴圈系統,而不是模型本身。可以請學生回頭看舞台中間那一格——從頭到尾只出現過文字。