大家好!今天来交一个拖欠了两个月的作业。
先说成果:掘金 AI 用量统计的 Tauri 版 ,独立维护,刚发了几版,macOS 安装包 33MB,功能对齐官方 Electron 版------订阅额度、桌面宠物、菜单栏用量这些都有。

这事儿要从一封没被合并的 PR 说起。
一、起因:PR #138
用掘金 AI 用量统计的兄弟们都知道,这工具是真的香------Claude Code、Codex、Cursor 这些 AI 工具烧了多少 Token,本地全记着,还能上排行榜看谁用得最凶(谁加班最多)。
唯一的"但是":官方桌面端是 Electron 的。我自己平时写 Rust,属于"看到 100MB 安装包就想手痒"的那种人,于是 9 月份我给官方提了个 PR:feat: add Tauri desktop app。
结果呢?没合并。

先说清楚:官方的决定我也理解,后续维护会有成本,技术栈不同。 桌面端是多端共享的产品,为了一个社区贡献再养一套 UI 框架,构建、测试、维护全是双倍成本,谁接谁头疼。换成我是维护者,我大概率也是先说 "谢谢,再看看"。
但 Tauri 版做都做了。怎么办?自己养呗。没事抽时间养养,最近迷恋 Rust... 也有可能遇到坑,填不动...全当玩就行了,感兴趣的可以一起过来玩。
二、这个项目最讨巧的地方:数据层一根手指都没碰
做桌面版之前我想明白了一件事:这个项目最难的 80% 不是窗口和按钮,是数据层------三十多个 AI 工具,每家的用量数据藏的位置和格式都不一样,官方光是解析器就维护了一大堆,还隔三差五因为工具更新跟着修。
这种东西我重写一遍?疯了吧。
所以我的架构就一句话:官方 core 原样包进来当引擎,Tauri 只做壳。

这么干的好处立竿见影:官方这段时间新增了 6 个数据源(Deveco、TeleAgent、WPS Comate......),我这边合并一下上游,一个解析器都没写,功能自动跟上。官方修 bug,我白嫖修复。这买卖太划算了。
代价也要诚实说:为了跑官方 core(它是 Node 的),我的安装包里内嵌了一个 Node 运行时。所以我的 Rust 壳其实只有 10MB,剩下的大头是 Node。
三、体积这口饭是怎么一口口咽下去的
初始版本 44MB。这次 v0.3.0 磨到了 33MB,过程挺有意思:
-
先扫目录:把打包产物摊开一看,好家伙,hono 的 TypeScript 类型声明(.d.ts,运行时根本不读)、CJS 重复构建、yaml 的 browser 版本......全被打进去了,先剥掉一层
-
再查大头 :内嵌的 node 二进制 110MB,其中 30MB 是全量 ICU 多语言库------一个跑在本机、只处理日期格式的 sidecar,配全套世界语言纯属浪费
-
换成 small-icu 的 node (只带英语 locale):但直接换有坑------代码里有 4 处日期格式化用的
en-CA/en-GBlocale,小 ICU 下格式会变,日期一变数据分桶就乱了。幸运的是检查后发现这 4 处全都用的formatToParts写法(按字段取值再自己拼),天生跟 locale 无关,换完直接过 -
最后跑对照实验:同一个日期、同一个时区,官方 node 和 small-icu node 输出逐字节一致;再跑 516 个测试用例,两边结果一模一样。稳了。

现在的体积构成:Node 运行时 81MB(压缩后大头)、Rust 壳 10MB、其余是官方 core 和面板。官方 Electron 版安装包一般 100MB 起步------我们大概是三分之一。
剩余的路线也排好了:下一步用 Rust 重写本地 API 和存储层(0.4.x),再逐步把解析器迁过去,全 Rust 化的时候就是 1.0,到时候安装包目标 15MB 以内。
四、现在都有什么功能
-
📊 完整面板:跟官方同一套 dashboard(数据层是同一个包,所见即所得)
-
💳 订阅额度卡:Claude / Codex / Cursor / Grok / Kimi / Qoder 等 12 个渠道的剩余额度,直接在面板看
-
🐱 桌面宠物:三只内置 + 社区宠物目录在线下载,会跑会跳,同步完还会冒气泡报 Token 增量
-
📈 macOS 菜单栏实时用量:今日 Token 和费用常驻菜单栏
-
🔗 掘金登录深链:浏览器登录完自动跳回应用
-
🔄 自动更新:带签名校验,新版本推送后应用内直接升级
-
⚙️ 开机自启、静默启动、主题跟随系统、托盘常驻......该有的都有



五、怎么用
-
macOS:下载对应芯片的
.dmg,拖进应用程序。首次打开会被拦一下(没买苹果的签名服务,$99/年,社区版先不花这个钱),终端跑一句就能放行, 或者系统设置里边打开就行:
bash
sudo xattr -dr com.apple.quarantine /Applications/Juejin\ Usage.app
-
Windows:下载
-setup.exe,SmartScreen 弹窗点"更多信息 → 仍要运行" -
数据和官方版完全互通(同一套数据目录、同一套云同步协议),换着用无缝
六、写在最后
再次感谢 juejin-cn/juejin-usage 的维护者们------@ATQQ 和各位贡献者。数据底座是人家一砖一瓦垒起来的,我这个项目本质上就是"在别人打好地基的楼上盖了个 Rust 装修",每次合并上游都在白嫖人家的劳动成果,心里是很感激的。
两个项目是互补关系:官方 Electron 版继续深耕,Tauri 社区版服务喜欢轻量客户端的同学,并且长期跟进上游。以后如果官方对 Rust 数据层有兴趣,我攒的这些东西随时可以带回去。