需启用全部工具、用xml声明多工具、配置delegate_tool分发任务、启用异步执行、通过mcp桥接外部工具。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您希望 Hermes Agent 同时调用 terminal、browser、computer_use 等多个工具协同完成复杂任务,但实际执行中仅触发单一工具或出现工具冲突报错,则可能是由于工具注册未全部启用、执行上下文隔离缺失或调用链未显式声明所致。以下是实现 Hermes Agent 多工具并行调用的具体操作方法:
一、验证并启用全部所需工具
多工具调用的前提是所有目标工具均已在 Hermes Agent 运行时环境中完成注册与初始化,未启用的工具将被自动忽略,导致指令被截断或降级为纯文本响应。
1、启动 CLI 会话后输入 /skills 查看当前已加载工具列表。
2、确认 terminal、browser、computer_use、filesystem 等工具名后缀显示为 enabled;若为 disabled,需检查 environments/agent_loop.py 中 tools 列表是否包含对应模块导入语句。
3、在项目根目录下编辑 cli-config.yaml,确保 tools 节点中各工具的 enabled 字段设为 true,例如:computer_use: {enabled: true, backend: "cua-driver"}。
4、重启 hermes 进程并再次执行 /skills,观察日志中是否出现 Loaded tool: computer_use (v1.2.0) 类似提示行。
二、使用 XML 工具声明语法显式指定多工具调用
Hermes Agent 的开源模型(如 Hermes-2-Pro)依赖系统提示中的 XML 标签结构识别可调用工具集,自然语言描述不足以触发多个工具,必须通过结构化声明明确告知模型哪些工具可组合使用。
1、在系统提示(system prompt)中插入完整
2、在用户指令中使用 JSON 格式工具调用块,确保多个函数调用嵌套于同一轮响应中,例如:
{"name":"browser_navigate","arguments":{"url":"https://example.com"}} {"name":"execute_shell","arguments":{"command":"ls -l /tmp"}}
3、避免在单次响应中混用非标准格式(如中文描述+工具名),否则仅首个工具会被解析。
三、配置 delegate_tool 实现跨工具任务分发
delegate_tool 是 Hermes Agent 内置的子代理调度器,可将主任务按语义切分为多个子任务,并分别指派给最适配的工具执行,从而绕过单次响应只能返回一个工具调用的限制。
1、确认 tools/delegate_tool.py 文件存在且具备可执行权限。
2、构造含多阶段意图的自然语言指令,例如:“先打开 https://httpbin.org/json,再把返回内容保存为 /tmp/data.json,最后用 cat 命令输出前5行”。
3、在 cli-config.yaml 中启用 delegate_tool 并设置策略:
delegate_tool: {enabled: true, strategy: "sequential", max_subagents: 3}
4、执行指令后,观察日志中是否依次出现 [Sub-agent #1] → browser_navigate、[Sub-agent #2] → write_file、[Sub-agent #3] → execute_shell 等分阶段执行记录。
四、启用异步工具执行模式避免阻塞等待
默认同步调用模式下,前一工具未返回结果则后一工具无法启动,导致多工具流水线中断;启用异步模式后,各工具调用独立提交、并发执行,最终结果由主代理聚合。
1、在 environments/agent_loop.py 中定位 _tool_executor 初始化位置,将其替换为异步执行器:
_tool_executor = concurrent.futures.ThreadPoolExecutor(max_workers=8)
2、修改 tools/__init__.py,在每个工具类的 invoke 方法头部添加 @asyncio.coroutine 或 async/await 包装。
3、在 cli-config.yaml 中启用 async_execution 开关:
execution: {mode: "async", timeout_sec: 60}
4、发起多工具指令后,检查进程资源监控:应同时存在多个 python 线程处于 Running 状态,且 terminal 与 browser 工具日志时间戳高度重叠。
五、通过 MCP 协议桥接外部工具实现跨平台多工具协同
MCP(Model Communication Protocol)是 Hermes Agent 支持的标准协议接口,允许将本地不可用的工具(如 Windows GUI 自动化、iOS 模拟器控制)以远程服务形式接入,并与内置工具统一调度。
1、启动 MCP 兼容服务端,例如运行 cua-driver 的 macOS 后台服务并监听 http://127.0.0.1:8001/mcp。
2、在 cli-config.yaml 的 mcp_servers 节点中注册该地址:
mcp_servers: [{"name": "macos-computer", "url": "http://127.0.0.1:8001/mcp", "tools": ["click", "type_text", "scroll"]}]
3、在系统提示中扩展
4、发出混合指令如:“在 Safari 中打开百度,然后用鼠标点击搜索框,再输入‘Hermes Agent’”,验证 browser 工具与 MCP 注册的 click、type_text 是否被连续调用。











