跳到正文
Hacker News· daocat·· 10 天前AI 评分48

Viberuler:测量你的 AI 编程上下文都花在哪了

Show HN: Viberuler – measure where your AI coding context goes

AI 导读

Viberuler 是一款本地运行的 CLI 工具,通过扫描 Claude Code 和 Codex 的会话日志计算 VIBE SCORE,核心指标为 tokens per dollar(每美元 token 数)。默认运行零网络请求,--submit 仅上传 14 个聚合字段,不含路径、仓库名、提示词或代码。支持 npx viberuler 直接运行,并提供月度回顾和排行榜提交功能。

正文 · AI 翻译

npx viberuler demo

氛围编程者的基准。
你到底有多能 vibe?只有一个办法能知道:

npx viberuler

npm ci tokens benchmarked zero network


它做什么

viberuler 扫描你的机器——本地运行,几秒完成——并计算出你的 VIBE SCORE:

信号 来源 炫耀值
🧠 烧掉的 token Claude Code + Codex 会话日志(+ 你的 LiteLLM 网关,需选择加入) 1.2B tokens
💸 每美元 token 数 token ÷ 花费(内置价格表) 6.5M tok/$ — TOP 3%
⚡ 交付的代码行数 你在你的提交中添加的行数,减去生成的内容 312K LoC
⚙️ 机器噪音 你提交的生成行数,以及它们在你 diff 中的占比 163K · 33% of diff
📦 项目 你撰写过提交的仓库 47 projects
🔥 连续 · 节奏 连续提交天数,以及每个活跃日的提交数 212-day streak · 8.4/day
🏆 成就 见下文 Token Billionaire
🤖 马厩里的 agent 你主目录中已知编程 agent 的标记目录 4 agents · Claude Code · Codex · Antigravity
⏳ Codex 计划余量 Codex 已经写入其会话日志的 rate_limits 记录——不计分,不上传 5h 12% used · resets in 45m · week 2% used

然后它会打印一张记分卡,你会在反应过来之前就截图。

tokens per dollar 是头条数据。谁都能烧 token。高效地烧才是本事。

Token 就是赌场筹码。它们之所以这样计价,就是为了让你花的时候不觉得是在花钱——而每一种新的工作方式(vibe 一下、随口说、让 agent 自己搞定)都在降低投入、抬高消耗。viberuler 就是收银窗口:它把筹码换回美元——按 API 等价计算,总计和分平台——在你重新坐回牌桌之前。

代码行数统计的是你写的,而不是你拥有的。它过去统计的是你仓库目录树的大小——这会把从未碰过的第三方代码和编译器生成的每一行都算在你头上。现在它统计的是你在自己提交中添加的行数,排除生成内容。这让作者自己的头条数字下降了 17%,而我们发布了更小的真实数字。详细原因 →

被排除的行仍然会显示。作者 diff 中有三分之一是机器输出——重新生成的类型、打包产物、锁文件。它不计分,也永远不会离开你的机器;它是一个可以缩小的基线。看不见的数字,就是你无法减少的数字。

这是一面镜子,不是绩效评估。这里的每个数字都只限定于一台机器和一个人:你。用烧掉的 token 给一个初级员工打分,你就会得到一个烧 token 的初级员工——古德哈特定律一周内就会应验,而 token 的钱是你付的。截图、炫耀、和选择加入的人比较;一旦它进入某人的绩效评估,它就不再衡量任何东西了。

viberuler scanning locally and printing the scorecard: projects, LoC, tokens, tokens-per-dollar, streak, rank

段位

Prompt Peasant → Vibe Apprentice → Token Burner → Context Goblin → Ship Machine → GIGACHAD SHIPPER → Singularity Adjacent

(没有数据?你会得到 NPC (no vibes detected)。我们很抱歉。我们并不抱歉。)

成就

💰 Token 亿万富翁 — ≥10 亿 token 🪦 免费层殉道者 — 花费不到 $1 却用了 ≥100 万 token 🗄️ 缓存低语者 — >90% 缓存读取
🌐 多语言者 — 5 种以上语言 🐘 单体仓库威胁 — 在单个仓库中撰写 10 万行以上 🔥 连击狂魔 — 连续 100 天
🌙 凌晨 3 点提交者 — 10 次以上夜间提交 💥 YOLO 强推者 — 20 次以上历史重写 🎰 豪赌客 — 烧掉 $1,000 以上 API 等价金额
🎲 换桌常客 — 在 3 个以上平台各烧掉 $1 以上

排行榜

npx viberuler --submit

GitHub device-flow 登录 → 你的分数会实时显示在 viberuler.dev/u/<you>,作为一份 Vibe Measurement 证书(代码行数 · tok/$ · 连续天数 · agents · 排名 · 头衔),专为炫耀而生。全球排名。效率百分位。预填分享链接 — X · LinkedIn · Facebook · Bluesky。

分享到 Stories — 证书页面还会渲染一张竖版 9:16 的 story 卡片(Spotify-Wrapped 风格的数据揭晓),以及一个 Share to Stories 按钮。在移动端,它会把卡片直接交给手机的原生分享面板 — Instagram、WhatsApp、Facebook、Messenger;在桌面端,它会下载卡片供你发布。(Stories 仅限 App 内,所以这是唯一的进入方式 — 与 Wrapped 使用的机制相同。)

隐私(HN 的朋友们,请读这段)

  • 默认运行会进行 零网络调用。零。
  • --submit 只发送 聚合数据 — 十四个字段:聚合统计、成就 id、你的编码 agent 名称、提交连续天数,以及交付成果(已交付功能 / 已合并 PR)。没有路径,没有仓库名,没有提示词,没有代码。永远没有。
  • 在发送任何内容之前,CLI 会打印出 确切的 JSON 载荷 并询问。
  • --share 也不发送任何内容:它只是打印一个携带你展示数字的 URL。打开或发布该链接由你决定,它渲染的卡片会标记为未验证。
  • 时间指标来自你转录记录中已有的时间戳。没有任何东西监视你的屏幕,也不会读取、存储或发送任何窗口标题、路径或文件名。
  • 别信我们 — 读读那约 140 行代码:packages/cli/src/payload.ts 和 packages/cli/src/submit.ts。详情:PRIVACY.md。

数学部分

完整公式、价格表、归一化和诚实的免责声明见 METHODOLOGY.md。简版:

VIBE = 1000·log₁₀(1 + LoC/1000)          # shipping volume
     +  500·log₁₀(1 + tokens/1M)         # AI leverage
     +  800·efficiency_percentile        # tokens/$ vs the world
     +  300·log₁₀(1 + projects·10)       # breadth
     +  min(streak, 365) + 50·achievements

处处使用对数 — 巨鲸被压缩,新人有攀升空间。

月度回顾

npx viberuler wrapped --month 2026-06

你的本月 Vibe Wrapped — 提交数、最忙的一天、连续天数、最常用语言,以及该时间窗口内的 Claude Code tokens/成本。100% 本地;截图炫耀吧。

标志

npx viberuler                # scan + scorecard (100% local)
npx viberuler audit          # audit your rig — see below
npx viberuler --submit       # push to the global leaderboard
npx viberuler payload        # show exactly what --submit WOULD send
npx viberuler --json         # machine-readable
npx viberuler --scan-dir ~/code --since 2026-01-01
npx viberuler --scan-dir ~/work --scan-dir ~/oss   # repeatable — scans ALL repos under each root
npx viberuler --github <handle>   # add your stars (the only other network call)
npx viberuler --share        # print a shareable card URL (nothing is sent)
npx viberuler audit --idle-gap 5             # pause (minutes) that stops counting as attention
npx viberuler audit --compare 2026-06-01..2026-07-01   # that window vs the equally long one after it
npx viberuler audit --market   # reprice your mix at live market rates (one catalog GET, opt-in)

裸运行会扫描你 主目录 下的每个 git 仓库。如果你的代码在别处(或分散在多个位置),请把 --scan-dir 指向每个根目录 — 可重复使用,并且所有指标(代码行数、提交数、功能、PR)都会汇总所有找到的仓库,因此你的证书反映的是你的全部工作成果,而非单个项目。

装备审计

npx viberuler audit

你的 每美元 tokens 分数说明你燃烧 tokens 的效率。audit 则说明你的装备配置效率。100% 本地,读取你的 Claude Code 转录记录:

