【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 11 篇】

高级能力扩展: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 语音走一遍最直观:

  1. 用户发语音
  2. 适配器下载
  3. STT 转文字
  4. agent 处理
  5. TTS 合成语音
  6. 发回

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.pyagents/s17_browser_automation.pyagents/s18_voice_vision.pyagents/s19_cli_and_web_interface.py(本文代码素材,均真实可运行)
  • Hermes Agent 教学仓库:docs/zh/s16-mcp.mddocs/zh/s19-cli-and-web-interface.md(四项高级能力详解)

📥 源码获取 :如需本系列全部源码,请在以下链接克隆:

https://gitcode.com/ganxin7932508/learn-hermes-agent.git

相关推荐
En^_^Joy1 小时前
Django项目配置全攻略:settings配置文件
后端·python·django
for_ever_love__2 小时前
python基础语法学习: 异常的传递性
开发语言·python·学习
AC赳赳老秦2 小时前
公开图片 OCR 数据提取:OpenClaw 合规采集公开信息图,识别文字与表格并转化为结构化数据
java·大数据·前端·数据库·python·php·openclaw
麻雀飞吧4 小时前
零基础选量化工具,先把问题说清楚
人工智能·python
段一凡-华北理工大学4 小时前
AI推动工业智能化转型~系列文章20:工业 AI 平台架构:云-边-端协同的技术体系
人工智能·python·架构·工业平台·云-边协同
CodeBlog-star4 小时前
Harness Engineering:Pi Agent 架构深度解析
人工智能·python·架构·harness工程
简不变4 小时前
将components下的文件夹复制到别一个文件夹下,并重新生成CMakelist.txt文件
python
AC赳赳老秦4 小时前
风控岗应用:OpenClaw 采集公开司法与经营异常数据,自动生成企业风险评估报告
大数据·c语言·数据库·人工智能·python·php·openclaw