🤖HermesBlog
Hermes 功能详解 · 第38篇2026/8/9· Easy Understand Hermes Agent

第38篇:多模型混合——MoA 智能融合

Hermes 功能详解第38篇:Mixture of Agents。多个模型答案融合更准。

MoA:多模型智囊团

第38篇:多模型混合——MoA 智能融合

嘿,朋友们!今天咱们来聊聊 Hermes 的“多模型混合”玩法。别被“MoA”这个高大上的缩写吓到,其实它就是把不同模型安排在不同岗位上,各干各的活儿,效率直接拉满。

两种模型槽位,各司其职

Hermes 把模型分成两大类:

  • 主模型(Main model)——负责“思考”。你发的每一条消息、每一次工具调用、每一段流式回复,都走它。
  • 辅助模型(Auxiliary models)——负责“打杂”。比如上下文压缩、图像分析、网页摘要、审批打分、MCP 工具路由、会话标题生成、技能搜索……一共 11 个槽位,每个都能单独覆盖。

简单说:主模型是大脑,辅助模型是手脚。手脚干得好,大脑就能专心思考。

快速上手:Nous Portal 一键配置

如果你是全新安装,最省事的方式是:

hermes setup --portal

一条命令搞定登录和供应商设置。想看看配了什么?用 hermes portal info 查看。Portal 订阅用户还能享受token 计费供应商 9 折优惠,真香。

设置主模型

打开仪表盘,点侧边栏的 Models,顶部就是 Model Settings 面板。点 Change 打开选择器:

  • 左侧:已认证的供应商(没配密钥的不会显示)
  • 右侧:该供应商的精选模型列表(不是原始 API 的全量 dump)

选好模型点 Switch,Hermes 会自动写入 ~/.hermes/config.yaml。注意:这只对新会话生效——已经打开的聊天标签页会继续用原来的模型。想热切换?在聊天里用 /model 斜杠命令。

中途切换的坑

在活跃会话中切换模型时,Hermes 会估算你的下一条消息是否触发上下文压缩。如果会话已经接近新模型的压缩阈值,切换时会收到警告。压缩会在切换后的第一条用户消息时执行。

⚠️ 重要警告:中途切换会重置提示缓存!因为缓存是按模型绑定的,切换后下一条消息要按全价重新读取整个对话(原本有 75–90% 折扣)。长会话中,这一次性重读可能比两个模型的单价差还贵。要切换就趁早,别等聊到一半再换。

数据训练分级的坑

muse-spark-1.2-contributor 这类模型有折扣,但代价是供应商可能拿你的数据训练。交互式选择会弹确认框,但无人值守的 Kanban 工作器和 cron 代理没法弹框,所以默认拒绝。

如果你能接受,记录一个持久确认:

hermes config set security.allow_data_training_tiers_noninteractive true

想撤销就:

hermes config unset security.allow_data_training_tiers_noninteractive

辅助模型:默认 auto,按需覆盖

Show auxiliary 展开 11 个任务槽位。每个默认都是 auto——意思是 Hermes 会尝试用主模型干这个活。如果主模型不可用或失败,会按 auxiliary.<task>.fallback_chain → 主 fallback_providers → 内置发现链依次回退。

当你觉得某个辅助任务用便宜点的小模型就够了,就单独覆盖它。比如图像分析用个视觉模型,网页摘要用个快速模型——省钱又提速

MoA 预设:谁在干活,谁在买单

MoA 其实是一个“虚拟供应商”,每个预设都像普通模型一样出现在模型选择器里。选一个预设时,聚合器(aggregator)才是真正干活的模型——它写回复、发工具调用;参考模型(reference models)先跑一遍,给聚合器提供分析。

这里有个容易忽略的点:整轮运行的费用几乎都算在聚合器头上。因为聚合器要跑完整个工具循环的每一步,而参考模型默认每个用户回合只建议一次。如果你的主模型挂在订阅供应商上,但聚合器在别家,那这轮是记在聚合器供应商的账上,而不是你的订阅里。hermes moa configurehermes moa list 只要发现聚合器供应商和你的 model.provider 不一致,就会打印一行提醒,比如:

Aggregator is on nous; the whole tool loop will be billed there, not to openai-codex.

桌面编辑器、hermes model/model 里也会把聚合器槽位标成“实际执行、实际计费”的那个。

提示缓存:MoA 不背这个锅

很多人担心 MoA 会打乱提示缓存,其实不会。主对话的缓存前缀始终是字节稳定的——选 MoA 预设就跟选普通模型一样,不会改动历史、换工具集或重建系统提示。

参考模型收到的是一份精简、确定的对话视图,前缀稳定,正常缓存。聚合器这边,参考输出是作为单独一条尾部用户消息塞进去的,永远不跟你的消息合并。因为它待在稳定前缀的下面,所以不会让任何缓存前缀失效——聚合器对注入点以上的内容照样命中缓存,只有新追加的尾巴是新的。

在 Anthropic Messages、Bedrock Converse 或原生 Gemini 协议上,相邻的两条用户消息会合并成一条消息里的两个内容块,你的消息块和后续迭代重放的一模一样,缓存前缀照样穿过你的消息。在 OpenAI 兼容协议上,请求结尾是 user(你的消息), user(建议),少数强制 user/assistant 交替的模板(llama.cpp、vLLM 的 Jinja 模板、部分 OpenRouter 路由)会报 400,比如 Conversation roles must alternate。Hermes 会自己兜底:把这一条请求的两条相邻用户消息合并重试,并记住这个聚合器目的地(端点 + 模型),本会话后续回合直接合并,其他目的地仍保持拆分、缓存稳定的形态。

所以 MoA 在两种调用上都不牺牲提示缓存。它真正的成本就是多出来的参考调用(默认 fanout 下每个用户回合一次)——你为多个模型视角付费,而不是为坏掉的缓存付费。

小结

多模型混合的核心思路:主模型负责深度思考,辅助模型负责轻量任务,MoA 预设则让聚合器挑大梁、参考模型出主意。配合 Nous Portal 一键配置、中途切换警告、数据训练分级确认,你就能在成本、速度和智能之间找到最佳平衡点。

下期见!👋

📖 官方文档

本文根据 Hermes Agent 官方文档编写,原文见:官方文档 › user-guide/features/mixture-of-agents