惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

G
Google Developers Blog
Cisco Talos Blog
Cisco Talos Blog
Y
Y Combinator Blog
罗磊的独立博客
Stack Overflow Blog
Stack Overflow Blog
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
J
Java Code Geeks
C
CXSECURITY Database RSS Feed - CXSecurity.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
博客园 - 聂微东
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
P
Privacy & Cybersecurity Law Blog
L
LangChain Blog
L
LINUX DO - 热门话题
Hugging Face - Blog
Hugging Face - Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
P
Privacy International News Feed
F
Full Disclosure
S
Schneier on Security
T
Tenable Blog
量子位
NISL@THU
NISL@THU
Latest news
Latest news
V
Visual Studio Blog
C
Check Point Blog
aimingoo的专栏
aimingoo的专栏
博客园_首页
K
Kaspersky official blog
L
Lohrmann on Cybersecurity
美团技术团队
P
Proofpoint News Feed
P
Palo Alto Networks Blog
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
人人都是产品经理
人人都是产品经理
The Hacker News
The Hacker News
AWS News Blog
AWS News Blog
S
Securelist
The Register - Security
The Register - Security
G
GRAHAM CLULEY
Project Zero
Project Zero
T
The Blog of Author Tim Ferriss
Recent Announcements
Recent Announcements
Engineering at Meta
Engineering at Meta
C
Cisco Blogs

翔宇工作流

Hermes Kanban 多 Agent 编排:让多个 Agent 并行协作完成复杂任务 Hermes Agent + Home Assistant:用 AI 语音管家控制全屋智能家居 Hermes Agent 本地模型指南:Ollama + LM Studio 性能调优与模型选型 一人公司 AI 消息中枢:Hermes Agent 年省 12000 元实测 Hermes Agent 变现指南:7 种可落地的 AI Agent 商业模式详解 Hermes SOUL.md 人设工程 + 三层记忆深度解析:让 Agent 精确遵循你的人格 Hermes 语音模式完全攻略:CLI + Telegram + Discord 三表面免费搭建 Hermes Skill 自我进化系统:让 AI 助手越用越聪明 循环工程 Loop Engineering 指南:Skill 解决终止条件难题 用 Hermes Agent 搭建跨平台 AI 消息助手:一个 Agent 同时管 Telegram + Discord + 微信 Ghost 建站最佳实践:一人公司从零到有订阅者的完整手册 Hermes Agent Cron 定时自动化:任务链 + 预运行门控 + 零成本触发 Agent 工作流完全指南 2026:一人公司如何用多 Agent 自动化运营 Claude Code + Hermes MCP 消息桥接实战:任务完成自动通知手机 AI 知识库最佳实践:CLAUDE.md 多级路由 + 纯文件系统完整指南 零基础 AI 编程入门 2026:不会写代码,也能用 AI 做出产品 2026 年 8 大 AI Agent 横评:从 OpenClaw 到 Hermes,谁最适合你? Runway Gen-4.5 提示词怎么写?八层框架从零到电影级 2026 AI 编程工具横评:Cursor vs Claude Code vs Codex vs Windsurf 深度对比 Codex 最佳实践完整指南 Hermes Agent Docker 部署实战:VPS 24/7 运行完整方案 Veo 3.1 视频提示词怎么写?八层框架从零到电影级 Claude Code 完全指南 2026:安装到 Agent 工作流 | 翔宇工作流 AI 配图不用找参考图:GPT Image 2 + 100 种风格方案 | 翔宇工作流 Hermes Agent 完全指南:架构、部署、成本对比与 14 篇实战教程导航 可灵 AI 视频提示词怎么写?八层框架从零到电影级 MCP 最佳实践:8 大场景推荐 + 安装提示词 Vibe Coding 完全指南 2026:氛围编程入门到进阶 | 翔宇工作流 即梦 Seedance 2.0 提示词怎么写?八层框架从零到电影级 Claude Code /loop 实战指南:十个场景让 AI 替你干活 | 翔宇工作流 Claude Code 最佳实践完整指南 CLAUDE.md 最佳实践 | 6 套完整模板直接复制 小红书 AI 运营完全指南(2026):选品到批量发布 Agent 工作流实战指南(2026):从单 Agent 到多 Agent 协作 Agent 编程方法论(2026):从驾驭工程到上下文工程 AI 知识库构建指南(2026):从文档到 Agent 可用的知识资产 自媒体 AI 自动化指南(2026):从手动创作到 Agent 驱动 AI 图片与视频生成指南(2026):提示词、工具、工作流 一人公司 AI 创收指南(2026):从副业到全职的完整路径 Claude Code Skill 开发指南(2026):从零开发到变现 Claude Code 动态工作流(Dynamic Workflows)+ ultracode 实战 | 翔宇工作流 什么是 Harness Engineering(驾驭工程)?概念到实战(2026)| 翔宇工作流 多Agent协作完全指南:SSH+tmux 跨机器 AI 调度 AI 编程工具中文教程到底去哪学?我做了 aiworkflowtutorials.com Claude Code thinking modes 新手指南 | 翔宇工作流 Claude Code Subagents 新手指南 | 翔宇工作流 Claude Code Slash Commands 新手指南 | 翔宇工作流 Claude Code Plugins 新手指南 插件生态 | 翔宇工作流 Claude Code 权限新手指南:6 模式 + 沙箱 Claude Code MCP 怎么装新手指南 | 翔宇工作流 Claude Code Hooks 新手指南 | 翔宇工作流 Claude Code 上下文窗口新手指南 1M context | 翔宇 OpenAI Codex 团队协作指南:单人到小团队 | 翔宇工作流 怎么给 OpenAI Codex 派活不跑偏?7 步任务拆解 | 翔宇工作流 Codex Skills/Subagents/Hooks 新手指南 | 翔宇工作流 OpenAI Codex 沙箱与审批怎么配?双层防线新手指南 | 翔宇工作流 OpenAI Codex 模型怎么选?任务×推理档位速查表 | 翔宇工作流 OpenAI Codex MCP 服务器怎么装?新手指南 | 翔宇工作流 AI 副业实战中文教程站:8 条路怎么选 | 翔宇工作流 AI 自媒体运营中文教程站:6 平台怎么选 | 翔宇工作流 vibe coding 第一个项目手把手 | 翔宇工作流 OpenCode 安装教程:Claude Code、Codex 的第三条后路 Q-Day OpenClaw AI 销售介绍:Agent 销售闭环 | 翔宇工作流 vibe coding 工具怎么选?按身份选 | 翔宇工作流 SEO工具实战指南:用112条命令完成网站SEO诊断、GEO优化与AI搜索优化全流程 GoodTrans 介绍:长文档翻译交付可审校成果 | 翔宇工作流 AI 编程入门:零基础别再先学语法 | 翔宇工作流 学员实践:openbili AI 接入驾驶舱介绍 | 翔宇工作流 学员实践:42织序播客介绍 | 翔宇工作流 AI 编程中文教程哪里找?10 大主流工具公开站完整指南 vibe coding 是什么?能不能用、适合谁 | 翔宇工作流 Animaker Dev 介绍:头像照片+参考视频生成 AI 动画的学员实践 | 翔宇工作流 2026 RSS 订阅源大全:开源 1745 个源 + Claude Code 工作流
Hermes Agent 成本控制实战:模型路由 + 凭据池轮换 + Token 追踪
翔宇 · 2026-07-08 · via 翔宇工作流

