Performance For Power Users

Hermes Agent v0.14.0 怎么把冷启动削掉 19 秒、把 browser 操作做快 180 倍

Hermes Agent

Hermes Agent

@hermesagents

2026年5月17日

10 分钟阅读

v0.14.0 出货了一摞性能优化,叠起来之后,Hermes Agent 用起来像换了一个程序。release notes 上的三条头条:

  • 冷启动削掉约 19 秒。 散落在 import 图、doctor 检查、模型目录查询、欢迎横幅之间。
  • browser_console 快 180 倍。 一条常驻的 CDP 连接,替掉每次调用都开一个 DevTools 会话。
  • Claude prompt cache 跨会话保留 1 小时。 /new 之后你那份温热的 prefix 缓存不会丢。

这里面没有一条是"推倒重写"。每一条都是一串小的、能定位的 PR,专门修一个热路径。这篇按 PR 拆给你看——哪儿慢、改了什么、以及对任何写 agent 的人来说哪些经验可以复用。

起点是什么样

2026 年 5 月初你跑 hermes,冷启动路径大概是这样:

  1. 1.Python 解释器启动(约 100 ms)
  2. 2.import hermes 把剩下整张 import 图都拉起来(约 5–10 s)
  3. 3.hermes 插件发现扫一遍已装插件(约 2–3 s)
  4. 4.hermes doctor 顺序跑 API 连通性探测(约 3–5 s)
  5. 5.skills 索引加载,经常重新从网络拉一遍(约 2–4 s)
  6. 6.欢迎横幅渲染(约 1 s)
  7. 7.提示符出现

到你能开始打字过去了 15–25 秒。这种时长够让你出戏了。v0.14.0 这波优化是逐步把上面每一步都修一遍。

冷启动那一波(10+ 个 PR)

skills 缓存 + 适配器 lazy import(#22138)

最大的那一笔。两件平行改动:

  1. 1.skills 索引写到磁盘缓存。 之前的行为:每次跑 hermes 都重读 skills 目录,跑一遍轻量索引。新行为:索引存在一份缓存文件里,只有目录有变动(看 mtime)才重建。
  2. 2.重量级适配器 SDK 改 lazy。 之前:import hermes 会顺带 import Feishu SDK、WhatsApp SDK、所有 voice/TTS provider、所有图像生成 SDK。现在:每个都推迟到首次使用时才加载。你从不用 Feishu,Feishu SDK 就从来不会被加载。

这两件事都在 #22138 里,砍掉约 5–8 秒。lazy import 这个套路是默默无闻的英雄——它在整个代码库上机械地铺开,没有作为单独一个有戏剧性的 PR 出现。

已知子命令跳过插件发现(#22120)

你跑 hermes config set X Y 的时候,根本用不到插件发现。hermes toolshermes modelhermes doctor 也一样。dispatcher 现在在命令是已知内置时直接短路掉插件发现。绝大多数 CLI 调用省下约 2 秒。

models.dev 改 cache-first 查(#22808)

Hermes 会问 models.dev 拿规范模型目录。v0.14.0 之前每次 hermes 启动都打一次 HTTP。新版本:先从磁盘缓存读;只在过期了(>24 h)才重新拉。缓存命中是约 5 ms,而不是约 200–500 ms(一次网络来回)。

hermes doctor 的 API 探测并行化(#22766)

hermes doctor 检查"我能不能连上 Nous Portal、OpenRouter、Anthropic、OpenAI"是顺序跑的。新版本:asyncio.gather 起来一起跑,顺手把那个在非云机器上经常 timeout 的 IMDS(实例元数据服务)探测去掉。典型情况下 doctor 砍掉约 3–5 秒。

chat -q 跳过欢迎横幅(#22904)

你在单次查询模式(hermes chat -q "what's the time")下,欢迎横幅就是噪声。v0.14.0 把这种情况下的渲染跳掉。脚本/自动化场景拿回约 1 秒。

import 图上散落的延迟化

一长串 PR,每一个延迟一个重型 import:

  • google chat adapter 里的 google-cloud——首次用到 google chat 时再加载(#22681)
  • QQAdapterYuanbaoAdapter——通过 PEP 562 在模块级别延迟(#22790)
  • teams adapter 里的 httpx——只在第一次 webhook 调用时(#22831)
  • fal_client——只在第一次图像生成时(#22859)

每个 PR 都不大。叠起来又是 2–4 秒。

缓存 Nous 鉴权和 .env 加载(#25341)

hermes tools All-Platforms 那一屏过去会按平台同步跑鉴权探测。缓存落地之后,从 14 秒掉到 1.5 秒以下。这一屏功能没变;只是不再每次调用都烧 14 秒的网络时间。

净效果

把每一笔加起来就是头条上那 19 秒。单独看没有一条惊天动地的;合起来程序就有了反应速度。

browser_console 快 180 倍那段故事(#23226)

Hermes 里的 browser 工具走的是 Chrome DevTools Protocol(CDP)来驱动一个 headless Chrome。v0.14.0 之前,每一次 browser_console 求值大概是这样:

  1. 1.跟 Chrome 开一条新的 CDP WebSocket
  2. 2.等握手(约 1–2 s)
  3. 3.把要求值的 JavaScript 发过去
  4. 4.读回结果
  5. 5.关掉 WebSocket

一条连着求值的链路——比如 agent 在一步步检查一个页面——每次求值大概 1.5 s。典型的"看一眼这个页面然后跟我说说"流程慢得让人难受。

v0.14.0 的改法:每个 supervisor 一条常驻 WebSocket,所有 browser 工具调用共用。CDP 握手每个会话只发生一次;后续求值跳过 1–2 步,直接发 payload。

结果:每次调用的延迟从约 1.5 s 掉到约 8 ms。也就是 约 180×

这个经验是通用的。任何地方你的 agent 要打 N 次工具调用、每次都开新连接——对于聊天节奏的负载来说,连接池比并行更值钱。总工作量都在建连这一步,不在做事本身。

prompt cache 跨会话保留 1 小时(#23828, #25434, #24778)

Claude 的 prompt cache(Anthropic API 的一项功能)让你能把一段上下文标成"可缓存"。在 TTL 之内的后续请求——历史上是 5 分钟——会以低得多的成本和延迟复用那段 prefix。

v0.14.0 之前,Hermes 在会话内已经在用这个:system prompt + 当前激活的 skill 会被缓存,同一段对话里的命中更快也更便宜。但你一旦跑 /new,缓存就失效了,下一段对话从冷开始。

v0.14.0 这一摞三个 PR 把缓存 TTL 拉到 1 小时,并且让缓存 key 跨 /new 还能复用。新开的会话第一条回应能蹭上你上一段会话留下的热缓存。对那些一天里要开很多段短会话的人,这是实实在在的成本+延迟节省。

缓存也覆盖到了 后台 memory review 那一支(#25434)——周期性回看并整合你 memory 文件的那个进程,现在也吃这层 prompt cache,不用每次都付全价。

这块还有一个配套的小修:prompt cache key 现在用只到日期的时间戳,缓存不会因为跨时区炸掉。Gateway-DB 来回的吵闹日志也整理了一遍,可观测性更好。

这些胜利是怎么被发现的

作者怎么定位到这些具体热路径的?两个答案:

  • 在真实安装上做冷启动 profiling。 拿计时跑 hermes,盯着哪些 import 最慢。然后一个一个挨着收拾。
  • 用户报告"Hermes 卡卡的"。 hermes tools All-Platforms 那一屏慢,本来就是一条具体的 bug 报告——一旦定位到,修起来就直接。

没有任何魔法。这些胜利都是用 python -X importtimecProfile、加上听人抱怨,挖得出来的。

写 agent 的人可以学走什么

你要是在做自己的 agent,v0.14.0 这一波抽象成几条规则:

  1. 1.不用的别 import。 每一个 adapter 和 provider SDK 都延迟加载。import 图就是你的冷启动。
  2. 2.能稳定缓存的全缓存。 skills 索引、模型目录、鉴权 token。只在确认 stale 时重新拉。
  3. 3.复用连接。 一次会话里要打同一个 API 或 CDP 服务器超过一次,就一定要把连接握住。
  4. 4.互相独立的探测并行跑。 doctor 检查、健康检查,任何顺序不重要的地方。
  5. 5.不必要的 UI 别渲染。 欢迎横幅、装饰输出——非交互路径上跳过。

这里没有一条是新的。整套就是任何一个 CLI 都该用的标准性能 playbook。v0.14.0 有意思的地方是把整本 playbook 在一个发版窗口里全跑了一遍——用户一升级,第一时间就能感觉到。

你那个 Hermes 五月初要是用着挺糟心,v0.14.0 就是那条冷路径消失的那一版。

延伸阅读

订阅更新

Hermes Agent 的版本更新、新 skill、新集成——社区第一手消息。不发垃圾邮件,随时可以退订。