5000亿Token背后的故事

junhoyeo/tokscale 是一个追踪 AI 编程助手 Token 使用量的开源工具,支持 Claude Code、Cursor、Gemini CLI 等主流平台。上线至今,GitHub 收获 480+ Stars,全球用户累计追踪的 Token 数量已突破 5000亿个

5000亿是什么概念?这相当于数百万美元的 AI 算力消耗。而 tokscale 帮助开发者们把这些「隐形消费」可视化了出来。

https://github.com/junhoyeo/tokscale

然而某天,GitHub Issue 里出现了一个让我震惊的报告:

“点击 Submit 按钮后,需要等待将近 3 分钟。这是正常的吗?”

170秒。

在一个追踪 5000 亿 Token 的服务里,数据提交竟然需要接近 3 分钟。这太讽刺了。

在这里插入图片描述
在这里插入图片描述

问题根源:经典的 N+1 查询

tokscale 的数据提交逻辑是这样的:用户提交使用数据后,服务器按日期存储。提交一年的数据,大约会产生 365 条日期记录。

问题出在存储逻辑上。原来的代码对每个日期都单独执行 INSERT 或 UPDATE 查询:

// 原来的写法 (伪代码)
for (const day of days) {
  const existing = await db.query("SELECT * FROM usage WHERE date = ?", day.date);
  if (existing) {
    await db.query("UPDATE usage SET ... WHERE date = ?", day.date);
  } else {
    await db.query("INSERT INTO usage ...", day);
  }
}
// 332天 = 332次查询 😱

生产环境使用 Neon(Serverless Postgres),每次查询都有约 500ms 的网络往返开销。

500ms × 332次 = 166秒,加上事务开销就是 170秒。

解决方案:开源社区的力量

社区贡献者迅速提交了 PR,将 332 个查询合并为 2 个批量查询

// 优化后 (伪代码)
// 1. 内存中分类
const existingDates = await db.query("SELECT date FROM usage WHERE date IN (?)", allDates);
const existingSet = new Set(existingDates);

const toInsert = days.filter(d => !existingSet.has(d.date));
const toUpdate = days.filter(d => existingSet.has(d.date));

// 2. 批量执行 - 只需2次查询!
await db.batchInsert(toInsert);
await db.batchUpdate(toUpdate);
指标 优化前 优化后 提升
查询次数 332次 2次 166倍
执行时间 170秒 <1秒 170倍

v1.1.0 完整更新

  • 🚀 批量查询优化(170秒 → 1秒)
  • 🔐 多账户 Cursor 登录支持
  • 🎯 动态模型名匹配
  • 🖥️ Headless 模式日志聚合

反思:AI 写的代码,社区来修

这段 N+1 代码是 AI 编程助手帮我写的。逻辑正确,但漏掉了性能陷阱。

AI 时代的教训

  • AI 生成的代码仍需人工 Review
  • 性能模式识别还需要人的经验
  • 开源社区的集体智慧依然有效

AI 写的 bug,全球开发者一起修。这就是开源的魅力。

试试看

curl -fsSL https://bun.sh/install | bash
bunx tokscale@latest

如果你也好奇自己每天「烧」了多少 Token,欢迎试试!


🔗 链接

  • GitHub: https://github.com/junhoyeo/tokscale
  • 官网: https://tokscale.ai

⭐ 支持作者

如果这篇文章对你有帮助,欢迎:

  1. tokscale 点个 Star
  2. 在 GitHub 上 关注@junhoyeo

我会持续分享 AI 工具、开源项目和性能优化相关的内容。你的支持是我继续创作的动力!🙏

在GitHub中,我们还发现了翻译成简体中文的README。
https://github.com/junhoyeo/tokscale/blob/main/README.zh-cn.md

请添加图片描述


原文链接Disquiet - 170초 걸리던 제출이 1초로 줄었습니다
作者:https://github.com/junhoyeo
原创加速声明:本文改编自作者在韩国开发者社区 Disquiet 发布的原文《170초 걸리던 제출이 1초로 줄었습니다. 전세계 바이브코더들의 토큰 5천억 개 트래킹하는 tokscale의 1.1.0 릴리즈》,为方便中国开发者阅读而加速本地化。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