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 可靠。
分類的用意:理解「工具箱」#
這個五類框架的實用價值,在於幫助你:
- 盤點缺口:設計 Agent 時,逐一問「我這五類都齊了嗎?」
- 有沒有讓它「知道」資訊?(知識檢索)
- 有沒有讓它「算準」?(計算)
- 有沒有讓它「碰到環境」?(檔案/環境)
- 有沒有讓它「做得到」真實動作?(外部動作)
- 有沒有讓它「會問人」?(溝通輸出)
- 理解各自的設計重點:每一類的「安全與正確性」關注點不同
五類工具與安全等級#
不同類的工具,對風險的影響也不同,可以連想到安全設計(13 章):
| 類別 | 風險等級 | 典型防護 |
|---|---|---|
| 知識檢索 | 低(唯讀) | 來源接地、可追溯 |
| 計算處理 | 低 | 數學正確即可 |
| 檔案/環境 | 中高 | 權限、沙盒、稽核 |
| 外部動作 | 高 | 權限最小化、人確認、冪等 |
| 溝通輸出 | 低 | 防止被提示注入利用(13.1 節) |
核心:權限最小化(Least Privilege)——只給 Agent「完成任務所需的最少權限」,是貫穿所有工具安全的總原則。
本章小結#
- 設計工具庫需要分類的視野
- 五類框架:知識檢索(知道)→ 計算處理(算準)→ 檔案環境(碰到環境)→ 外部動作(做得到)→ 溝通輸出(會問人)
- 各類設計重點不同:精確計算要交給工具、檔案/外部動作要重安全、溝通輸出要讓 Agent「會確認」
- 用五類盤點缺口、理解各自的風險與防護
- 貫穿原則:權限最小化
想一想#
- 為「訂位系統」設計一個 Agent,用五類框架盤點:你各需要哪些工具?
- 為什麼「精確計算」不要讓模型自己做,而要讓它呼叫計算工具?模型算數的風險是什麼?
- 哪一類工具「後果最不可逆」?為什麼這類工具特別需要「動作確認」與「權限最小化」?