Hermes Agent 能跑起来不稀奇,稀奇的是跑一个月之后账单不让你心跳加速。

社区里最常见的故事是这样的:装好 Hermes,对接 Anthropic API,跑了一周,$137 没了。问题不在 Hermes 贵——它本身是开源免费的,MIT 许可证——问题在于没有做成本工程。一个未优化的 Hermes 实例,72 个工具 Schema 每轮吃掉 19,210 个 Token,辅助压缩任务默认跟主模型走一条线,主模型限流时压缩连带崩溃丢失整个对话上下文。

这篇文章不讲省钱的「心态」,直接给配置。一套系统化方案,把月费从 $200 压到 $5 以下:Provider Routing 六种排序策略选最便宜的子提供商、Credential Pools 四种轮换策略让限流不中断会话、辅助模型独立配置防压缩风暴、Tool Search 延迟加载砍掉 89% 的固定 Token 开销、execute_code 让中间结果不进上下文窗口。

如果你还没装 Hermes,先看 Hermes Agent 完全指南 把基础架构搞清楚,再回来做成本优化。


Provider Routing 六种排序策略示意图:请求通过不同路线选择最优子提供商

Provider Routing:OpenRouter 内部的子提供商路由

Hermes Agent Provider Routing 官方文档页面:配置项、排序策略与实际示例

Provider Routing 控制的是 OpenRouter 内部的子提供商(Anthropic、Google、AWS Bedrock、Together AI 等)如何处理你的请求。

💡 通俗讲:你买了一张 OpenRouter 的车票,Provider Routing 决定这张车票走哪条线路——走最便宜的、走最快的、还是走延迟最低的。

这和 Fallback Providers(跨提供商的故障转移)是两个独立维度。Provider Routing 是同一个平台内部的路由优化,Fallback Providers 是主模型整体失败时切换到完全不同的提供商。

配置结构

provider_routing 控制六个维度:排序策略、提供商白名单、黑名单、显式优先级、参数兼容性过滤和数据收集权限。

提示词:生成 Provider Routing 配置

请帮我生成 Hermes 的 provider_routing 配置块。要求包含以下六个字段:

  • sort:排序策略,可选值 price(按价格)、throughput(按吞吐量)、latency(按延迟)
  • only:白名单数组,只使用列表中的提供商,留空表示不限制
  • ignore:黑名单数组,永不使用列表中的提供商
  • order:显式优先级顺序数组,按顺序依次尝试
  • require_parameters:布尔值,设为 true 时仅路由到支持请求中所有参数的提供商
  • data_collection:控制数据收集,可选值 allowdeny,留空表示使用提供商默认行为

六种排序策略的选择逻辑

sort 字段有三个值,再搭配 onlyignoreorder 三个过滤器,组合出六种常见策略:

策略组合 配置 适用场景
纯价格优先 sort: "price" 高流量开发、成本敏感
纯吞吐量优先 sort: "throughput" 长文本生成、批量任务
纯低延迟优先 sort: "latency" 交互式对话、终端实时使用
价格优先 + 白名单 sort: "price" + only: [...] 只在信任的提供商中选最便宜的
显式排序 + 兜底 order: ["Anthropic", "Google"] 优先 Anthropic,满载时切 Google
隐私保护型 ignore: ["Together", "Lepton"] + data_collection: "deny" 不想数据流向某些提供商

实战配置示例

成本优化(日常编码推荐):

provider_routing:
  sort: "price"

一行配置,让 OpenRouter 自动选择当前最便宜的子提供商。适合写代码、跑任务这类对延迟不敏感的场景。

速度优化(交互对话推荐):

provider_routing:
  sort: "latency"

当你在终端里和 Hermes 对话时,首 Token 延迟直接影响体验。latency 模式优先选择响应最快的子提供商。

指定优先顺序 + 参数完整性保障:

提示词:生成指定优先顺序的 Provider Routing 配置

请帮我生成 provider_routing 配置。要求:

  • order 指定优先顺序:先走 Anthropic,满载时切 Google
  • require_parameters 设为 true,确保只路由到支持所有请求参数的提供商

先走 Anthropic,满载时切 Google。开启 require_parameters 后,避免因为某个子提供商不支持 temperaturetop_p 而返回错误。

隐私保护型:

提示词:生成隐私保护型 Provider Routing 配置

请帮我生成 provider_routing 配置。要求:

  • ignore 拉黑不信任的提供商:Together、Lepton
  • data_collection 设为 deny,关闭数据收集

如果你对数据流向有要求,用 ignore 把不信任的提供商拉黑,再用 data_collection: "deny" 从全局层面关闭数据收集。

生效范围

Provider Routing 仅在使用 OpenRouter 时生效。直连 Anthropic API 或 DeepSeek API 时,这套配置无效——因为你已经确定了提供商,不存在「路由」的问题。

通过 Nous Portal 路由的流量同样尊重 routing 配置,而且 Portal 订阅者额外享受 10% 的 Token 折扣。

技术实现

路由配置在创建 AIAgent 时作为参数传入:

providers_allowed  ← provider_routing.only
providers_ignored  ← provider_routing.ignore
providers_order    ← provider_routing.order
provider_sort      ← provider_routing.sort
provider_require_parameters ← provider_routing.require_parameters
provider_data_collection    ← provider_routing.data_collection

这些参数最终附加到发往 OpenRouter 的 HTTP 请求头中,由 OpenRouter 的路由层执行实际选择。


Fallback Providers:三层韧性架构

一个提供商不够用,三层才够稳。Hermes 的韧性体系由三层防线组成:

  1. 凭据池(Credential Pools):同一提供商内多 API Key 轮换——第一层防线
  2. 主模型降级(Primary Model Fallback):主模型失败后自动切换到不同提供商/模型
  3. 辅助任务降级(Auxiliary Task Fallback):视觉、压缩、网页提取等辅助任务独立的提供商解析链

主模型降级配置

fallback_providers:
  - provider: openrouter
    model: anthropic/claude-sonnet-4

触发降级的条件:

HTTP 状态码 行为
429 限流 重试后触发
500/502/503 服务端错误 重试后触发
401/403 认证失败 立即触发
404 模型未找到 立即触发
无效响应 多次后触发

关键设计:按轮次(Per-Turn)降级,不是按会话(Per-Session)

每次用户发送新消息,Hermes 都从主模型开始尝试。如果主模型在当前轮次中失败,降级只对本轮生效。下一轮重新尝试主模型。

💡 通俗讲:主模型像你的首选餐厅。今天满座了,你去隔壁吃一顿。明天不会因为今天满座就默认去隔壁——你还是先去首选餐厅看看。

单轮内最多降级一次。如果降级也失败,走正常错误处理流程。这个设计防止了级联降级循环,同时每轮都给主模型一个恢复的机会。

辅助任务降级

每个辅助任务有独立的提供商解析链。这是成本控制的核心战场:

任务 功能 配置键
Vision 图片分析 auxiliary.vision
Web Extract 网页摘要 auxiliary.web_extract
Compression 上下文压缩 auxiliary.compression
Skills Hub 技能搜索 auxiliary.skills_hub
MCP MCP 辅助操作 auxiliary.mcp
Approval 命令审批分类 auxiliary.approval
Title Generation 会话标题 auxiliary.title_generation
Triage Specifier Kanban 任务细化 auxiliary.triage_specifier

auto 模式探测链(文本任务):

OpenRouter → Nous Portal → Custom endpoint → Codex OAuth →
API-key providers (z.ai, Kimi, MiniMax, 小米, Hugging Face, Anthropic) → give up

auto 模式探测链(视觉任务):

Main provider (if vision-capable) → OpenRouter → Nous Portal →
Codex OAuth → Anthropic → Custom endpoint → give up

容量错误降级

当显式设置的辅助提供商遇到容量级别的错误(402 余额不足、429 日配额耗尽、连接失败)时,触发四层降级链:

  1. 主辅助提供商(你配置的)
  2. auxiliary.<task>.fallback_chain(可选的自定义链)
  3. 主 Agent 的提供商 + 模型(兜底)
  4. 警告 + 重新抛出

关键区分:短暂的 HTTP 429 限流(带 Retry-After 头)不触发降级——Hermes 尊重你的显式选择,等待重试。只有日/月配额耗尽、支付错误和连接失败才会绕过显式提供商。

