Skip to content

Repository files navigation

token-bill

把 AI 编程代理的 token 消耗变成客户账单:agent 原生 skill 形态 + 按项目出账 + 成本/报价双轨导出,AI 时代 Vibe coding 的商业助手

已在 Zcode Kimi-work Reasonix中实测,更适合国内agent体质!

License: MIT Python Platform


💡 它做什么

多数 token 统计工具回答"我烧了多少",token-bill 回答"我该向客户收多少"。

在你的 agent 项目里:

  • 用 /token-bill 显示这个项目的消耗
  • 用 /token-bill-cost 显示这个项目的成本
  • 用 /token-bill-all 显示所有项目的消耗和成本
  • 用 /token-bill-export 导出本项目的成本和报价(xlsx 格式或 csv 格式)

📸 看看长什么样

token-bill:当前项目账单

token-bill-cost:成本预估

token-bill-export:导出对客账单

✨ 核心特性

  • 按项目出账——按项目目录聚合,不按天不按模型
  • 成本/报价双轨——自用成本视图 + 对客报价视图(报价 = 成本 × 可配置系数),导出时分离成不同 sheet/文件
  • agent 原生——五个 skill 直接进 "/" 菜单(带用法提示),同时也是任何 agent 都能调用的通用 CLI
  • 数据源可插拔——fetcher 接口把各家 agent 的逐请求 usage 归一成统一记录
  • 宿主自动识别——无需手动指定数据源:自动检测当前宿主是 ZCode / Reasonix / Kimi Work(环境变量 → 工作目录 → 进程树三层探测),并只列出本机真实存在的数据源
  • 聊天界面原生可读——账单用框线字符排版,SKILL 约定 agent 以等宽代码块展示,在 Reasonix / Kimi Work 等 Markdown 聊天界面里不错位
  • 跨平台——Windows / Linux / macOS,零硬编码路径
  • 中文账单输出——¥ 千分位,Excel 打开零乱码(CSV 降级带 BOM)

🆚 与同类工具的差异

ccusage(18k★) codeburn(10.9k★) token-bill
用途 自用监控 覆盖 37 种工具的自用监控 对客户出账
聚合维度 天 / 月 / 模型 模型 / 项目 / 任务 项目 → 账单
价格模型 厂商成本 厂商成本 成本 + 报价系数(可配置利润)
输出 CLI 表格 CLI + 报告 xlsx 原生图表 + 对客 sheet(无公式/无单价/无系数)
形态 独立 CLI 独立 CLI agent skill + CLI

它们监控自己,token-bill 为您向客户出账。

💰 定价配置(prices.json)

所有价格都在 token-bill/prices.json 里:unit_prices 是四项计费单价(非缓存输入 / 缓存写 / 缓存读 / 输出,元/百万 Token),quote_factor 是报价系数(对客价 = 成本 × 系数,默认 3)。直接编辑文件即可,下次执行命令时生效;_ 开头的键是注释。也可以用 /token-bill-set 命令改,例如 /token-bill-set 缓存读 0.5。校验规则:单价 ≥ 0(填 0 表示该项免费),系数 ≥ 1。

🤖 安装:交给您的 agent

不用手动装——把仓库链接甩给您的 agent,附这段指令:

克隆 https://github.com/<owner>/token-bill 并读 README.md,然后:
1. 把五个 skill 目录(token-bill、token-bill-cost、token-bill-export、
   token-bill-all、token-bill-set)复制到我的 agent 的 skills 目录
   (ZCode:~/.agents/skills;Claude Code:~/.claude/skills)。
   如果我的 agent 没有 skills 机制,跳过这步——直接用 CLI 就够了。
2. 冒烟测试:python token-bill/scripts/bill.py --all(不带 --source,自动检测宿主数据源)
3. 汇报本机有哪些数据源可用
   (检查 ~/.zcode、~/.config/reasonix 或 %APPDATA%\reasonix、~/.kimi)。

关于 Reasonix 的说明:因官方接口暂未提供项目归属字段,该源目前只能出全量账并标注"未归类 ⚠";分模型、按天统计不受影响。等官方在用量记录里补上 session_id/topic_id 字段后,fetcher 十行内即可支持按项目出账。

🔌 接入新数据源(fetcher 契约)

给另一家 agent 出账 = 在 token-bill/scripts/fetchers/ 里新增一个文件,聚合、计费、导出层一律不动。

一个 fetcher 必须满足:

  1. 产出 UsageRecord 记录:source, project(项目绝对路径), date(YYYY-MM-DD 本地), model, non_cached_input, cache_write, cache_read, output, request_count
  2. 用 @register_fetcher("源名") 注册,实现 fetch(project=None, since=None, until=None)
  3. 激活前过验收清单:
    • 存储位置与文件格式确认(含压缩格式)
    • 四项计费字段完备且独立——否则诚实降级为两项(输入合计/输出),并在输出中显著标注"无缓存拆分口径,价格为估算"
    • 输入/缓存包含关系在全量数据上验证非负
    • 项目归因键存在(不存在则归入 未归类 ⚠,禁止猜测)
    • 时间戳在 Python 层转换(单位 + 本地时区)
    • 子代理/子会话用量计入且只计一次
  4. 参考实现:读 fetchers/base.py 和任意现有 fetcher(如 zcode.py)

您的 agent 拿着这一节 + fetchers/ 目录就能自己写出新 fetcher,欢迎 PR 回来。

📝 更新记录

v2.0.1(2026-09-10)

  • 新增宿主自动识别:--source 缺省时自动检测当前 agent(环境变量 → 工作目录 → 进程树三层探测),只列出本机真实可用的数据源
  • 新增无项目归因源的友好降级:该源无项目归属字段时自动给全量账并标注"未归类 ⚠",不再报错或出空账单
  • 修复纯 Kimi Work / 纯 Reasonix 环境下误报 zcode 可用、误落 zcode 兜底的问题
  • 修复表头框线在部分终端右边框错位(歧义宽度字符根因,改为无右边框横幅)
  • 明确聊天界面展示约定:账单以等宽代码块展示,框线不错位(写入 SKILL.md 供 agent 遵守)
  • 移除 DeepSeek Harness 数据源(未实测不发布,待实装验证后按 fetcher 契约接回)
  • 修复 SKILL.md 执行示例的代码围栏嵌套错误,参数提示同步移除 dsh 选项

v2.0.0(2026-09-09)首发

  • 五命令(bill/cost/all/export/set)、三数据源(ZCode/Reasonix/Kimi Work)、成本报价双轨导出(xlsx 原生图表/CSV 降级)、跨平台

🙏 致谢

感谢以下同类工具的启发:ccusage、codeburn、TokenTracker、splitrail。它们监控自己的消耗,token-bill 为您向客户出账。

📄 许可证

MIT

About

AI 时代 Vibe coding 的商业助手。按项目出账 + 成本/报价双表导出。Zcode、Kimi-Work完美运行,Reasonix兼容使用。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages