前面几节讲的是 Hermes 怎么记住你、怎么翻历史、启动时带了什么配置。这一节看的是数据——每次会话的用量、消耗、缓存效率、跨会话统计,还有怎么把这些数字换算成费用。
读完会知道:/usage 的输出每一行代表什么、缓存命中率怎么算、怎么看跨会话的总消耗。
6.1 单次会话数据
在对话中输入 /usage,会看到当前会话的各项数据:
📊 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 tokens、Cache read tokens、Cache write tokens,并把会话内所有请求的数据累加起来,方便看整体。
回到刚才的 /usage(2 次 API 调用累计):
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 看最近一周。
在终端里还能用命令行查得更细:
hermes insights --days 30 --source cli
--source 可以按平台过滤,比如只看 CLI 的消耗,或者只看 Telegram 上的。
为什么 Total tokens 比 Input + Output 大这么多?
跨会话累计 30 天的数据,比如:
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/ | 系统运行时写下的事件和状态记录 |