委派提供商覆盖

子代理(通过 delegate_task 创建的)继承父代理的降级链,但可以用更便宜的模型:

delegation:
  provider: "openrouter"
  model: "google/gemini-3-flash-preview"

这是一个容易被忽略的降本点:子代理的任务通常比主任务简单,没必要用同等昂贵的模型。

Hermes 支持的提供商

截至撰稿时,Hermes 支持 30+ 个提供商:OpenRouter、Nous Portal、OpenAI Codex、GitHub Copilot、Anthropic、z.ai(GLM)、Kimi/Moonshot、MiniMax、DeepSeek、NVIDIA NIM、Google Gemini(OAuth 和 API Studio 两种)、xAI/Grok、AWS Bedrock、Qwen Portal、Alibaba/DashScope、腾讯 TokenHub、Microsoft Foundry、LM Studio(本地模型)、Hugging Face、Custom endpoint 等。

完整列表见 Hermes 完全指南本地模型集成


Credential Pools 多 Key 轮换机制:四种策略在健康与冷却 Key 之间自动切换

Credential Pools:同提供商多 Key 轮换

Hermes Agent Credential Pools 官方文档页面:轮换策略、错误恢复机制与 CLI 命令

凭据池是三层韧性架构的第一层防线。它允许为同一提供商注册多个 API Key 或 OAuth Token。当一个 Key 触发限流或计费配额,Hermes 自动轮换到下一个健康 Key——保持会话不中断,不切换提供商。

💡 通俗讲:一个提供商给你一把钥匙,你自己多配几把。一把用完了换下一把,门还是同一扇门。

请求流程

请求进入
  → 从凭据池选择 Key(round_robin / least_used / fill_first / random)
  → 发送到提供商
  → 429 限流?
      → 计划/用量限制? → 立即轮换到下一个 Key
      → 通用/瞬时 429? → 同一 Key 重试一次 → 第二次 429 → 轮换
      → 全部 Key 耗尽 → 触发 fallback_model(不同提供商)
  → 402 计费错误? → 立即轮换(24 小时冷却)
  → 401 认证过期? → 先尝试刷新 Token → 刷新失败 → 轮换
  → 成功 → 正常继续

四种轮换策略

策略 行为 适用场景 配置值
fill_first(默认) 用第一个健康 Key 直到耗尽,再用下一个 单主力多备份 fill_first
round_robin 均匀轮换,每次选择后轮转 多 Key 均匀分摊 round_robin
least_used 总是选请求计数最低的 Key 长期均衡 least_used
random 在健康 Key 中随机选择 简单场景 random

配置方式:

提示词:生成凭据池轮换策略配置

请帮我生成 credential_pool_strategies 配置块。要求按提供商分配轮换策略:

  • openrouterround_robin(多 Key 均匀分摊负载,OpenRouter 通常有多个计费 Key)
  • anthropicleast_used(长期均衡使用,保持各 Key 用量一致)
  • deepseekfill_first(单主力多备份,用完一个再换下一个,方便追踪单 Key 用量)

错误恢复机制

错误类型 Hermes 行为 冷却时间
429 限流(瞬时) 同一 Key 重试一次,第二次连续 429 轮换 1 小时
429 限流(配额) 立即轮换 1 小时
402 计费/配额耗尽 立即轮换 24 小时
401 认证过期 先尝试刷新 OAuth Token,刷新失败才轮换
全部 Key 耗尽 降级到 fallback_model(跨提供商)

快速上手

# 添加第二个 OpenRouter Key
hermes auth add openrouter --api-key sk-or-v1-your-second-key

# 添加第二个 Anthropic Key
hermes auth add anthropic --type api-key --api-key sk-ant-api03-your-second-key

# 添加 DeepSeek Key
hermes auth add deepseek --type api-key --api-key sk-ds-your-key

# 查看凭据池状态
hermes auth list

# 交互式凭据管理
hermes auth

自动发现

Hermes 启动时从多个来源自动发现凭据:

来源 示例 自动发现
环境变量 OPENROUTER_API_KEY
OAuth Token(auth.json) Codex device code
Claude Code 凭据 ~/.claude/.credentials.json 是(Anthropic)
手动添加 hermes auth add 持久化到 auth.json

这意味着如果你的机器上同时装了 Claude Code 和 Hermes,Hermes 会自动发现 Claude Code 的 Anthropic 凭据——不需要手动复制 Key。

委派和子代理共享

  • 同一提供商:子代理获得父代理的完整凭据池,可在限流时轮换 Key
  • 不同提供商:子代理加载该提供商自身的凭据池
  • 每任务凭据租赁确保子代理并发轮换时不冲突

已知问题:Fallback 共享凭据池

GitHub Issue #33088 指出:当 fallback 提供商和主提供商使用同一个平台时(比如都走 OpenRouter),fallback 的 429 错误会消耗主池中的 Key。

当前修复方向是:池在 fallback 共享同提供商时保留(多 Key 轮换是设计意图),在切到不同提供商时清除。使用时注意 fallback 尽量配不同平台的提供商。


Token 追踪:三层可见性

钱花在哪里?这个问题需要三层回答。

