高级能力扩展:MCP、浏览器、语音视觉与终端界面
导读: Hermes 系列第 11 篇,覆盖阶段 4 的四项高级能力:MCP 协议接入外部进程工具、Playwright 驱动真实浏览器、语音视觉多模态管道、CLI 与 Web 交互界面。本篇为概览式,聚焦每章核心机制与关键代码,帮你建立完整的能力地图,为终篇自我进化闭环做铺垫。
阶段 4 开场:从"能做事"到"能接入一切"
前 10 篇我们完成了 Hermes 的阶段 1-3:核心循环、记忆、规划、工具系统、Gateway。到这一步,Hermes 已经是一个能自主完成任务的 agent 了。但你会发现它有个边界------它活在文本和 API 的世界里。
阶段 4 要打破这堵墙。四项能力分别是:
- s16 MCP:接外部进程的工具
- s17 浏览器自动化:接真实网页
- s18 语音视觉:接人的感官
- s19 CLI 与 Web:接用户本身
一句话总结:这四项全是"接入"。不是新的大脑,而是新的感官和手脚。
s16:MCP------让外部进程成为你的工具库
MCP(Model Context Protocol)是一个标准协议,让外部进程把自己的能力暴露给 agent。和内置工具的区别很本质:内置工具写在代码里,MCP 工具来自外部进程。
但对 agent 来说,两种工具用起来一模一样------统一走 registry 的 handler 调用。
为什么不用内置工具写 GitHub API?
这是初学者最爱问的问题。每个 API 都要从头写 handler、schema、错误处理;工具和 agent 进程绑死,Node 写的 server 崩溃 agent 跟着崩;没有统一的发现机制。
MCP 统一了三件事:
- 发现:list_tools
- 调用:call_tool
- 传输:stdio / HTTP
前缀规则:避免撞名的关键
MCP 工具注册 registry 时加 mcp_<server名>_ 前缀:
text
MCP server "github" 的 "list_issues"
→ mcp_github_list_issues, toolset=mcp-github
撞名时内置工具优先。这个规则简单但重要------不然后面工具多了你会疯掉。
同步/异步桥接:核心机制
registry handler 是同步的,MCP 调用是异步的。MCP 连接是长驻异步连接(stdio 管道/HTTP 长连接),跑在独立后台线程。桥接代码:
python
def run_on_mcp_loop(coro, timeout=30) -> str:
future = asyncio.run_coroutine_threadsafe(coro, _mcp_loop)
return future.result(timeout=timeout)
asyncio.run_coroutine_threadsafe 把协程丢进后台事件循环,主线程同步等待结果。这是 MCP 集成的核心机制,理解它你就理解了一半。
配置在 config.yaml 的 mcp_servers,stdio 用 command/args/env,HTTP 用 url/headers。tools.include 白名单过滤。

s17:浏览器自动化------让 agent 做真实用户能做的事
通过 Playwright 控制真实浏览器,agent 能点按钮、填表单、滚动、截图------做真实用户能做的任何事。
两步操作模型
工具设计很简洁,就两步:
- navigate:导航到页面
- interact:交互操作
工具列表:browser_navigate / browser_click / browser_type / browser_screenshot / browser_evaluate。
accessibility tree vs 截图+视觉
这是浏览器自动化最关键的决策点:
- 能用 accessibility tree 就用------快、准、便宜
- 复杂页面(canvas、图表)用截图 + 视觉模型分析
不要一上来就截图喂视觉模型,贵且慢。先试 accessibility tree,不行再升级。
会话保持:登录一次,全程有效
浏览器状态在调用之间保持。登录后 cookie 保留,下次调用直接看到登录后页面,不需要重新登录。这是真实浏览器相对 API 的巨大优势。
providers 支持本地 Playwright 和 Browserbase(云端)。

s18:语音视觉------多模态管道
多模态管道三件套:
- 视觉:图片 → 文字描述
- STT:语音 → 文字(转写)
- TTS:文字 → 语音(合成)
核心认知:LLM 不直接"看"图,看的是描述。图片经视觉模型转成文字描述,作为 text 进上下文。
Telegram 语音全流程
用 Telegram 语音走一遍最直观:
- 用户发语音
- 适配器下载
- STT 转文字
- agent 处理
- TTS 合成语音
- 发回

s19:CLI 与 Web 界面------交互的最后一公里
交互式终端(prompt_toolkit + Rich)+ Web 管理面板。四个部分:
- 交互式终端:prompt_toolkit 提供输入体验
- 流式输出:Rich 实时渲染
- 斜杠命令系统:/model、/new、/help 等
- Web 管理面板:FastAPI + CORS 只允许 localhost

四项能力的共同点:都是"接入"
回头看,这四项能力本质相同------接外部工具、接浏览器、接感官、接用户。它们不是新的智能,而是新的通道。Hermes 的大脑没变,但它的世界变大了。
避坑:四章 8 错精选
s16 MCP 四错:
- API key 传给 MCP server 环境变量------只传它需要的
- 不过滤工具全注册------50 个工具模型选择难、token 大
- MCP server 崩了不知道------自动重连:初始 3 次 + 运行中 5 次指数退避
- 撞名------用前缀 + 内置优先
s17 浏览器:无重大坑,但记住优先 accessibility tree。
s18 语音视觉:注意 STT 的噪音处理和 TTS 的延迟。
s19 CLI 两错:
- print 打断输入区------用 Rich live 输出
- 允许所有 CORS 来源------Web 面板只本地用,别开放
小结与预告
阶段 4 让 Hermes 从"能做事"变成"能接入一切":MCP 接工具、浏览器接网页、语音视觉接感官、CLI 接用户。
下一篇是系列终篇------第 12 篇:自我进化闭环。Hermes 将拥有反思、学习、迭代自身的能力,从"工具"走向"生命"。这是系列的收官。
你准备先深入哪一项能力?评论区告诉我,后续可以单独拆解。
参考文献
- Hermes Agent 教学仓库:
agents/s16_mcp.py、agents/s17_browser_automation.py、agents/s18_voice_vision.py、agents/s19_cli_and_web_interface.py(本文代码素材,均真实可运行) - Hermes Agent 教学仓库:
docs/zh/s16-mcp.md至docs/zh/s19-cli-and-web-interface.md(四项高级能力详解)
📥 源码获取 :如需本系列全部源码,请在以下链接克隆: