读取本地 session transcript 解析 Token 用量,按项目、skill 归因,展示撞限时间点和超长上下文会话。
当 Claude Code 达到 5 小时或每周限额时,我想知道是哪个项目耗尽了配额。/usage 回答不了这个问题。它只给出账户级别的百分比和一些标签,比如 ">150k context" 或 "4+ parallel sessions"。没有任何按项目维度的细分,我也没法把这些百分比和任何具体数据做对照。
Claude Code 已经在每个本地会话的 transcript 中写入了每条消息的 token 用量,位置在 ~/.claude/projects/*/*.jsonl。所以我写了一个插件叫 quota-audit,它读取这些文件,按项目(project)和技能(skill)拆解用量。它还会显示触发限速的精确时间和被阻断的是哪个仓库。所有数据都留在本地——它只读取这些文件,不往任何地方发送。
报告开头是几条计算得出的发现(findings),随后每个时间窗口(5h、24h、7d)各有一行概览,最后是时间跨度最长的那个窗口的详细数据。下面是一个精简后的示例:
KEY FINDINGS (7d window)
• Estimated cost $147.31, 65% of it in my-app ($95.20)
• Top skill is ai-work at 54%
• 11 sessions crossed 150k context, $88.40 combined (60% of window cost)
• 3 rate-limit hits in 7d; 14 all-time, most often blocking my-app (9 times)
window est. cost sessions >150k hits top project
5h $12.40 5 2 0 my-app 81%
24h $38.75 21 4 1 my-app 70%
7d $147.31 99 11 3 my-app 65%
技能归属是按消息粒度统计的,而不是按会话启动时用了哪个命令,所以具名技能与通用交互用量的划分是站得住脚的。超过 150k context 的会话按名称列出,费用最高的排在前面——因为这通常是最能撬动的杠杆。限速触发按仓库和时间分组。
插件还会检测轮询循环(polling loop),比如浏览器标签页或脚本开着,每隔一两分钟就调一次接口。这种情况会虚高会话数,但实际上并不消耗多少配额。想看每个窗口的详细数据以及每次触发的具体信息,给 render.py 传 --full 即可。
当前版本是 v1.3.0。在 Claude Code 交互式会话内安装:
/plugin marketplace add rosehsu47/claude-code-quota-audit
/plugin install quota-audit@rosehsu47
或者非交互式安装:
claude plugin marketplace add rosehsu47/claude-code-quota-audit
claude plugin install quota-audit@rosehsu47
如果安装摘要提示 Run /reload-plugins to activate,执行一下即可。之后就可以问类似"谁在吃我的配额"或"哪个仓库在烧我的 5 小时限额"这样的问题。也可以直接调用 /quota-audit。报告语言根据你的 locale 输出英文或繁体中文,设置 QUOTA_AUDIT_LANG=en 或 QUOTA_AUDIT_LANG=zh 可强制指定。
美元数字是基于插件内置的定价快照估算的,不是你的实际账单。我更建议相信项目之间的相对比例,而不是绝对总额,总额可以对照实时的 claude -p "/usage" 交叉验证。子 agent(subagent)按项目维度的费用暂时没有——和 /usage 一样,它只能看到运行它的那台机器,看不到其他设备或 claude.ai。
代码在 github.com/rosehsu47/claude-code-quota-audit,欢迎说说你们是怎么追踪自己配额去向的。