在 WebChat 底部显示请求模型和输入/输出/缓存 token,缓存命中率按缓存/(缓存+输入)计算。
---
name: "token-usage-display"
slug: "token-usage-display"
displayName: "Token Usage Display"
description: "在 WebChat 底部显示请求模型和输入/输出/缓存 token,缓存命中率按缓存/(缓存+输入)计算。"
metadata: { "openclaw": { "emoji": "🧮" } }
---
# token-usage-display
## 目的
修改 OpenClaw Control UI 消息底部信息,不改消息正文:
- 用户消息显示该次请求对应的模型名。
- Assistant 消息显示:`In<输入>|Out<输出>|Cache<缓存读取>(<命中率>)`。
- 上游明确返回 `0` 时显示 `0`;字段不存在时显示 `null`。
- 不在分隔符两侧插入空格。
## 强制交互
每次用户要求执行本 skill 时,先问:
> 这次要保留日期显示吗?
用户明确回答后再运行:
```bash
cd ~/Desktop/openclaw_workspace_wooh/skills/token-usage-display
python3 scripts/patch.py --show-date yes
python3 scripts/patch.py --show-date no
```
## 格式与计算
```text
In2430|Out856|Cache1024(29.6%)
In2430|Out856|Cachenull(null)
In100|Out0|Cache0(0.0%)
```
- `In`:`usage.input` 或 `usage.inputTokens`。
- `Out`:`usage.output` 或 `usage.outputTokens`。
- `Cache`:`usage.cacheRead` 或 `usage.cache_read_input_tokens`。
- 命中率:`缓存读取 ÷ (缓存读取 + 输入 token) × 100`,保留 1 位小数。
- In、Cache 缺失,或两者之和不大于 `0` 时,命中率为 `null`。
- 缓存写入不显示,但不能删除或破坏原始 usage 数据。
## 补丁与升级
脚本使用 `OTUD-v3 show-date=yes|no` 标记。当前系统若为 OTUD-v1、v2 或不同日期设置的 v3,必须从 `.otud-pristine` 重新构建,不能叠加修改。当前 v3 且日期设置相同才可返回幂等成功。
脚本必须自动从 `dist/control-ui/index.html` 发现 hash bundle,首次创建 pristine 和时间戳备份,精确校验锚点,用临时 `.js` 执行 `node --check` 后原子替换。异常时输出 `PATCH FAIL`,不得写入。
不改正文、原始 transcript 或 provider transport;只作用于 Control UI/WebChat。
don't have the plugin yet? install it then click "run inline in claude" again.