Skip to content

Latest commit

 

History

History
340 lines (241 loc) · 11.5 KB

File metadata and controls

340 lines (241 loc) · 11.5 KB

English | 简体中文

token-receipt

把 AI 用量,打印成一张自带补刀的账单。

ASCII-native pricing-aware software-aware Claude Code Codex Trae Kimi Code OpenCode

不是仪表盘。不是表格。不是自我安慰。
是一张在你开始合理化成本之前,先把账打出来的小票。

这项目为什么存在

大多数 token 工具在“解释用量”。

token-receipt 在“给你结账”。

它把原本藏在后台的 AI 成本,变成一张热敏纸风格的小票。你可以直接贴进对话、截图发帖,或者把它当成“这轮到底烧了多少”的物证。

这个项目只有三条原则:

  • 先有小票感,再有后台感 输出应该像结账,不像管理台。
  • 口径必须诚实 先读本地真实日志,再谈官方价格;对不上就承认对不上。
  • 结果必须可传播 不能只是“能看”,要达到“想发”。

预览

                    ▐▛███▜▌
                   ▝▜█████▛▘
                     ▘▘ ▝▝
                  CLAUDE CODE

                 感谢使用 Claude
        小票号: CC_20260427_155533_9A83E3
            日期: 2026-04-27 15:55:33
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
供应商                                  ANTHROPIC
模型                            claude-sonnet-4.5
已用上下文                                  12,487
────────────────────────────────────────────────
项目                                        TOKEN
────────────────────────────────────────────────
输入 Tokens                                12,487
输出 Tokens                                 3,215
缓存读取                                     8,742
推理 Tokens                                   128
缓存写入                                     1,024
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
总计                                15,702 Tokens
────────────────────────────────────────────────
USD 预估                                $0.062851
价格映射                         claude-sonnet-4.5
价格日期                                2026-04-25
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                画面稳了,预算死了。

         ||| |||||  ||||||| |||||||||  |
            CC_20260427_155533_9A83E3

footer 才是亮点

footer 不是装饰。

footer 是最后那一刀。

这个项目的核心想法之一,就是让小票最后一行像模型看着你为了“再改一版”多烧了一轮上下文以后,冷冷留下一句评语。

现在这件事分成了两层:

  • 默认小票里的 footer 继续负责补刀,口气冷一点,像账单自己在记仇
  • HTML 里如果用户主动给了 tip,footer 会切进另一套结账态语气,明显更领情、更会来事,也更知道你是额外掏了钱
  • 进入 tip 模式后,英文不再反复拿产品名当主语起手,中文也会真的吃进语气和账单轻重,而不是只演一个假动态

例如:

  • 画面稳了,预算死了。
  • 最后一版这个词,本来就不诚实。
  • 推理不免费,犹豫更贵。
  • 问题死了,账单活着。

也就是说,给了 tip 以后,footer 不是在原句后面加一句感谢语,而是整句改写。 它会从“冷冷记账”切成“收银台知道你打赏了”的口气。

如果小票好看,但 footer 不够扎心,那这张票还没完成。


安装

推荐直接用 Skills CLI 安装:

npx skills add https://github.com/Hchen1218/token-receipt -g -y

如果你只想把它装到某个软件里,也可以定向安装:

npx skills add https://github.com/Hchen1218/token-receipt -a codex -y
npx skills add https://github.com/Hchen1218/token-receipt -a claude-code -y
npx skills add https://github.com/Hchen1218/token-receipt -a opencode -y

怎么触发

1. 在聊天里直接触发

如果你是把这个 repo 当 skill 装进软件里,正常用法不是先去终端里手动试命令。

正常用法是:就在你正在用的那个软件聊天框里,直接开口让它结账。

这些说法都应该触发:

  • token 小票
  • 对话发票
  • AI 用量账单
  • 把这次对话打成小票
  • 看看这轮 token 消耗
  • 查看本次对话 Token 消耗
  • token receipt
  • token bill
  • usage receipt

如果你想指定语言,也可以直接说:

  • 中文版 token 小票
  • token receipt in English

2. 让 Claude Code 自动触发

Claude Code 支持 SessionEnd 自动出票。

先安装 hook:

python3 scripts/install_claude_auto_trigger.py

装好以后,Claude Code 会话结束时就会自动出 receipt,不需要你再多说一句。


支持哪些软件

它会优先给你当前正在用的软件结账。 不会因为别的软件日志更新得更晚,就偷偷换源。

