PR 没被合并,我把 Tauri 版自己做出来了:安装包从 100MB 砍到 33MB

大家好!今天来交一个拖欠了两个月的作业。

先说成果:掘金 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,过程挺有意思:

  1. 先扫目录:把打包产物摊开一看,好家伙,hono 的 TypeScript 类型声明(.d.ts,运行时根本不读)、CJS 重复构建、yaml 的 browser 版本......全被打进去了,先剥掉一层

  2. 再查大头 :内嵌的 node 二进制 110MB,其中 30MB 是全量 ICU 多语言库------一个跑在本机、只处理日期格式的 sidecar,配全套世界语言纯属浪费

  3. 换成 small-icu 的 node (只带英语 locale):但直接换有坑------代码里有 4 处日期格式化用的 en-CA/en-GB locale,小 ICU 下格式会变,日期一变数据分桶就乱了。幸运的是检查后发现这 4 处全都用的 formatToParts 写法(按字段取值再自己拼),天生跟 locale 无关,换完直接过

  4. 最后跑对照实验:同一个日期、同一个时区,官方 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 和费用常驻菜单栏

  • 🔗 掘金登录深链:浏览器登录完自动跳回应用

  • 🔄 自动更新:带签名校验,新版本推送后应用内直接升级

  • ⚙️ 开机自启、静默启动、主题跟随系统、托盘常驻......该有的都有

五、怎么用

  • 下载:github.com/you-want/ju...

  • 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 数据层有兴趣,我攒的这些东西随时可以带回去。

觉得有用的话去 新仓库 点个 star,有问题提 Issues,评论区也可以直接聊。

相关推荐
炫酷的大高个2 小时前
98% 连跑 20 次只剩 67%,我算了大模型重试账
人工智能·架构·开源
IT规划师4 小时前
工业 AI 走向产线规模 - 20+ 伙伴的演示,不如一条 +20% 吞吐
ai编程
分布式存储与RustFS4 小时前
镜像仓库的层别只堆本地盘:用 RustFS 给 Harbor 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
IT古董6 小时前
AI 资讯日报 | 2026年10月25日:Kimi K3.1 Pro开源逼近前沿,OpenAI改离线训练,Claude合并Cowork,神经网络黑箱获新解,具身智能竞技场落幕
人工智能·神经网络·开源
分布式存储与RustFS7 小时前
工作流脚本和依赖 JAR 散在各节点本地盘:用 DolphinScheduler 资源中心接到 RustFS
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
lucas_AI7 小时前
Termination Lag:你的 Coding Agent 早就修好了 Bug,只是它停不下来
agent·ai编程
小虎AI生活16 小时前
反推任意图片的神技能,WorkBuddy和Loomy装上就能用
aigc·ai编程
冬奇Lab16 小时前
一天一个开源项目(第259篇):Modern Web Guidance —— Chrome 团队给 AI 编码 Agent 的「现代 Web 最佳实践」外挂
人工智能·开源
金銀銅鐵16 小时前
带您看懂字节码指令(二):空循环里有什么
java·后端·ai编程
JAVA前线17 小时前
用《实践论》分析前沿部署工程师:AI时代听见炮声的人
架构·ai编程