💡阅读指南

前面几节讲的是 Hermes 怎么记住你、怎么翻历史、启动时带了什么配置。这一节看的是数据——每次会话的用量、消耗、缓存效率、跨会话统计,还有怎么把这些数字换算成费用。

读完会知道:/usage 的输出每一行代表什么、缓存命中率怎么算、怎么看跨会话的总消耗。

6.1 单次会话数据

在对话中输入 /usage,会看到当前会话的各项数据:

code
📊 Session Token Usage
────────────────────────────────────────
Model:                     deepseek-v4-flash
Input tokens:                  12,398
Cache read tokens:             22,912
Cache write tokens:                 0
Output tokens:                     82
Prompt tokens (total):         35,310
Completion tokens:                 82
Total tokens:                  35,392
API calls:                          2
Session duration:              2h 34m
Cost status:                 unknown
Cost source:                    none
Total cost:                     n/a
────────────────────────────────────────
Current context:  17,701 / 1,000,000 (2%)
Messages:         4
Compressions:     0
Note:             Pricing unknown for deepseek-v4-flash

几个关键项的含义:

  • Model — 当前会话用的模型。
  • Input tokens — 你发送的内容(提问 + 系统提示)消耗的 Token 数,会话累计。
  • Output tokens — Hermes 回复消耗的 Token 数,会话累计。
  • Prompt tokens (total) — 整个会话中所有 API 请求的 Prompt Token 累计总量。不同提供商对 prompt 的定义略有差异,但都是累计值。
  • Session duration — 会话持续时长。
  • Cost status — 显示 unknown 说明 Hermes 内部价格表里没有收录这个模型。大部分模型通过 OpenRouter 接入时会自动获取价格。
  • Current context — 当前上下文窗口占用率。17,701 / 1,000,000 (2%) 表示上下文窗口用了 2%。
  • Compressions — 会话期间自动压缩的次数。
  • Note — 提示信息,比如“Pricing unknown for deepseek-v4-flash”,即"没找到这个模型的价格信息"。

6.2 缓存命中率

每次跟大模型对话,系统提示词、记忆文件、历史消息等内容都会随着请求一起发送。但这些内容在很多轮对话里是重复的,比如系统提示词每次都一样。

大模型 API 提供商都会自动缓存这些重复内容。每次 API 请求的返回结果里会包含本次的缓存命中情况,这个字段是单次请求级别的,而不是整个会话的累计。各家命名略有不同:

提供商 返回字段
DeepSeek prompt_cache_hit_tokens / prompt_cache_miss_tokens
OpenAI prompt_tokens_details.cached_tokens
Anthropic 通过 cache_control 返回缓存读写量

Hermes 的 /usage 会把所有字段统一成 Input tokensCache read tokensCache write tokens,并把会话内所有请求的数据累加起来,方便看整体。

回到刚才的 /usage(2 次 API 调用累计):

code
Input tokens:           12,398    ← 没命中缓存,按原价
Cache read tokens:      22,912    ← 从缓存中读取,按折扣价
Cache write tokens:          0    ← 写入缓存,大部分提供商不收费

缓存命中率

$$ \text{命中率} = \frac{\text{Cache read}}{\text{Cache read} + \text{Input}} = \frac{22,912}{35,310} \approx 65\% $$

可以理解成这两次请求平均有 65% 的内容命中了缓存。前面几轮可能要写缓存、命中低,后面稳定了命中率就高了。

提供商 缓存未命中(原价) 缓存命中(折扣价)
DeepSeek 原价 低至 2%(以 V4 Flash 为例)
OpenAI 原价 0.25x~0.5x 原价
Anthropic(Claude) 原价 0.1x 原价
💡提示

价格政策随时可能调整,以官网为准。注意大部分提供商写入缓存不额外收费(包括 DeepSeek、OpenAI),只有 Claude 的首次写入比原价贵 25%(5 分钟缓存)或贵一倍(1 小时缓存),之后缓存命中仅付 10%。所以用 Claude 时第一条消息会比后续贵不少。

6.3 /insights:跨会话统计

输入 /insights,默认显示所有会话最近 30 天的汇总。也可以指定天数,比如 /insights 7 看最近一周。

在终端里还能用命令行查得更细:

code
hermes insights --days 30 --source cli

--source 可以按平台过滤,比如只看 CLI 的消耗,或者只看 Telegram 上的。

📌说明

为什么 Total tokens 比 Input + Output 大这么多?

跨会话累计 30 天的数据,比如:

code
Input tokens:       3,045,446
Output tokens:        564,392
Total tokens:     311,178,222

Input + Output 才 360 万,Total 却有 3.1 亿。原因很简单:Total tokens = Input + Cache read + Cache write + Output。缓存命中的 Token 每次请求都算进去,跨会话汇总后这个数字会非常大,远超过原始输入。

6.4 ■ 学点英语

中文 English 音标 说明
会话数据 Session Data /ˈseʃən ˈdeɪtə/ 一次交互过程中产生的输入、输出和状态信息
元数据 Metadata /ˈmetədeɪtə/ 描述数据来源、时间、类型等背景信息的数据
数据目录 Data Directory /ˈdeɪtə dəˈrektəri/ 集中保存会话、配置和缓存的目录
日志记录 Log Record /lɔːɡ ˈrekərd/ 系统运行时写下的事件和状态记录