內建工具
26 個工具一律註冊,Linux 上另加 pkg_manage;還有 4 個僅在前置條件存在時才出現(generate_audio、generate_image、list_chatbot、send_to_chatbot),內建工具合計 31 個。find_note 已於 v1.0.23 隨 operator notes 一併移除;session 的常駐指示改寫在該 session 的 role(/role)。涵蓋多個相關動作的工具改以 mode 參數區分,而非拆成多個名稱 —— edit_file 取代原本的 write_file / patch_file / remove_file / restore_file,find_files 取代 list_files / glob_files / search_files,其餘類推。
自 v1.0.27 起所有工具 —— 內建、script_*、api_*、ext_*、mcp__* —— 在第一輪就帶完整參數 schema,並依名稱排序,讓工具區塊在各輪之間逐 byte 相同、provider 的 prompt cache 持續命中。AlwaysLoad 旗標仍標在 15 個工具上(ask_user、calculate、chat_history、edit_file、fetch_page、find_files、find_tools、http_request、read_files、reasoning_guide、run_command、run_skill、search_web、write_result、write_todo),但已不影響送出內容;原本只有名稱與描述的 stub 已移除。find_tools(mode=search) 將命中的 schema 作為工具輸出回傳,而不在執行中途改動工具清單,以免破壞快取。例外是 claude-code provider(以 agen --enable-claude-code 啟用):它只收到工具名稱與 find_tools 的完整 schema,呼叫其他工具前先透過 find_tools 取得 schema。
條件註冊
以下工具僅在前置條件存在時註冊,否則 LLM 完全看不到它們。
| 工具 | 併發 | 說明 |
|---|---|---|
generate_audio |
以已設定的 text-to-speech 模型朗讀文字,寫入 output 目錄(output_dir,未設定則 ~/Downloads,再不然 ~/.config/agenvoy/download/);回傳存檔路徑而非音訊資料。自 v1.0.13 起會向 provider 要求 opus,副檔名依回傳的 MIME 決定(opus/ogg 為 .ogg,另有 .mp3、.aac、.flac,預設回退 .wav)—— 附加到 Telegram 對話的 .ogg / .oga / .opus 會以語音訊息而非檔案送出。voice 指定 provider 的聲音名稱(OpenAI 用 alloy、Gemini 用 Kore),留空則用 provider 預設。上限 5 分鐘。(未選擇 text-to-speech 模型時排除 —— 以 /model tts 或 POST /v1/model {tts} 設定) |
|
generate_image |
由文字生成圖片並寫入磁碟;提供參考圖時亦可用於編修。回傳存檔路徑而非影像資料。上限 15 分鐘。(圖像產生器未設定時排除 —— 以 /model 或 POST /v1/model {image} 設定。自 v1.0.13 起該設定填的是 provider@model 形式的圖像模型,由各個握有憑證的 provider 以 image-only filter 探查,v1.0.18 起快取 15 分鐘;codex 仍為裸 provider 名稱,舊版存下的裸 provider 名稱也仍可解析) |
|
list_chatbot |
列出指定平台的已授權對話(platform=telegram 或 platform=discord)。(需 telegram_enabled / discord_enabled 旗標與 keychain 憑證同時具備) |
|
send_to_chatbot |
以 target_id 發送格式化訊息到已授權對話。Telegram:HTML + transient client。Discord:markdown + transient client。平台格式規則寫在 channel 的 system prompt,不透過工具取得 |
動態工具群組
除了內建註冊表,另有四種前綴在呼叫時才解析:
| 前綴 | 來源 |
|---|---|
script_* |
script 工具目錄下生成的工具 —— script.py 在沙箱中執行 |
api_* |
生成的 API 工具 —— 每個端點一份 JSON 描述檔 |
ext_* |
擴充工具,可為 API 或 script 實作 |
mcp__* |
已連線 MCP 伺服器所暴露的工具 |
RAG 是透過這個途徑而非內建工具接入:KuraDB 以一般 MCP 伺服器身分註冊,其 list_rag / search_rag 工具會以 mcp__ 前綴出現,未註冊或未連線時則完全消失。