OpenClaw 用量变成 unknown:一次中断为什么影响整段统计
OpenClaw 中断后 Token 和费用显示 unknown,先区分缺失用量与零用量,再核对稳定版、beta、筛选范围和服务账单,保留原始记录后恢复统计。

OpenClaw 的 Usage 页面突然把 Token 和费用显示为 unknown,甚至连当天图表都不见了,先记下版本、时间范围和出问题的会话。一次流式回复没有收到最终用量,就可能影响旧版本整段统计的展示;这不表示当天所有请求的记录都丢了。
unknown 不能按零用量理解。 客户端没有拿到完整测量,和模型服务是否已经处理、如何结算,是两个需要分别核对的问题。先保留原记录,再缩小筛选范围,不要为了让数字出现而删除会话中的未知标记。
本文核对于 2026-11-10。当天 GitHub latest stable 为 v2026.11.2;相关修复已进入另一条发布线的 v2026.11.5-beta.1。文章比较这些标签的公开源码,没有启动完整 OpenClaw,也没有复现真实模型请求中断。
先确认自己看的哪一种“用量”
OpenClaw 有多个统计入口。按当前官方 Token use 文档,下面几个入口不能直接当成同一张账单:
| 入口 | 主要回答什么 |
|---|---|
聊天中的 /usage tokens | 为后续回复开启每回合 Token/缓存用量展示 |
聊天中的 /usage cost | 根据 OpenClaw 会话日志汇总本地费用记录 |
终端中的 openclaw status --usage | 查看提供方可返回的额度窗口或账户用量状态 |
| Control UI → Usage | 按会话、日期等范围查看使用分析;需区分会话统计与提供方账户信息 |
回复输出 Token、输入框的上下文占用、订阅剩余额度,也各有统计范围。一个入口仍有数字,不能单独证明另一个入口出错。
如果刚完成接入,先按 OpenClaw 文档确认实际 Gateway 使用的提供方和模型。想理解一次任务为什么有多次模型请求,可先看 Agent Token 成本说明;排查 unknown 时要继续定位到具体回合。
一次中断怎样传到整段统计
Issue #194260 的报告环境是 Linux、OpenClaw v2026.11.1 和本地 llama.cpp 兼容接口。作者在最终用量到达前中断请求,观察到 OpenClaw 写入 unavailable 状态,随后当天总计显示 unknown,分析区域隐藏。
下面仅示意 OpenClaw 记录中的状态位置,不是模型 API 的通用原生响应,也不是实际用户日志:
{
"message": {
"role": "assistant",
"usage": {
"usageReport": { "state": "unavailable" }
}
}
}
最终 usage 可能在流的后面才到;先收到部分文字,不代表已收到完整计数。OpenClaw 用这个状态区分“没有完整测量”和“正式报告为零”。不能用回复长度、屏幕上已出现的字数,或中间计数补出最终费用。
在 v2026.11.2 的汇总实现中,合并时会传播 unavailable 标记;页面格式化遇到该标记返回 unknown,分析区域也受它控制。底层仍可能存在已知小计,但旧页面没有把它作为完整总计展示。
这解释的是特定版本的代码路径。其他“没有图表”的情况还可能涉及筛选条件、尚未完成的统计加载或没有记录;不要只凭一张空白页面就认定同一原因。
Issue 已关闭,为什么稳定版还要单独核对
截至本次查阅,#194260 已关闭,唯一回复来自机器人,明确说明当时检查了源码、没有运行现场复现或测试。它指向的 PR #187212 于 10 月 29 日合并;PR 后续也有另一位用户报告稳定版的历史日期仍显示 Unknown。后者是用户观察,不能代替版本源码核对。
本次另外读取了发布标签:
| 标签 | 核对到的相关行为 |
|---|---|
v2026.11.1 | 保留 unavailable 向汇总传播及 unknown/隐藏分析的路径 |
v2026.11.2,11 月 8 日发布的稳定版 | 上述相关文件仍保留旧处理;不能由版本数字增加推断修复已进入 |
v2026.11.5-beta.1,11 月 4 日发布的预发布版 | 解析统计时排除 unavailable 回合的 Token 与费用,页面不再沿用上述 unavailable 展示判断 |
这里的日期是发布时间,不是按标签里的数字排序。可对照 v2026.11.2 Release 与 beta Release。未来正式版可能变化,升级前应重新核对目标标签。
修复里的取舍也要说清楚:beta 解析器只把已测量回合纳入用量;未知回合仍可作为消息、错误保留下来。这能恢复可用的统计展示,却不会把原来缺失的用量找回来。若未知回合实际被服务商计费,客户端数字仍可能小于服务账单。
保留记录后,用四步缩小范围
1. 记下运行版本与时间范围
在实际运行 OpenClaw 的机器上执行:
openclaw --version
openclaw update status --json
第一条确认当前命令版本,第二条查看更新状态。还要核对管理界面连接的 Gateway,避免终端查到另一套安装。记录页面的起止日期、时区、Agent 和会话筛选条件;比较服务账单时采用相同时间边界。
这些是版本和状态检查,不会替你更新实例。命令依据 官方 update 文档,本文未在真实 OpenClaw 安装上执行。
2. 对照一个完整会话和受影响范围
先选择一段已正常结束、能看到用量的会话,再回到包含中断回合的日期范围。记录 unknown 是否跟随这个范围变化,以及统计是否仍在加载。
若能合法访问自己的会话记录,在本机查看相关时间是否有 usageReport.state = unavailable。只保存必要的状态和时间,不公开完整对话、工具结果、附件或密钥。不要把历史记录整体发到 Issue 中。
3. 把未知、零值和缺少价格分开
| 看到的情况 | 可以得出的结论 | 还需要核对什么 |
|---|---|---|
| 完整返回 Token 和费用记录 | 有这次调用的已知记录 | 记录的是估算还是服务报告金额,统计范围是否一致 |
| 服务最终明确报告零值 | 这项测量值为零 | 不要与程序初始化的默认零混同 |
usageReport.state = unavailable | 缺少完整用量 | 原请求状态及服务侧记录,不能补成零 |
| Token 有值,费用未显示 | 费用信息还不充分 | 是否有记录金额、匹配的模型价格及对应版本逻辑 |
通过 Nbility 调用时,可按时间、模型和请求 ID 在用量日志关联请求,再按账户与计费说明核对记录。客户端估计、站内额度和实际支付金额的单位也要分清,不能只比较两个 $ 数字。
4. 核对更新目标,再验证历史范围
需要更新时,先备份配置与状态,并用受支持的部署流程检查目标。可先查看更新计划:
openclaw update --dry-run
这能帮助确认准备更新到哪里;不能证明目标版本已经修复特定统计路径。需要尝试 beta 时,先在独立环境用公开短任务验证,评估整个版本的兼容性后再安排业务实例升级。
PR #187212 包含统计缓存版本调整,目的在于从保留的会话记录重建派生统计。它不是为原请求重新获取最终 usage。更新完成后,要重新选择原来的历史日期范围,等待支持的统计重建完成,再检查一个完整新回合。仅看新对话有数字,还没有验证旧范围恢复。
为什么不直接删标记、清缓存或重跑任务
原报告提到手动删状态和缓存后的局部结果。本文不把这套操作当作通用修复:改掉 unavailable 并没有获得缺失计数,还可能让统计看起来完整。直接删派生缓存也需要了解当前存储版本、重建机制和恢复方法。
同样,重跑模型任务会生成新的调用,无法补齐旧请求的测量。若任务还会发消息、写文件或创建订单,重试又可能产生额外动作。关于确认请求状态后再重试,见有上限的重试与退避。
这次排查的完成条件可以很具体:确定运行版本与目标修复范围,保留受影响回合,解释哪些统计是已知小计,并把需要核对的请求与服务记录对应起来。恢复一个数字显示后,仍要保留“缺失回合可能未计入”的含义。


