跳轉到

8.2 五類工具的分類與設計#

給工具一個「地圖」#

8.1 節我們談了「單一工具」該怎麼設計(ACI 三面向)。但真實的 Agent 不會只有一個工具——它會有一箱子的工具(工具庫)。設計一個工具庫,比設計單一工具更需要「分類」的視野。

本節提出一個五類工具分類框架,幫助你理解「一個成熟的 Agent 需要哪些類型的工具」,以及各類工具在設計與使用上的特點。這不是唯一的答案,而是一個有用的心智地圖。

五類工具總覽#

把 Agent 常見的工具,依照「它們在處理什麼、為什麼需要」分類,可以得到五類:

類別 代表工具 角色(解決什麼)
1. 知識檢索類 搜尋網頁、查知識庫(RAG)、查 FAQ 讓 Agent「知道」它該知道的資訊
2. 計算處理類 算數、日期、字串處理、搜尋函式 讓 Agent「算得準」(它不是天生算數高手)
3. 檔案環境類 讀/寫檔案、執行程式、搜尋程式碼 讓 Agent「碰得到環境」(尤其 Coding)
4. 外部動作類 呼叫 API、下訂單、改資料庫、發訊息 讓 Agent「做得到」真實世界的動作
5. 溝通輸出類 請求人確認、查需求、回報結果 讓 Agent「問得對」(與人協作、尤其中斷確認)

下面逐一展開。

1. 知識檢索類(Information Retrieval)#

角色:提供「Agent 需要但未先在上下文裡的資訊」——這與第 7 章 RAG/知識庫一脈相承。

常見工具: - web_search(query):搜尋最新外部資訊(補足模型知識截止) - search_knowledge_base(query):搜尋私有知識庫 - get_document(id) / lookup_faq(topic)

設計重點:回傳要精準、有來源(接地),讓 Agent 能判斷「這個知識對不對、夠不夠」。這類工具的品質高度倚賴檢索品質(7.5 節)。

2. 計算處理類(Computation)#

角色:補足 LLM 的弱項——它不擅長精確計算與確定性邏輯(會算錯、會幻覺數字)。

常見工具: - calculator(expression):精確算數 - date_calc(...):日期/時區運算 - string_functions(...):正則、格式化、字串處理

設計重點:涉及精確數值與確定性邏輯時,不該讓模型「自己算」,而該讓它「呼叫工具算」。 這是「把不確定性交給確定性工具」的關鍵思維(呼應 3.5 節「區分確定性流程與 AI 決策」)。讓模型「算」,它會錯;讓模型「呼叫計算工具」,它就不會錯在數字上。

3. 檔案環境類(File & Environment)#

角色:讓 Agent 操作「它的工作環境」——讀檔、寫檔、執行程式。這是 Coding Agent(8.5 節)的核心工具類。

常見工具(可對照附錄 B 的 OpenCode 權限): - read_file(path)、write_file(path, content) - run_command(cmd)、search_code(pattern) - list_directory(path)

設計重點:安全是最高考量——這類工具能對檔案系統與執行環境產生真實影響(好與壞),因此要與權限控制、沙盒隔離、稽核結合(13.2 節)。能「執行任意指令」的工具,是最強大的、也最危險的。

4. 外部動作類(External Action)#

角色:讓 Agent 對「真實世界的系統」執行動作——呼叫外部 API、下訂單、修改資料庫、發送通知。這是「Agent 真正做事」的那一類。

常見工具: - create_order(...)、update_database(...) - call_payment_api(...)、send_notification(...)

設計重點:後果不可逆性與權限最小化(13.2 節)——因為這類動作可能造成真實影響(扣款、刪資料)。實務上,高風險動作通常需要「人確認」的中斷點(見下方「溝通輸出類」與第 9 章 harness),並配合冪等性(重複執行結果一致)設計(3.3 節)。

5. 溝通輸出類(Communication & Handoff)#

角色:讓 Agent 在關鍵時刻停下來與人互動——請求確認、澄清需求、回報結果。它的使用體現「人在迴路」的設計。

常見工具: - ask_user(question):向人提問、請求確認 - confirm_high_risk(action):高風險動作前請求授權 - report_result(result):回報工作成果

設計重點:這是 Agent 與「外部審查者(人)」的介面。它讓 Agent 的自主性「有邊界」——該確認時就確認,而不是閉著眼做完(呼應 8.4、9 章)。「會問」的 Agent,遠比「悶頭做」的 Agent 可靠。

分類的用意:理解「工具箱」#

這個五類框架的實用價值,在於幫助你:

  1. 盤點缺口:設計 Agent 時,逐一問「我這五類都齊了嗎?」
  2. 有沒有讓它「知道」資訊?(知識檢索)
  3. 有沒有讓它「算準」?(計算)
  4. 有沒有讓它「碰到環境」?(檔案/環境)
  5. 有沒有讓它「做得到」真實動作?(外部動作)
  6. 有沒有讓它「會問人」?(溝通輸出)
  7. 理解各自的設計重點:每一類的「安全與正確性」關注點不同

五類工具與安全等級#

不同類的工具,對風險的影響也不同,可以連想到安全設計(13 章):

類別 風險等級 典型防護
知識檢索 低(唯讀) 來源接地、可追溯
計算處理 低 數學正確即可
檔案/環境 中高 權限、沙盒、稽核
外部動作 高 權限最小化、人確認、冪等
溝通輸出 低 防止被提示注入利用(13.1 節)

核心:權限最小化(Least Privilege)——只給 Agent「完成任務所需的最少權限」,是貫穿所有工具安全的總原則。

本章小結#

  • 設計工具庫需要分類的視野
  • 五類框架:知識檢索(知道)→ 計算處理(算準)→ 檔案環境(碰到環境)→ 外部動作(做得到)→ 溝通輸出(會問人)
  • 各類設計重點不同:精確計算要交給工具、檔案/外部動作要重安全、溝通輸出要讓 Agent「會確認」
  • 用五類盤點缺口、理解各自的風險與防護
  • 貫穿原則:權限最小化

想一想#

  1. 為「訂位系統」設計一個 Agent,用五類框架盤點:你各需要哪些工具?
  2. 為什麼「精確計算」不要讓模型自己做,而要讓它呼叫計算工具?模型算數的風險是什麼?
  3. 哪一類工具「後果最不可逆」?為什麼這類工具特別需要「動作確認」與「權限最小化」?