开源 · MIT

vibereceipt — 你的 AI 编程,逐项列清。

vibereceipt 读取 Claude Code、Codex CLI 和 OpenCode 本来就保存在你电脑上的会话日志,打印一张购物小票:token 用量、按 API 价格算要花多少钱,以及智能体说了多少次 “You’re absolutely right”。然后保存一张可以直接发出去的 PNG。

npx github:glmn-ai/vibereceipt

即将上架 npm:npx vibereceipt。

  • 无需账号
  • 没有网络请求
  • 零运行时依赖
一张热敏打印机小票,列出会话、提示词、工具调用、token、按工具和模型的费用、订阅对比和趣味计数。标有 DEMO:示例数据。

用 --demo 示例数据打印,不是任何人的真实日志。

小票上有什么

智能体做过的一切,逐行列出

数字来自日志,价格来自公开价目表。趣味计数只在你的日志里有记录时才出现。

*** FUN COUNTERS ***

大家最爱截图的部分。

  • "YOU'RE ABSOLUTELY RIGHT"在智能体的回复里计数。
  • "PERFECT!"另一句口头禅,同样计数。
  • TIMES YOU INTERRUPTED你在中途打断智能体的次数。
  • RAGE TAX带脏话的提示词。
  • NIGHT-OWL PROMPTS 00-05午夜到凌晨 5 点之间发出的提示词。
  • BUSIEST DAY这段时间里最忙的一天。
  • LONGEST STREAK连续使用的最长天数。
  • LONGEST SESSION同一会话中没有超过 1 小时间隔的最长一段。
  • PEAK HOUR一天中你最常工作的那个小时。

0 BYTES UPLOADED

你做了什么

会话数、你输入的提示词、智能体回复、工具调用(含最常用的 3 个工具)、编辑过的文件和模型请求数。

  • SESSIONS
  • PROMPTS YOU TYPED
  • TOOL CALLS
  • FILES EDITED

Token

输入、输出、缓存读取、缓存写入,以及合计。

  • INPUT
  • OUTPUT
  • CACHE READ
  • CACHE WRITE

按工具和模型

你用过的每个智能体,以及花费最多的 3 个模型,各自的 token 和费用。

  • BY HARNESS
  • BY MODEL (TOP 3)

账单

按 API 标价算出的小计,附价目表日期。加上 --plan,它会和你的订阅费对比。

  • SUBTOTAL
  • SUBSCRIPTION
  • YOU SAVED

票头和票尾

日期、由统计数据哈希出的小票号,以及“收银员”:你花费最多的模型。底部是条形码和一句承诺。

  • CASHIER
  • 0 BYTES UPLOADED
  • THANK YOU FOR VIBING
隐私

本地读取,本地打印

它读取你磁盘上的文件,写出一张 PNG。仅此而已。

没有网络代码

零运行时依赖。从不导入 http、https、net、tls 或 dgram,也从不调用 fetch。没有账号,什么都不上传。

只读

日志只以读取方式打开,OpenCode 数据库也以只读模式打开。它唯一写入的文件就是那张 PNG。

小票上没有隐私内容

提示词文本一读到就只剩时间戳和一个“是否骂人”的标记。MCP 和未知工具合并成一行,名字不会出现。项目名只有加上 --projects 才会显示。

自己验证

克隆仓库,对构建产物运行 grep。它什么都不会输出。

git clone https://github.com/glmn-ai/vibereceiptcd vibereceiptgrep -rnE "fetch\(|node:https?|node:net|node:tls|node:dgram|WebSocket" dist

dist/ 里仅有的网址都是纯文本:它打印的分享链接和两个价目表来源。每次 CI 运行都会重复这项检查。

费用怎么算

精确到分,要么就不标价

解析器和定价来自 nsq 背后的引擎 @neurosquad/core。

  1. 01

    API 标价,带日期

    采用 Anthropic 和 OpenAI 公布的 API 价格。小票上印着价目表日期:price table 2026-10-12。

  2. 02

    每个请求只算一次

    Claude Code 每个内容块写一行,恢复的会话还会复制旧消息。这些行按消息 id 合并。

  3. 03

    每种 token 单独计价

    未缓存输入、输出、缓存读取、5 分钟和 1 小时缓存写入、长上下文和快速模式,各有各的价格。

  4. 04

    整数运算

    整数 token、整数价格,费用以皮美元计。不用浮点数,只在显示时取整一次。

  5. 05

    “无价格”,而不是 $0

    本地模型或价目表里没有的模型不标价。小票会写明这涉及多少请求和 token,并用 * 标出部分计价的行。

订阅怎么算

加上 --plan 后,这段时间里你用过的每个自然月都按一个月的订阅费计。小票会如实印出 YOU SAVED 或 YOU OVERPAID。

SUBSCRIPTION

4 mo x $200 (Jul-Oct 2026)

YOU SAVED

/ YOU OVERPAID

合计是同样的用量按 API 标价应付的金额。订阅不按 token 计费,所以这不是你实际付的钱。

参数

选时间段,加上你的套餐

不加参数就统计全部时间,在终端里打印并保存为 PNG。

--since <when>时间段:30d、7d、4w、6m、1y,或 2026-09-01 这样的日期。默认是全部时间。
--month / --year本自然月,或本年。
--plan <plan>和订阅对比:pro、max5、max20、chatgpt-plus、chatgpt-pro,或任意月费,例如 49.99。
--short适合发帖的紧凑版小票,PNG 正好是 4:5。
--out <path>PNG 保存位置。默认是 ./vibereceipt-YYYY-MM-DD.png。
--no-png只打印,不保存 PNG。
--json以 JSON 输出统计,金额精确到皮美元。除非加 --out,否则不保存 PNG。
--projects加上最常用的 3 个项目文件夹名(只有文件夹名)。默认关闭。
--demo用内置示例数据打印,顶部和底部都标有 DEMO。
支持的智能体

三个智能体的日志,无需配置

它读取这些 CLI 本来就保存在磁盘上的内容,也包括子智能体的日志。

Claude Code

读取

~/.claude/projects

Codex CLI

读取

~/.codex/sessions

OpenCode

读取

~/.local/share/opencode/opencode.db

需要 Node 18.17 或更高版本。读取 OpenCode 的 SQLite 历史需要 Node 22.13+;更旧的版本会跳过 OpenCode 并给出提示。

想支持别的智能体?解析器来自 @neurosquad/core,它已经能读取更多。提个 issue。

打印你的那张。

一条命令。什么都不会离开你的电脑。

npx github:glmn-ai/vibereceipt