微观层:每次调用

  • 每次 LLM 调用的 prompt token 和 completion token
  • 使用的模型标识
  • 按当前模型单价换算的美元成本

中观层:每次对话

  • 端到端交互的总 token 数和总成本
  • 上下文窗口利用率(已用 / 总容量)

宏观层:每个步骤

  • Agent 循环中每个 span 的 token 计数
  • 排序 trace 找到最贵的步骤
  • 子代理 span 汇总其子 span 的 token 使用

Hermes 内置追踪

Hermes TUI 的 /agents 叠加层提供:

  • 运行中和已完成子代理的实时树状视图
  • 每分支的成本、token 和文件变更汇总
  • 终止和暂停控制——可以中途取消正在烧钱的子代理
  • 事后审查:逐轮浏览每个子代理的工具调用历史

对日常使用来说,这个内置功能已经够用。但它有一个硬伤:跟 OpenRouter 的定价层耦合。GitHub Issue #19469 指出,使用直连提供商(Anthropic、Bedrock、自定义端点等)时成本报告会断裂。

外部追踪工具选型

如果需要更精细的成本归因,可以搭配外部工具:

工具 类型 核心能力 适合场景
Langfuse 开源 Observation 级 Token + 成本追踪,Prompt 管理 最成熟的开源选择,适合自托管
Opik(Comet) 开源 Span 级追踪,自动成本计算,内置提供商价格表 开源替代方案
LiteLLM 开源 100+ 提供商统一代理,虚拟 Key 预算管理 作为 Hermes 前置成本控制网关
Braintrust 商业 三层可见性,Agent trace 每步归因 Agent 循环中精确的 Token 归因
Bifrost(Maxim AI) 商业 层级虚拟 Key,语义缓存,自动限额 替代 LiteLLM 的 Hermes 前置网关

关键陷阱:跨提供商 Tokenizer 不一致

不同提供商使用不同的分词器(Tokenizer)。本地 token 估算可以用于规划,但生产报告必须依赖提供商响应中返回的 usage 字段。跨提供商的估算误差足以扭曲成本比较、路由决策和上下文窗口告警。


五阶段压缩流水线:从原始上下文到精简输出的 Token 递减过程

上下文压缩与缓存:每轮省 75%

Hermes 的压缩系统是一条五阶段流水线,设计目标是在保留关键信息的前提下最大限度减少上下文窗口占用。

五阶段压缩流水线

阶段一:工具结果剪枝(无 LLM 调用)

三个子步骤,全部基于规则,不消耗 Token:

  1. 去重:对工具结果做 MD5 哈希,>200 字符的重复内容替换为 "[Duplicate tool output]"
  2. 摘要化:20+ 个工具专用处理器。npm test 的 47 行输出变成 "[terminal] ran npm test → exit 0, 47 lines";1,200 字符的文件读取变成 "[read_file] read config.py (1,200 chars)"
  3. 参数截断:>500 字符的工具调用参数按 JSON 感知方式截断,防止 JSON 断裂导致无限重试循环

阶段二:边界确定

保护头部(前 3 条消息)和尾部(约 20K Token 预算),中间区域进入压缩。

阶段三:LLM 摘要

使用结构化 12 节模板生成摘要。模板明确框定为「给另一个助手的简报」——这个措辞很关键,防止摘要器试图回答对话中的问题,而不是总结它们。

阶段四:消息组装

[头部] + [摘要] + [尾部] 拼接成新的上下文。

阶段五:完整性修复

修复被压缩破坏的 tool_call/result 配对。为被删除结果的调用添加占位符结果,避免模型因为看到调用但看不到结果而产生困惑。

压缩配置

compression:
  enabled: true
  threshold: 0.50      # 上下文窗口占用超过 50% 时触发
  target_ratio: 0.20   # 压缩后目标占用 20%
  protect_last_n: 20   # 保护最近 20 条消息不被压缩

反抖动保护

如果连续两次压缩各自节省不到 10% 的 Token,Hermes 自动停止压缩。

💡 通俗讲:一次压缩省了 8% 但花了 2,000 Token 生成摘要,净收益是负的。Hermes 能识别这种情况并自动刹车。

冻结记忆快照的成本意义

Hermes 在会话启动时冻结记忆快照。会话中途的写入更新磁盘文件,但不改变系统提示词。这不是设计疏忽,而是提示词缓存效率的关键:

  • 系统提示词在整个会话期间保持不变
  • 每轮 API 调用都能命中提示词缓存
  • 多轮对话中输入 Token 成本降低约 75%

辅助压缩模型的选择

这是社区踩坑最多的地方:辅助压缩任务默认跟主模型走

用 Claude Opus 做上下文压缩是极度浪费的。压缩任务的本质是「总结文本」,Flash 级别的模型完全能胜任。Reddit 社区的实测数据显示,把 auxiliary.compression 换成 Flash 级模型后,Token 花费直降 85%+。

auxiliary:
  compression:
    provider: deepseek
    model: deepseek-v4-flash    # 用 Flash 做压缩,不用 Pro

Tool Search 延迟加载对比:72 个工具 Schema 的 19210 Token 降至 3 个桥接工具的 2200 Token

Hermes 默认安装有 72 个工具,每个工具的 Schema 定义要写进每轮 API 调用的请求体。72 个工具 = 约 19,210 Token 的固定开销。每一轮。

