📓 Hermes 折腾日记|小白摸索中,欢迎一起踩坑

海狸 2026-05-02 11:48 1

【20260502】Hermes 融合 MiniMax Token Plan MCP 实现图片理解


最近在折腾 Hermes 的图片理解能力,记录一下解决过程。


背景


Hermes 的 auxiliary.vision 配置可以指定图片理解的后端,但当主渠道(如 MiniMax 的 OpenAI 兼容端点)失败时,没有自动 fallback 机制。


而 MiniMax 的 MCP Server(minimax-coding-plan-mcp)提供了独立的 understand_image 工具,但 Hermes 默认不会用它做图片理解。


目标


当 Auxiliary Vision 失败时,自动启用 mcp_minimax_understand_image 作为 fallback。


实现思路


vision_tools.pyvision_analyze_tool 函数中,捕获 Auxiliary Vision 的异常后,尝试通过 MCP server 直接调用 understand_image 工具。


关键代码


核心逻辑:



  1. 通过 tools.mcp_tool_servers 获取已连接的 MCP 服务器

  2. 找到 MiniMax 服务器,获取其 session

  3. 使用 _run_on_mcp_loop 在 MCP 事件循环中执行 call_tool

  4. 解析返回的 CallToolResult,提取图片分析文本


# 使用 _run_on_mcp_loop 执行异步 MCP 调用                                                                                                                                                                                                                    
from tools.mcp_tool import _run_on_mcp_loop

async def _mcp_call():
async with server._rpc_lock:
result = await server.session.call_tool(mcp_tool_name, arguments={
"prompt": comprehensive_prompt or "描述这张图片的内容",
"image_source": str(temp_image_path)
})
return result

result = _run_on_mcp_loop(_mcp_call(), timeout=60.0)

踩坑记录

1. 直接 await 会死锁 - MCP session 运行在独立事件循环,直接 await 会卡住
2. _servers 可能为空 - 需要 gateway 正常运行后才能获取到
3. session.call_tool 返回 CallToolResult - 需要手动解析 .content 和 .isError

验证结果

[Lark] 图片消息

Auxiliary Vision 失败 (gpt-4o-mini 模型不支持)

MCP Fallback 触发

mcp_minimax_understand_image 成功分析图片

图片分析结果正常返回,描述了自动驾驶车辆和智能城市基础设施。

配置文件

auxiliary:
vision:
provider: openai
base_url: https://api.minimaxi.com/v1
api_key: sk-cp-xxx

mcp_servers:
MiniMax:
command: uvx
args:
- minimax-coding-plan-mcp
- -y
env:
MINIMAX_API_KEY: ${MINIMAX_TOKEN_PLAN_KEY}
MINIMAX_API_HOST: https://api.minimaxi.com

总结

Hermes 的 MCP 集成比较灵活,可以通过 _run_on_mcp_loop 在工具处理器中调用其他 MCP 工具。关键是理解 MCP 使用独立事件循环,不能直接 await。

--- 欢迎佬友们交流,给我一些新的想法💡方案
最新回复 (9)
  • xinxinzi 05-02 12:47
    1

    感觉最近hermes从0.9升级到0.11候bug变多了

  • lucian 05-02 13:48
    2

    是的,直观体验是:升级之后的第一次启动,巨巨巨巨巨巨卡,感觉也变傻了。

    这个agent会越用越消耗token,请一定要让它日常对话把skill卸载,经常整理记忆和用户习惯

  • xinxinzi 05-02 14:19
    3

    我是安装了hermes web ui,界面比较舒服,而且更新也很频繁,但是自从hermes升级到0.11后,感觉hermes web ui就开始变卡了,不知道是ui的问题还是新版本hermes的问题,可能两者都有一些吧 ^-^

  • MineMine 05-02 14:54
    4

    而 MiniMax 的 MCP Server(minimax-coding-plan-mcp)提供了独立的 understand_image 工具,但 Hermes 默认不会用它做图片理解。



    其实可以换个 OpenRouter 上的免费模型就行,让 Hermes 做个定时任务,定期更新个免费的视觉模型就行。


    比如:Nemotron 3 Nano Omni (free) - API Pricing & Providers | OpenRouter

  • 海狸 楼主 05-02 16:41
    5

    改天试试 研究一下咋搞一下 看看效果咋样

  • 海狸 楼主 05-05 10:24
    6

    各位佬友 知道怎么让Hermes与飞书每个对话都回复到一个卡片吗?


    这一个问题酷酷回复好几条有时候真烦啊 想看见运行过程,又不想一个问题回复多个卡片

  • GG Bond 06-12 20:27
    7

    感谢大佬,终于解决了困扰我好久的Hermes视觉工具不可用了

  • 归晴 06-12 20:28
    8

    你这个怎么这么奇怪的?不应该是给你返回一堆的吗

  • 归晴 06-12 20:30
    9

    另外我想问下都是怎么使用hermes配置这个browser的呢?我想配置cdp一直搞不定,配置的chrome profile都不是指定的,老是提示说被封锁了

* 帖子来源Linux.do
返回