Performance For Power Users

Hermes Agent v0.14.0 怎麼把冷啟動削掉 19 秒、把 browser 操作做快 180 倍

Hermes Agent

Hermes Agent

@hermesagents

May 17, 2026

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、新整合。不寄垃圾信,隨時可以退訂。