viberuler audit: cache economy, context amplification, subagent compression, cold context, ghost tokens, and dead MCP weight

  • Token 经济性 — 缓存命中率,以及 prompt caching 实际为你节省了多少 API 等价美元。
  • 上下文放大 — 你引入的平均每个 token 在后续轮次中被重读的次数。仅在主线程上测量:在短命 subagent 上下文中合并会把这个数字减半,并低估一个 token 在你实际所处线程中的真实成本。(在真实装备上:1088×。)
  • Subagents — 它们的压缩力度:在 subagent 内部 拉入的工作量 vs 交还的摘要。它们并非免费(它们有真实开销),但在 1000× 放大下,让 tokens 远离主线程就是全部关键。
  • 🧊 冷上下文 — 一个会话在你输入一个字之前的成本:系统提示词、工具名称、agent 和技能描述、记忆。每次 subagent 生成都会重新支付这笔成本。(在真实装备上:会话开始时 50.2K tokens,在 3,234 次生成中每次重新支付 33.1K。)
  • 👻 幽灵 token — 输出重写插件承诺为你省下的 token,是实测出来的,而不是承诺出来的。超大结果(>4KB)占所有被接纳内容的 54%;著名的“去重重复读取”技巧只值 2%。
  • 热门工具 — 哪些工具真正在填满你的上下文,按调用次数和 token 数排名。
  • ☠️ 无用负担 — 每次会话都加载、启动进程、注入工具 schema……却零次被调用的 MCP 服务器和插件。

最后一点才是关键。在作者的机器上,它发现两个 MCP 服务器在 10,700+ 次会话中 0 次调用,却烧掉了 76 个进程共 1.5 GB 内存。移除它们后,冷启动上下文中位数从 49.9K 降到 41.1K token——此后每次会话都享受 17.5% 的折扣,也证明了延迟加载工具 schema 并不能让一个未使用的服务器变得免费。

测量胜过猜测,这对一个靠感觉给你打分的工具来说是个尴尬的结论。

上下文浪费——只讲规模和杠杆,绝不声称节省

有一大类工具承诺能把你的 token“最多削减 90%”。它们是真实项目;但没有一个公布这个数字背后的方法论。audit 走的是另一条路:它在你自己的对话记录上,指出上下文去了哪里。

CONTEXT WASTE
  5.7M tok · 2,555 calls   oversized single results          → slice / grep before read
  2.2M tok · 4,068 calls   subagent-returned tokens          → tighter subagent contracts
  1.9M tok · 3,394 calls   whole-file reads never edited     → outline-first / symbol reads

三条规则保证诚实,而且是在输出中强制执行,而不只是写在文档里:

  • 不说“你能省 N%”。反事实无法知晓——一次没有改变任何东西的读取,可能正是告诉你不要改变某事的读取。
  • 不给总计。这些类别在构造上就相互重叠(一次超大读取也可能同时是探索性的),所以把它们相加会重复计算,制造出一个标题数字。
  • audit --compare A..B 把两个窗口并排放——安装优化器,比较前后——并把差值标注为观察,而非因果,因为两个窗口的工作负载不同。没有会话的窗口会显示“数据不足”,而不是打印一个好看的零。

按市场价计算你的构成(audit --market)

筹码换美元的视角,扩展到整个交换过程:你实测的 token 构成,按一组精选的当前模型的标价重新计价——开放权重旗舰(Kimi K3、DeepSeek、GLM、Qwen、Llama、MiniMax)以及闭源层级。价格来自对 OpenRouter 公开目录的一次匿名 GET(此标志为可选网络,类似 --github),本地缓存一天,离线时回退到内置快照——输出会标明是哪个来源应答的。这是算术,不是建议:分词器、质量和缓存机制各不相同,所以表格说的是你的用量在每个计数器上花多少钱,而绝不是你能省多少钱。

同一张表还回答了每美元的最大 AI 性能:当目录带有 Artificial Analysis 智能指数时,每个计数器会显示在你的构成上一个指数点要花多少钱($/pt),排名据此而定,最便宜的戴上 🏆——每美元点数是最初的切法,但一旦构成达到数十亿 token,它在每一行上都会读成 0.00,而 $12.77/pt vs $688.51/pt 在任何规模下都清晰可读(同样的排序,上下颠倒)。没有公布分数的模型会说明这一点并排在列表末尾——未知不等于零。该指数是第三方对模型的基准测试,不是对你的工作负载的;王冠标记的是最便宜的智能,而不是最多的智能。