GitHub Issue #4379 的实测数据更惊人:默认安装的 Hermes 每次 API 调用有约 73% 是固定开销(约 13,900 Token),其中工具 Schema 占大头。

Tool Search(v0.16.0+,截至 2026 年 6 月的最新版本)用三个桥接工具替代完整的工具数组:

tool_search(query, limit?)     — 搜索延迟加载的工具目录
tool_describe(name)            — 加载一个工具的完整 Schema
tool_call(name, arguments)     — 调用一个延迟加载的工具

实际交互流程

Model: tool_search("create a github issue")
  → { matches: [{ name: "mcp_github_create_issue", ... }, ...] }
Model: tool_describe("mcp_github_create_issue")
  → { parameters: { type: "object", properties: { ... } } }
Model: tool_call("mcp_github_create_issue", { title: "...", body: "..." })
  → { ok: true, issue_number: 42 }

从 19,210 Token 降到约 2,200 Token,减少 89%。

完整配置

提示词:生成 Tool Search 延迟加载配置

请帮我生成 tool_search 配置块。要求:

  • modeauto(自动判断是否启用延迟加载,可选值 auto / always / off)
  • threshold0.1(工具 Token 占上下文窗口比例阈值,超过 10% 时 auto 模式启用延迟加载)
  • pinned_tools:始终完整加载、不延迟的 7 个核心工具——terminal、read_file、write_file、list_directory、send_message、memory、skills
  • evict_after_turns3(工具调用后 3 轮未再使用则从活跃列表卸载)

关键设计决策

  • 核心工具永不延迟terminalread_filewrite_filepatchsearch_filestodomemorybrowser_*web_searchweb_extractclarifyexecute_codedelegate_tasksession_searchsend_message 等始终直接加载
  • 仅 MCP 和非核心插件工具延迟加载
  • pinned_tools 白名单:可以指定额外始终加载的工具
  • evict_after_turns:工具调用后 N 轮未再使用则从活跃列表卸载

代价

官方文档明确指出:静态侧的 Token 节省是真实的,但部分节省会被搜索/描述/调用的额外轮次「还回去」。对于只有少量 MCP 工具的配置,Tool Search 可能反而增加总 Token 消耗。

判断标准:如果你的工具目录 Token 占上下文窗口不到 10%,关掉 Tool Search。超过 10%,打开。threshold: 0.1 就是这个意思——auto 模式会自动帮你判断。

互补方案:Tool Slimmer

社区项目 Hermes Tool Slimmer 从另一个角度解决同样的问题:配置时预筛选,只注册当前任务相关的工具子集。Tool Search 是运行时延迟加载,Tool Slimmer 是配置时预筛选——两者可以叠加。


execute_code:中间结果不入上下文

execute_code 是 Hermes 最被低估的降本工具。

核心优势:中间工具结果永远不进入上下文窗口——只有最终的 print() 输出返回给 Agent。

和 delegate_task 的成本对比

维度 delegate_task execute_code
推理 完整 LLM 推理循环 仅 Python 代码执行
上下文 全新隔离对话 无对话,只有脚本
工具访问 所有非阻止工具 + 推理 7 个工具通过 RPC,无推理
并行性 默认 3 个并发子代理 单脚本(内部可多线程)
Token 成本 较高(完整 LLM 循环) 较低(只返回 stdout)

使用场景

  • 3 个以上连续工具调用且调用间有处理逻辑
  • 批量数据过滤或条件分支
  • 循环处理结果集

实战示例:批量文件检查

# execute_code 内部调用 Hermes 工具
from hermes_tools import terminal, read_file, write_file

# 批量读取 + 处理,中间结果不进上下文
results = []
for f in ["api.py", "models.py", "routes.py"]:
    content = read_file(f"src/{f}")
    # 本地处理,不消耗 Token
    if "TODO" in content:
        results.append(f"{f}: {content.count('TODO')} TODOs")

print("\n".join(results))  # 只有这行返回给 Agent

如果用常规方式,Agent 需要三次 read_file 调用,每次的完整文件内容都会进入上下文窗口。用 execute_code,三个文件的完整内容只在 Python 沙箱内处理,Agent 只看到最终的统计结果。

资源限制

限制项 默认值 超限行为
超时 300 秒 SIGTERM 杀死,5 秒宽限后 SIGKILL
Stdout 50 KB 输出截断
Stderr 10 KB 保留末尾用于调试
工具调用数 50 次 返回错误

批处理模式:跨提示词并行降本

Hermes 的批处理模式支持跨数百或数千个提示词的并行运行。虽然主要用于训练数据生成,但其成本控制设计值得借鉴:

  • Nous Portal 订阅:将模型访问 + 网页搜索 + 图像生成 + TTS + 云浏览器打包为一账单,避免跨五个供应商管理限额
  • Provider Routing 参数--providers_allowed--providers_ignored--provider_sort 在批处理层面直接控制成本
  • 推理控制--reasoning_effort(none/minimal/low/medium/high/xhigh)和 --reasoning_disabled 可完全禁用推理 Token
  • 检查点恢复:失败任务不重复执行,按内容匹配恢复

推理控制参数在交互模式下也可使用——如果你的任务不需要深度推理(比如简单的格式转换),设置 reasoning_effort: minimal 可以大幅减少 completion token。


翔宇五台机器实战架构:共享凭据池 + 独立压缩通道防压缩风暴

翔宇实战:五台机器共享 + 防压缩风暴

以上都是文档和社区方案。下面是我在五台 Mac(4 台 Mac mini + 1 台 MacBook)上实际跑 Hermes 的成本控制经验。

模型策略:免费优先,按量兜底

场景 模型 提供商 说明
主力(常态) GLM-5.1 z.ai Coding Plan Max,五台机器共享一个 Token
主力(额度耗尽) DeepSeek V4 Pro deepseek 按量计费无上限,$1.74/M 输入 $3.48/M 输出
视觉辅助 Gemini 2.5 Flash google 图片理解,独立配置不受主模型限流影响
压缩 跟主模型 跟主模型 显式配置,防压缩风暴

以上价格和模型信息为撰文时数据,请以各平台官方当前定价为准。

GLM Coding Plan Max 是按月免费额度制。五台机器 + Hermes 共享同一个 Token,重度使用会触碰月度上限。额度耗尽时的表现是 HTTP 429。

防压缩风暴:独家踩坑经验

**压缩风暴(Compression Storm)**是我在实际使用中发现并命名的问题。

症状:辅助压缩任务默认跟主模型走。主模型一旦限流(GLM 429),压缩也挂。Agent 丢失整个对话上下文——不是丢一条消息,是丢全部。

原因auxiliary.compression 默认走 auto 模式,auto 模式的探测链第一站就是主模型的提供商。主模型限流时,压缩请求走同一个提供商,同样被限流。

解法auxiliary.visionauxiliary.compression 显式配置独立提供商,不走 auto。视觉用 Gemini Flash(免费额度大),压缩跟主模型但独立配置——切模型时只改一处。

完整 config.yaml

提示词:生成 Hermes 五台机器实战 config.yaml

请帮我生成 ~/.hermes/config.yaml 完整配置。要求包含以下所有模块:

主模型

  • model.default = glm-5.1,provider = zai(GLM Coding Plan Max 免费额度)
  • 额度耗尽时切换:model.default 改为 deepseek-v4-pro,provider 改为 deepseek

Provider Routing(仅 OpenRouter 生效):

  • sort = price(按价格排序子提供商)

凭据池策略

  • openrouter = round_robin(多 Key 均匀分摊)
  • deepseek = fill_first(单主力多备份)

降级链

  • fallback_providers 配一项:provider = deepseek,model = deepseek-v4-flash

辅助任务独立配置(防压缩风暴,不走 auto 模式):

  • vision:provider = google,model = gemini-2.5-flash(图片理解,免费额度大)
  • compression:provider = zai,model = glm-5.1(跟主模型但显式配置,切模型时只改这里)
  • skills_hub:provider = deepseek,model = deepseek-v4-flash
  • mcp:provider = deepseek,model = deepseek-v4-flash

委派子代理

  • provider = deepseek,model = deepseek-v4-flash(子代理任务简单,用便宜模型)

Tool Search 延迟加载

  • mode = auto,threshold = 0.1
  • pinned_tools 7 个:terminal、read_file、write_file、list_directory、send_message、memory、skills
  • evict_after_turns = 3

上下文压缩

  • enabled = true,threshold = 0.50(占用超 50% 触发),target_ratio = 0.20(压缩到 20%),protect_last_n = 20

Code Execution

  • mode = project,timeout = 300,max_tool_calls = 50

通用版本:去掉 GLM 相关配置,主模型改为 deepseek-v4-flash(provider = deepseek),compression 的 provider 也改为 deepseek、model 改为 deepseek-v4-flash,其余不变。

GLM 额度耗尽时的切换流程

# .env 加 DeepSeek Key
echo 'DEEPSEEK_API_KEY=sk-ds-your-key-here' >> ~/.hermes/.env

# config.yaml 改两行
# model.default: deepseek-v4-pro  (或 deepseek-v4-flash 更省)
# model.provider: deepseek

# GLM 额度恢复后切回
# model.default: glm-5.1
# model.provider: zai

端点配置优化

# 国内直连 GLM(推荐),跳过 3 秒自动探测
GLM_BASE_URL=https://open.bigmodel.cn/api/coding/paas/v4

不设 GLM_BASE_URL 时首条消息慢约 20 秒(3 次 HTTPS 探测 + 推理延迟)。直接指定端点后首消息响应时间降到正常水平。

成本实绩

免费优先 + 按量兜底的策略下,五台机器的月均 API 支出约 $3-5。大部分时间吃 GLM 免费额度,只有月末额度紧张时才切 DeepSeek 按量计费。


行业背景:模型路由降本的学术和产业验证

这套「不要一个提供商走到黑」的思路不是 Hermes 独创,有大量学术和产业数据支撑:

  • CASTER 论文(ACM Web Conference 2026):轻量级路由器降低推理成本达 72.4%
  • Route-To-Reason 框架:同时选择模型和推理策略,Token 用量和 API 成本降低达 60%
  • Budget-Aware Agentic Routing 论文(arXiv 2602.21227):在严格预算约束下智能分配贵/便宜模型
  • FinOps for LLMs 2026 报告:企业第一年 FinOps 工作平均降 30-60% LLM 成本
  • Zylos Research 2026-04 报告:系统化路由可降低 30-70% 成本