软件 当前状态 数据来源 说明
Codex 现在就支持 Codex JSONL 会话 直接读本地会话日志
Claude Code 现在就支持 Claude usage-data + projects 用 usage log 取 token,用 transcript 辅助识别模型
Trae 当前先支持手动出票 Trae 应用存储 自动导入暂未发版
Kimi Code 现在就支持 kimi-cli context.jsonl~/.kimi/sessions/KIMI_SHARE_DIR _usage.token_count 上下文累计;不做美元分项估算;要精确计价请用手动 --input-tokens / --output-tokens
OpenCode 现在就支持 ~/.local/share/opencode/opencode*.db(可用 OPENCODE_DATA_DIRXDG_DATA_HOME 读 SQLite 中 message.datatokens / modelID;支持 --scope latest-turn / session

补充说明:

  • 部分 Trae 构建会使用 Trae CN / .trae-cn 命名。
  • 在 Codex 里运行时,当前 runtime 可以被识别,token-receipt 会读 Codex 日志。
  • 在 Claude Code 的 SessionEnd hook 里运行时,token-receipt 会读 Claude Code usage log。
  • 如果你是在普通 shell 里直接运行,而且本机同时有多套软件日志,就要显式加 --agent-tool;现在不再允许跨软件猜最新日志。
  • 目前版本里,--agent-tool trae 的态度是诚实的:它会明确告诉你先用手动模式,而不是假装 Trae 已经有稳定的 JSONL 会话日志可读。

支持哪些模型

这里分两层:

  1. 小票渲染 手动模式下,任何模型名都能渲染到小票上。
  2. 价格估算 只有在 references/pricing.json 里有映射的模型,才会显示价格。

当前已覆盖的模型家族包括:

  • OpenAI GPT-5 家族、Codex 家族、GPT-4.1、GPT-4o、o3o4-mini
  • Anthropic Claude Opus / Sonnet / Haiku 家族
  • Google Gemini 2.x / 3.x 家族
  • Moonshot Kimi K2 家族
  • DeepSeek DeepSeek V4 家族
  • Alibaba Qwen 家族
  • Zhipu GLM 家族
  • Xiaomi MiMo 家族
  • MiniMax M2 家族

如果你的模型还没进映射表,小票照样能出。

只是价格不会陪你一起演戏。


它到底读哪些字段

当前小票字段是故意收着打的:

  • Input Tokens
  • Output Tokens
  • Cache Read Tokens
  • TOTAL
  • Reasoning Tokens 仅在真实可读时显示
  • Cache Write Tokens 仅在真实可读时显示

这个策略是故意的。

宁可少打一项,也不乱打一项。


可打印 HTML

聊天里的 monospace 小票仍然是主输出。

HTML 是第二出口:适合走浏览器打印预览、连真实打印机,或者接热敏纸工作流。

python3 scripts/token_receipt.py --agent-tool claude-code --output html --write ./receipt.html

receipt.html 用浏览器打开,点一下 Print receipt,剩下的交给浏览器和打印机。

如果宿主支持本地文件链接,更顺手的做法是双导出:

python3 scripts/token_receipt.py --agent-tool claude-code --write /tmp/token-receipt.txt --write-html /tmp/token-receipt.html

这样聊天里保留 monospace 小票,同时还能顺手附上一份可点击的打印版 HTML。

现在更推荐直接走统一的聊天回复模式:

python3 scripts/token_receipt.py --agent-tool codex --chat-reply
python3 scripts/token_receipt.py --agent-tool claude-code --chat-reply
python3 scripts/token_receipt.py --agent-tool kimi-code --chat-reply
python3 scripts/token_receipt.py --agent-tool opencode --chat-reply

这会把完整 receipt 代码块作为主回复,同时自动落一份 /tmp/token-receipt.html,再把 [Printable HTML](file:///tmp/token-receipt.html) 一起带回来。

这一版的 HTML 主要盯住了三件最容易被看出来的事:

  • 屏幕上有一层淡灰背景板,小票本体保持白色,边界更清楚
  • 真正打印时仍然是纯白票面,不会把预览背景一起带上纸
  • HTML 里也按软件切 logo:Claude Code 用单独的矢量标,Codex 和 Trae 用嵌入式图片素材

现在它也不只是“导出一张静态网页”了,而更像一个真的结账界面:

  • 小票外有 EN / 中文 切换,不用重新生成文件也能直接换语言
  • 小票外有 加一点小费 面板,控制项不印进纸里,默认票面更干净
  • 只有这张小票本身能算出真实价格时,才会出现小费面板;对不上价的单子不会硬演 gratuity
  • 只有真的选了小费比例,票内才会出现 小计 / 小费 / 应付总额
  • 进入小费模式后,footer 会整句重写,不是在原句后面硬拼一句感谢语
  • 小费态的 footer 会明显换口气:默认小票更冷,给了小费以后会更像收银台,开始领情,也更愿意哄你
  • 切语言时不只是肉眼上换票面,页面本身的语言状态也会一起切过去,打印和浏览器语义更一致

Claude Code 自动出票

安装:

python3 scripts/install_claude_auto_trigger.py

卸载:

python3 scripts/uninstall_claude_auto_trigger.py

这会把 token-receipt 接进 Claude Code 的 SessionEnd hook。

对话结束。

账单出现。

嘴硬窗口关闭。


更新日志

持续更新记录见 CHANGELOG.md


更新计划

  • 现在已经有 带语言切换、外置小费面板和实时结账态的可打印 HTML。
  • 接下来会做 更适合常见纸宽的打印预设,以及更干净的打印默认样式。
  • 后面准备补 Trae 的自动会话导入,前提是本地存储结构足够稳定,值得信。

最后一刀

每一次提示词,都会留下账单。

token-receipt 只是比你的心理防线更早把它打印出来。


灵感来自 chrishutchinson/claude-receipts
同样是 receipt 的直觉,不同的是语气更黑,软件更多,footer 更狠。