自托管模型也享有同样的诚实待遇:设置 VIBERULER_LOCAL_RATE=<USD/Mtok>(以及可选的 VIBERULER_LOCAL_MODELS=local,mlx 前缀),即可按你自己的电费 + 硬件成本为网关的本地模型定价,而不是 $0。费率由你计算;viberuler 会应用它并标记为自报。

无需登录即可分享

npx viberuler --share

生成一个卡片 URL,你可以发布到任何地方。图片根据链接中的数据渲染——无需账户、无需提交、不会向数据库写入任何内容——并带有 SELF-REPORTED · UNVERIFIED 品牌标识,且不显示排名。位于 /u/:login 的 GitHub 验证证书仍是唯一带排名的展示面。

你自己的时间

卡片和 audit 还会报告从对话记录时间戳推导出的时间——注意力时间(间隔超过 --idle-gap 的不计入)对比挂钟时间。没有守护进程,没有窗口跟踪,没有任何东西监视你的屏幕。

状态栏

把你的分数放在你自尊心所在的地方——可直接粘贴的片段,适用于 Claude Code、Starship、oh-my-posh、tmux,以及 integrations/statusline/ 中的原始 shell 提示符。一个缓存文件,亚毫秒级读取:

Fable 5 · ⚡3982 Context Goblin · 481.5K tok/$

路线图——欢迎 PR

  • Claude Code 收集器(token、成本、缓存命中去重)
  • Codex 收集器
  • Cursor 收集器(输入侧下限,估算)
  • Gemini CLI 收集器
  • Cline / Roo Code / KiloCode 收集器(一个解析器,三个分支)
  • 多智能体装置——可重复的 --agent-home,外加 CODEX_HOME / CLAUDE_CONFIG_DIR
  • Windsurf / Aider 收集器——good first issue
  • Vibe Wrapped——月度回顾卡片
  • 时间指标——来自对话记录的会话挂钟时间和注意力时间(#21)
  • --share——一个无需登录即可发布的自报卡片 URL(设计上未验证)
  • audit + --compare A..B 中的上下文浪费分类——大小和杠杆,绝不声称节省
  • Codex 计划余量——5 小时 / 每周已用份额和重置时间,从 rate_limits Codex 已记录的日志中读取(无网络),每个 Codex 主目录一行
  • 团队排行榜

想让你的智能体上榜? 一个收集器大约 70 行代码加一个测试:两个方法,这个智能体在这里吗 和 它消耗了什么。CONTRIBUTING.md 会带你走一遍,包括已经坑过我们的两个解析陷阱。草稿 PR 也可以——你不必在提问前完成它。

多智能体装置

如果你的智能体不在你的主目录中,请指向它们——每个额外的根目录都会被搜索,并且挂载相同的日志两次绝不会重复计数:

npx viberuler --agent-home C:\agents\Claude --agent-home C:\agents\codex

CODEX_HOME 和 CLAUDE_CONFIG_DIR 会被自动遵循,所以如果你已经按常规方式迁移了你的智能体,就无需传递任何内容。

多个订阅? 很正常。一个 Claude 计划加上一个 ChatGPT/Codex 计划再加上 Cursor 都会落在同一张卡片上:每个平台都是自己的收集器,而按智能体的图例会分别对每个平台的流量定价——那个美元数字就是那个订阅在 API 等价意义上的价值。同一平台的两个账户(工作 + 个人 Claude)会合并为一行;要拆分它们,请为每个账户运行一次,并将 VIBERULER_AGENT_HOMES 指向单个主目录(详情见 METHODOLOGY)。

技术栈

TypeScript CLI(一个运行时依赖:picocolors)。后端:Cloudflare Worker + D1,OG 图片由 satori 在 worker 内渲染——packages/worker。字体:JetBrains Mono(OFL)。MIT。


你的提示词永远不会离开你的机器。你的分数永远不会离开群聊。

来源:Hacker News · github.com