一个数据特别值得记住:天盘博客《AI Agent 代币经济学》指出,未优化与优化后部署成本可差 200 倍

Hermes 的设计——Provider Routing + Credential Pools + Fallback Providers 三层架构——本质上就是把这些学术研究中的路由策略工程化落地到一个开源 Agent 框架里。


成本监控脚本

配置完成后,日常运行需要监控。

查看凭据池状态

#!/bin/bash
set -euo pipefail

# 查看当前凭据池
hermes auth list

# 添加备用 Key
hermes auth add openrouter --api-key sk-or-v1-backup-key-here
hermes auth add deepseek --type api-key --api-key sk-ds-backup-key

成本警报脚本(配合 execute_code 使用)

这个脚本在 Hermes 会话中通过 execute_code 运行,用于检查过去一小时的 API 花费是否超出预算。

提示词:生成 Hermes 成本告警脚本

请帮我写一个 Python 脚本,在 Hermes 会话中通过 execute_code 运行。要求:

  • 通过 hermes_tools.terminal 调用 hermes stats --last-hour --json,获取最近一小时的 Token 使用统计
  • 命令加 2>/dev/null || echo '{}' 兜底,防止命令不可用时报错
  • 解析 JSON 响应,提取 total_tokenstotal_cost_usd 两个字段
  • 设定小时预算阈值 HOURLY_BUDGET = $0.50
  • 超出预算时打印告警(含实际花费、预算值、Token 总量)
  • 未超出时打印正常状态(含花费和预算对比)
  • 用 try/except 捕获 JSON 解析失败,输出"统计数据不可用"
Langfuse 开源可观测平台首页:为 LLM 应用提供 Trace 级 Token 追踪与成本归因

社区可视化方案:Hermes Dashboard

hermes-dashboard 是社区开发的成本监控仪表盘,提供:

  • 按模型和提供商的成本分解视图
  • 实时 Token 消耗追踪
  • 按会话和时间段的用量统计
hermes dashboard --port 9119 &

常见问题

Hermes Agent 一个月大概花多少钱?

未优化的 Hermes 每月 API 费用通常在 $50-200 之间。通过本文介绍的系统化成本控制方案(模型路由 + 凭据池轮换 + 辅助模型分离 + Tool Search),可以压到 $5-8/月。如果主力模型用免费额度(如 GLM Coding Plan),日常使用几乎零成本。

Provider Routing 和 Fallback Providers 有什么区别?

Provider Routing 控制的是 OpenRouter 内部子提供商的选择策略(按价格、速度、延迟排序),属于同一平台内的路由优化。Fallback Providers 是跨提供商的故障转移——当主模型整体失败时切换到完全不同的提供商和模型。两者是独立的两个维度,可以同时配置。

凭据池的四种轮换策略怎么选?

fill_first(默认)适合单主力多备份场景;round_robin 适合多 Key 均匀分摊负载;least_used 适合长期均衡使用;random 适合简单场景。建议 OpenRouter 用 round_robin 均匀分摊,Anthropic 或 DeepSeek 用 fill_first 保持单 Key 追踪。

什么是压缩风暴?怎么防?

压缩风暴是指辅助压缩任务默认跟主模型走,主模型一旦限流(429),压缩也连带崩溃,Agent 丢失整个对话上下文。防护方案:把 auxiliary.compression 显式配置独立的提供商和模型,不走 auto 模式。

Tool Search 延迟加载有什么代价?

静态侧的 Token 节省是真实的(从 19,210 降到约 2,200),但部分节省会被搜索/描述/调用的额外轮次还回去。如果只有少量 MCP 工具,Tool Search 可能反而增加总 Token 消耗。只有工具目录足够大时(超过上下文窗口的 10%),收益才显著。

execute_code 和 delegate_task 哪个更省 Token?

execute_code 更省。delegate_task 启动完整的 LLM 推理循环,Token 成本较高。execute_code 只执行 Python 代码,中间工具结果不进入上下文窗口,只有最终 print() 输出返回给 Agent。适合 3 个以上连续工具调用且调用间有处理逻辑的场景。

能不能完全免费运行 Hermes?

理论上可以。方案是主力模型用 GLM Coding Plan 或 Gemini Flash 免费档,辅助任务用 Gemini Flash,降级链挂 本地模型(LM Studio)作为最终兜底。但完全免费意味着会频繁碰到限流,不适合生产环境。建议至少保留一个按量计费的提供商(如 DeepSeek)作为兜底。

Hermes 内置的成本追踪功能够用吗?

日常使用够用。Hermes TUI 的 /agents 叠加层提供会话级别的成本、Token 和文件变更汇总。但如果需要跨系统的全流程追踪、精确的成本归因和预算告警,建议搭配 Langfuse(开源)或 LiteLLM(统一代理层)作为前置网关。


延伸阅读


下一步

  • AI 编程实操课:Claude Code + Codex + Agent 工作流,覆盖一人公司、自媒体自动化、AI 副业全场景。237 篇实战教程 + 最佳实践 + 源码包,跟着做就出成果。国内版-FlowUS | 国际版-BMC
  • YouTube 频道翔宇工作流
  • 微信公众号:搜索「翔宇工作流」