状态栏升级:缓存命中率、延迟、每秒 Token 一眼看穿


你盯着终端底部那行状态栏:模型名、上下文百分比、压缩图标……信息不少,但你心里真正想问的是“这个模型现在到底快不快?我的缓存有没有命中?每秒能吐多少 token?”——毕竟缓存命中率直接决定你的 API 账单是打 1 折还是全价。8 月 30 日合入的更新(PR #98250)把这三个答案直接放进了状态栏:缓存命中率(◎)、滚动平均延迟(◷)、每秒输出 token(↑),而且每个字段都能用配置自由开关。

状态栏多了什么

以宽终端为例,更新后的状态栏长这样:

⚕ model │ 3% │ ◎ 87.4% │ ◷ 3.2s │ ↑ 50 t/s │ 2m

从左到右:模型名、上下文占用 3%、缓存命中率 87.4%平均延迟 3.2 秒每秒输出 50 token、本次会话时长 2 分钟。三个新指标都是滚动统计——延迟和吞吐量取最近 10 次调用的移动平均,而不是从启动算起的“终身平均值”,所以它反映的是当前的模型状态。

几个聪明的细节:

  • 缓存命中率在切换模型和上下文压缩时会重置基准——它反映的是当前这一轮缓存体系的命中情况,不是被历史稀释的平均数;
  • 完全没有缓存读取时,它隐藏这个字段而不是显示吓人的 0%——避免误导;
  • 负数或异常延迟有防护——统计不会被一次抖动污染。

字段开关:display.status_bar.fields

新指标不是硬塞给你的,每个字段都可以独立开关。配置键是 display.status_bar.fields,空列表表示“全部默认字段”:

display:
  status_bar:
    fields: []   # 空 = 全部默认字段

比如你只关心缓存命中率和速度,可以只保留这几个:

display:
  status_bar:
    fields: [model, ctx, cache_hit, latency, tps]

这样状态栏就只剩 ⚕ model │ 3% │ ◎ 87.4% │ ◷ 3.2s │ ↑ 50 t/s。对照源码(hermes_cli/config_defaults.py),完整的字段清单是:cache_hitlatencytpscompressionsbg_tasksbg_processesbg_subagentsgoaldurationprompt_elapsedidle_sincefocusyolostashbatterytitletotal_tokens。注意两点:

  • total_tokens(本次会话累计 token)是“选择性加入”的——你不在列表里写它,它就永远不显示;
  • 窄终端会自动丢弃宽屏专属字段context_detailprompt_elapsedidle_since),不管你怎么配。

为什么缓存命中率值得盯

这是三个新指标里最“值钱”的一个。主流 API 提供商(Anthropic、OpenAI、DeepSeek 等)对提示词缓存(prompt caching)的收费通常是正常输入价的 1/10 甚至更低。状态栏显示命中率,等于给你的省钱策略装了一块实时仪表盘:如果命中率长期偏低,说明你的会话结构在频繁变化(比如系统提示词被反复改动、工具描述不稳定),缓存一直失效;如果稳定在 80% 以上,说明你的钱花在了刀刃上。

怎么用上

PR #98250 于 2026 年 8 月 30 日合入,目前只在 main 分支,v0.20.6 还没有。更新到最新 main 后,直接跑 hermes 就能看到新字段;想调整就用 hermes config editdisplay.status_bar.fields

状态栏是 Hermes CLI 的“仪表盘”,而这几个新指标把它从“装饰”变成了“经营数据”。想知道缓存和 token 的完整省钱玩法,可以搭配 免费搜索 5 通道上下文 token 优化指南 一起看;命令行里的其他隐藏效率点,见 CLI 命令面板指南