40+ 内置工具全解:执行/信息/媒体/记忆/协调五大类 ------ 智能体手脚架完全手册
一个智能体(Agent)的能力边界,由它所能调用的工具决定。Honcho 内置了超过 40 种工具,分为五大类:执行、信息、媒体、记忆、协调。本文将逐一拆解,并给出选型与安全建议。
前言:为什么工具是智能体的"手脚"?
如果把大语言模型(LLM)比作大脑,那么工具(Tools)就是智能体的手脚和感官。没有工具,LLM 只能纸上谈兵------它知道如何计算,但不会真的运行代码;它知道天气 API 的用法,但无法主动联网获取实时温度。
Honcho 智能体框架内置了 40 多种工具,覆盖了从终端命令执行、代码运行、文件操作,到网页浏览、图像生成、语音合成,再到长期记忆、任务调度、多智能体协作等全场景。这些工具既可以单独调用,也可以通过 Toolset 机制按需组合,形成强大的自动化工作流。
本文将从分类逻辑出发,逐类讲解代表性工具的使用方法、典型场景、安全注意事项,并给出最佳实践。全文包含 5 张 mermaid 流程图,帮助你直观理解工具间的协作关系。
1. 工具总览与分类逻辑
1.1 为什么需要分类?
40 多种工具如果平铺罗列,会让开发者无从下手。Honcho 按照工具的职责边界划分为五大类:
| 类别 | 英文标识 | 核心职责 | 典型工具示例 |
|---|---|---|---|
| 执行类 | Executors | 在真实环境中产生副作用 | terminal, code_execution, file |
| 信息类 | Informers | 从外部获取数据 | web, browser, session_search |
| 媒体类 | Media | 处理多媒体内容 | vision, image_gen, tts |
| 记忆类 | Memory | 持久化存储与检索 | memory, skills, todo, cronjob |
| 协调类 | Coordinators | 管理多智能体、用户交互 | delegation, moa, clarify |
这种分类不仅便于文档检索,更重要的是影响安全策略:执行类工具通常需要最高权限确认,而信息类工具相对安全。
1.2 总览图:五大类工具关系
智能体核心
副作用
读取
生成/理解
读写
交互
交互
协调类
任务委派
多智能体
澄清询问
记忆类
长期记忆
技能库
待办
定时任务
媒体类
图像识别
图像生成
语音合成
信息类
网页抓取
浏览器自动化
会话搜索
执行类
Terminal 命令
代码执行
文件操作
Honcho Agent
环境/文件系统
外部数据源
媒体内容
持久化存储
User
2. 执行类工具:让智能体真正"动手"
执行类工具是智能体与现实环境交互的桥梁。它们会改变系统状态------创建文件、运行进程、修改配置,因此默认需要用户授权。
2.1 terminal ------ 命令行执行器
功能:在宿主系统(或容器内)执行任意 shell 命令,返回 stdout/stderr 和退出码。
典型场景:
- 自动化部署脚本
- 系统监控(
df -h,top -bn1) - 批量文件处理(
rename,grep)
使用示例(伪代码):
python
result = agent.call_tool("terminal", {
"command": "ls -la /var/log",
"timeout": 30
})
print(result.stdout)
安全机制:
- 默认禁用危险命令:
rm -rf /,dd,mkfs等会被拦截。 - 工作目录限制在沙箱内(可通过配置放宽)。
- 每次执行前弹出确认(高安全模式)。
2.2 code_execution ------ 代码运行沙箱
功能 :在隔离环境中执行 Python、JavaScript、Bash 等代码片段,返回输出。与 terminal 的区别在于:code_execution 更侧重短脚本、临时计算,自带超时和资源限制。
支持语言:Python 3.11+、Node.js 18+、Bash。
典型场景:
- 数据清洗:用户给出 CSV 样例,要求"计算平均值"。
- 算法验证:用户问"斐波那契数列第 30 项",智能体直接运行代码返回结果。
- 教育辅导:执行学生提交的代码并反馈错误。
沙箱限制:
- 网络访问受限(只能访问白名单域名)。
- 文件读写局限于临时目录。
- CPU 时间 ≤ 5 秒,内存 ≤ 256 MB。
代码执行沙箱 Honcho Agent 用户 代码执行沙箱 Honcho Agent 用户 若代码试图删除文件,立即终止 "计算 1到100的质数和" 注入代码片段 + 测试用例 隔离执行 输出结果 + 耗时 "1060 (质数之和)"
2.3 file ------ 文件系统操作
功能:读写、复制、移动、删除文件或目录。支持文本和二进制文件。
细分工具 :file_read, file_write, file_append, file_delete, file_list, file_mkdir。
典型场景:
- 读取配置文件,让智能体根据配置生成报告。
- 保存对话历史为 Markdown 文件。
- 整理下载目录(批量重命名)。
安全设计:
- 路径遍历防护:禁止使用
../跳出基础目录。 - 删除操作默认需要二次确认。
- 支持设置文件大小上限(例如读取文件不超过 10 MB)。
2.4 执行类工具的安全平衡
| 工具 | 风险等级 | 默认权限 | 推荐场景 |
|---|---|---|---|
| terminal | 🔴 高 | 需授权 | 运维自动化、本地开发 |
| code_execution | 🟡 中 | 沙箱内自动 | 计算、代码教学 |
| file | 🟡 中 | 需授权写操作 | 日志记录、配置管理 |
3. 信息类工具:打开智能体的眼睛与耳朵
信息类工具帮助智能体感知外部世界------从网页、浏览器、历史会话中提取信息。
3.1 web ------ 网页内容抓取
功能:发送 HTTP 请求,获取 HTML/JSON/纯文本内容,并自动提取正文(去除导航、广告等噪音)。
参数 :url, method(GET/POST), headers, body, extract_main(bool)。
典型场景:
- 实时新闻摘要:抓取 RSS 源或新闻页面。
- 技术文档查询:读取官方文档并回答用户问题。
- 价格监控:定期抓取商品页面。
智能特性 :支持 ?query= 参数自动识别百度/Google 搜索结果页。
3.2 browser ------ 浏览器自动化(Playwright 后端)
功能:启动无头或可视化浏览器,执行点击、输入、截图、等待元素等操作。适用于 JavaScript 渲染的现代网站。
操作集 :navigate, click, type, screenshot, evaluate(执行 JS)。
典型场景:
- 登录后抓取数据(需用户提供 Cookie 或凭证)。
- 自动化表单填写。
- 单页应用(SPA)内容提取。
注意 :browser 比 web 慢且消耗资源,仅在必须渲染 JS 时使用。
3.3 session_search ------ 会话内语义搜索
功能:在当前对话的历史消息中进行向量检索,找到与当前问题最相关的历史片段。
与普通记忆的区别 :session_search 只检索本次会话(session)内的内容,不跨会话。适合需要引用刚才讨论过的细节的场景。
使用示例 :用户问"我之前提到的那个函数名是什么?",智能体调用 session_search(query="函数名", top_k=1) 找到之前的消息。
会话历史
相似度最高
用户: 我定义了一个process_data函数
助手: 它接受一个列表参数
用户: 能排序吗
向量化
会话向量库
用户: 那个函数叫什么
助手: 您指的是process_data函数
3.4 信息类工具对比
| 工具 | 适用场景 | 限制 |
|---|---|---|
| web | 静态页面、API、RSS | 无法执行 JS,可能被反爬 |
| browser | 现代 SPA、需要登录/交互的站点 | 速度慢、资源重、需处理验证码 |
| session_search | 长对话中的上下文回溯 | 仅限当前会话,不跨会话持久化 |
4. 媒体类工具:让智能体看会听会说
媒体类工具赋予智能体多模态能力。
4.1 vision ------ 图像理解
功能:基于多模态大模型(如 GPT-4V、LLaVA)分析图片内容,返回描述、物体识别、文字提取(OCR)等。
输入:图片 URL 或 base64 编码。
输出:结构化文本描述。
典型场景:
- 识别截图中的 UI 元素,辅助自动化测试。
- 从扫描文档中提取表格数据。
- 根据用户上传的草图生成前端代码。
4.2 image_gen ------ 图像生成
功能:调用 Stable Diffusion、DALL‑E 等模型根据文本提示生成图片。
参数 :prompt, negative_prompt, width, height, steps。
典型场景:
- 根据用户需求生成配图(PPT 插图、UI 素材)。
- 创意设计迭代:智能体生成多个版本供用户选择。
输出:返回图片 URL(或文件路径),并自动上传到 CDN。
4.3 tts ------ 文本转语音
功能:将文本合成为自然语音,支持多语言、多音色。
典型场景:
- 无障碍阅读:将长回复转为语音。
- 有声内容生成(播客、教学音频)。
- 语音助手的前端。
参数 :text, voice(en-US-Female, zh-CN-XiaoxiaoNeural), speed。
同时返回文本
用户收听
Honcho Agent
TTS工具
生成音频文件
4.4 媒体类工具的注意事项
- 成本:图像生成和语音合成通常按量计费,需设置预算上限。
- 内容安全:自动过滤 NSFW 提示词,防止生成不当内容。
- 延迟:图像生成可能需要 5-15 秒,建议异步通知。
5. 记忆类工具:让智能体拥有长期记忆与习惯
如果说执行类是手脚,信息类是感官,那么记忆类就是大脑的海马体------负责长期存储、技能学习、任务规划。
5.1 memory ------ 长期语义记忆
功能 :将用户陈述的事实、偏好存储到向量数据库,支持跨会话检索。与 session_search 的区别:memory 是永久性的。
核心操作:
remember(key, value)或remember_auto(自动提取关键信息)recall(query, top_k)语义检索forget(key)删除
典型场景:
- 记住用户"我是素食主义者",在后续所有会话中推荐素食餐厅。
- 存储项目约定:"我们团队使用 tabs 缩进"。
5.2 skills ------ 技能库
功能:允许智能体学习新的工具调用序列,并将其封装为一个"技能"。类似于人类的肌肉记忆。
示例 :用户多次演示"抓取网页 → 提取正文 → 翻译成中文 → 保存到文件"这个流程,智能体可以将其保存为 fetch_translate 技能。下次用户只需说"用那个技能处理这篇英文文章",智能体就会自动调用。
内部实现:技能本质是一个 JSON 描述的工作流,包含步骤、输入输出映射。
5.3 todo ------ 待办事项管理
功能:维护当前任务列表,支持增删改查、标记完成、排序。
典型场景:
- 智能体帮用户拆解复杂任务:"请将'写年度报告'拆成 5 个待办项"。
- 跨会话的任务提醒:用户关闭对话后,下次打开仍能看到未完成的 todo。
命令示例 :todo add "调研竞品", todo list, todo done 2。
5.4 cronjob ------ 定时任务
功能:设置周期性执行某个工具或工作流。基于 cron 语法。
典型场景:
- 每天早上 8 点抓取新闻并发送摘要到用户邮箱。
- 每小时检查服务器磁盘空间,超过阈值时告警。
安全限制:每个智能体最多 10 个 cronjob,最小间隔 5 分钟,避免资源滥用。
00:00 00:15 00:30 00:45 01:00 01:15 01:30 01:45 02:00 用户说"记住我的API密钥" 用户创建todo"备份数据库" 后续对话调用记忆 智能体设置cronjob每天2点执行 cronjob触发备份工具 长期记忆 待办与定时 记忆类工具协作示例
6. 协调类工具:管理复杂交互与多智能体
协调类工具解决的是"智能体如何与其他智能体或人类高效协作"的问题。
6.1 delegation ------ 任务委派
功能:当前智能体将子任务委托给另一个专门智能体(或同一个智能体的不同实例)。类似于团队中的"组长分配任务"。
典型场景:
- 主智能体负责综合问答,遇到数学计算时委托给
calculator_agent。 - 用户要求"生成图片并配上描述",主智能体委托
image_gen_agent和caption_agent并行工作。
参数 :target_agent_id, task_description, input_data, expected_output_format。
6.2 moa ------ 多智能体协作(Mixture of Agents)
功能:同时调用多个智能体处理同一问题,然后通过投票或加权融合得到最终答案。灵感来自 MoA(Mixture of Agents)论文。
典型场景:
- 高可靠性需求:让 3 个不同模型(GPT-4, Claude, Gemini)分别回答,再让一个裁判智能体选出最佳答案。
- 多视角分析:同时从技术、商业、伦理三个角度分析一个决策。
使用示例:
json
{
"tool": "moa",
"params": {
"agents": ["gpt4_agent", "claude_agent", "gemini_agent"],
"aggregation": "vote",
"query": "解释量子计算的基本原理"
}
}
6.3 clarify ------ 澄清询问
功能:当用户指令模糊或缺少关键信息时,主动生成一个结构化的问题列表,引导用户补充信息。
与传统"再问一遍"的区别 :clarify 会基于任务模板和历史画像,提出最少但最有效的问题,并支持多轮澄清。
典型场景:
- 用户说"帮我订机票"。智能体调用
clarify,返回{"questions": ["出发地?", "目的地?", "日期?"]},然后一次性收集所有答案。
执行原任务
不充分
收到模糊指令
调用clarify
clarify
生成问题列表
用户回答
检查是否充分
充分
6.4 协调类工具的设计哲学
- 降低认知负担 :用户不需要知道背后有几个智能体在工作,
delegation和moa对用户透明。 - 提升容错性 :
moa的多模型投票可以避免单一模型的偏见。 - 减少往返次数 :
clarify一次性收集所有缺失信息,而不是多轮低效提问。
7. Toolset 按需启用:安全与效率平衡
Honcho 不会一次性加载全部 40+ 工具。原因有三:
- 上下文长度限制:每个工具的描述都会占用 LLM 的上下文窗口。
- 安全性:高风险的执行类工具不应在不需要时可用。
- 推理效率:工具选择也是计算成本,减少候选工具可加快决策。
7.1 Toolset 定义
Toolset 是工具的逻辑分组。开发者可以创建自定义 Toolset,例如:
basic_toolset:web,memory,clarify(适用于客服机器人)developer_toolset:terminal,code_execution,file,browser(适用于编程助手)creative_toolset:image_gen,tts,vision(适用于设计助手)
7.2 按需启用策略
python
# 示例:根据任务动态启用工具
if task_type == "coding":
agent.enable_tools(["terminal", "code_execution", "file"])
elif task_type == "research":
agent.enable_tools(["web", "browser", "session_search", "memory"])
else:
agent.enable_tools(["clarify", "web"]) # 默认最小集
7.3 安全与效率平衡表
| 场景 | 推荐 Toolset | 理由 |
|---|---|---|
| 公开聊天机器人 | 只启用 memory(只读), clarify |
避免任意代码执行风险 |
| 个人编程助手(本地) | 全部执行类 + 信息类 | 用户完全信任,效率优先 |
| 企业内部分析师 | web, browser, file(受限), moa |
需要抓取数据,但禁止删除文件 |
| 儿童教育应用 | vision, tts, image_gen |
媒体类友好,禁用终端和文件删除 |
8. 总结:工具是智能体的"手脚"
经过对五大类 40+ 工具的全面拆解,我们可以得出以下结论:
-
分类是理解的第一步:执行、信息、媒体、记忆、协调------每类工具解决一类问题,组合使用可覆盖绝大多数自动化需求。
-
安全与能力需要平衡:执行类工具强大但危险,必须配合沙箱、授权和 Toolset 按需启用;信息类工具相对安全但可能被反爬;媒体类工具成本高需预算控制。
-
记忆与协调是高级智能的体现:长期记忆让智能体不再是"金鱼大脑",协调类工具让多智能体协作从幻想走向现实。
-
实际选型建议:
- 新手从
web+code_execution+memory开始。 - 进阶加入
browser和vision。 - 生产环境务必使用 Toolset 限制,并开启所有安全钩子。
- 新手从
一张图总结工具生态
Honcho 40+ 工具
执行类
terminal
code_execution
file读写删列
信息类
web抓取
browser自动化
session_search
媒体类
vision理解
image_gen生成
tts语音
记忆类
memory长期
skills技能
todo待办
cronjob定时
协调类
delegation委派
moa多模型投票
clarify澄清
未来扩展
Honcho 的工具系统是可插拔的。社区可以贡献新工具,例如:
database:直接查询 SQL 数据库。email:发送和接收邮件。slack:与团队协作工具集成。
工具赋予了智能体行动力,而行动力才是 AI 从"玩具"走向"工具"的关键。掌握 Honcho 的工具系统,你就能构建出真正自动化的智能体应用。
下一步:尝试在自己的 Honcho 实例中定义一个 Toolset,并为你的特定场景(例如:自动生成周报、监控竞品价格、管理个人知识库)编写第一个工具调用流程。
附录:快速参考表(部分工具)
| 工具名 | 类别 | 典型调用参数 | 输出 |
|---|---|---|---|
| terminal | 执行 | {"command":"echo hello"} |
{"stdout":"hello","code":0} |
| code_execution | 执行 | {"language":"python","code":"print(2+2)"} |
{"output":"4"} |
| file_read | 执行 | {"path":"/data/notes.txt"} |
{"content":"..."} |
| web | 信息 | {"url":"https://example.com"} |
{"title":"...","text":"..."} |
| browser | 信息 | {"action":"navigate","url":"..."} |
{"screenshot":"base64..."} |
| session_search | 信息 | {"query":"之前的函数名","top_k":1} |
[{"message":"...","score":0.92}] |
| vision | 媒体 | {"image_url":"..."} |
{"description":"A cat"} |
| image_gen | 媒体 | {"prompt":"sunset over mountains"} |
{"image_url":"..."} |
| tts | 媒体 | {"text":"Hello","voice":"en-US-Jenny"} |
{"audio_url":"..."} |
| memory_recall | 记忆 | {"query":"food preference"} |
[{"fact":"素食主义者"}] |
| todo_add | 记忆 | {"task":"Buy milk"} |
{"id":3,"status":"pending"} |
| cronjob_create | 记忆 | {"schedule":"0 8 * * *","action":"web_get"} |
{"job_id":"cron_123"} |
| delegation | 协调 | {"to":"math_agent","task":"计算 5^3"} |
{"result":125} |
| moa | 协调 | {"agents":["a","b"],"query":"..."} |
{"final_answer":"..."} |
| clarify | 协调 | {"intent":"book_flight","missing_fields":[]} |
{"questions":["出发地?"]} |