‹ 返回笔记 · Back to notes

现场手记

顺手做了两个小工具:AI 余额面板 + 任务面板

Two Small Tools I Built on the Side: An AI Quota Dashboard + a Task Board

一个解决我搞不清 AI 工具钱花到哪、还剩多少;一个解决我不知道家里定时任务今天跑没跑。核心都是把散落各处的状态收到一处。

个人工具AI 工作台SwiftBarÜbersichtTauripublic-safe

顺手做的小工具

最近顺手做了两个小工具:AI 余额面板和任务面板。前者解决我搞不清几个 AI 工具钱花到哪、还剩多少;后者解决我不知道家里那堆定时任务今天跑没跑。核心动作都一样——把散落各处的状态收到一处。

任务面板:每天那些定时任务到底跑没跑

我机器上跑了一堆 LaunchAgent(macOS 的开机后台服务)——OpenClaw 的纪嫣然、Studio 几个 agent、Claudio(我那个 AI 电台),加起来十几个定时任务,每天按时间表自己醒来执行。想看哪个成了、哪个挂了,以前得开终端 launchctl list、翻几个日志文件、再用脑子拼一遍。懒得看就默认没事——但出事时才发现,有的任务已经五天没跑。

索性做个看板。两条要求:永远挂在桌面,不用主动打开;颗粒度要够细——苏晚一天 3 个任务,就显示 3 行,而不是并成「苏晚 · 正常」这种含糊状态。

做出来是这样的:

任务面板桌面挂件特写:标题「AI 工作站」,顶部统计 4 完成 6 运行 1 失败 3 待,下面按 agent 分组列出各定时任务及其当前状态
右上角常驻的任务面板桌面挂件——纪嫣然 / Studio / 苏晚 / 沈知行 / Claudio / Cici 各自分组,每个任务一行带状态圆点。

怎么做的

两个前端共用一份数据。SwiftBar(macOS 菜单栏小工具框架)给屏幕顶部最简版——只显示最紧张那条,点开看全部;Übersicht(macOS 桌面挂件框架)就是上图常驻桌面右上的卡片。两者读同一个 state.json,避免数字对不上。

数据分两路进来。一路 LaunchAgent 每 30 秒扫一遍:读 launchctl list 拿到最近退出码和 PID,再跟 expected-tasks.json 对账,知道「今天该有哪些任务」,结果写进 state.json。另一路是 Claude Code 的 hook——每次 Cici 会话结束自动往看板「Cici」那行写当前任务,这样看板显示的就不只是「活跃 / 结束」,而是我此刻在做什么。

UI 用 macOS 系统色板的彩色圆点(绿 / 蓝 / 红 / 黄)、SF Pro 字体和真 vibrancy 毛玻璃。中间出过一版 emoji,我看着烦,全换成圆点后清爽多了。

余额面板:4 个 AI 工具 4 个地方查余额

我每天用的 AI 工具:Codex(OpenAI 的 CLI agent,按 ChatGPT Plus 订阅算,5 小时窗口)、Claude Code(按 Claude 订阅算)、Kimi(按订阅),再加几个备用中转站 API key。查余额的方式个个不同:Codex 在终端敲 /status;Claude 也在自己终端 /status;Kimi 得开网页后台;中转站又要登另一个网页。

Pro/Max 订阅还有个隐形痛点:你不知道当前这 5 小时或 7 天窗口还剩多少、几点重置。写到一半被限流,很难受。

索性做一个跨平台菜单栏小工具,把这些全汇到一处。形态参考托盘:常驻屏幕顶部,一眼看到最紧张那项(比如「Codex 5h 90%」),点开浮窗列出所有 provider 的剩余%、重置倒计时和余额。任一指标低于阈值就弹系统通知。

怎么做的

技术栈用 Tauri v2(Rust 核心 + WebView 前端的桌面 app 框架):一份代码同时出 macOS 和 Windows,包体只有几 MB。数据源按 provider 分四类:

  • Codex(订阅,可靠度最高)——直接读本地 ~/.codex/sessions/ 下的 jsonl 累加 token 用量,跟 codex /status 输出能对上。
  • Claude(订阅)——一边走 OAuth 拿官方实时窗口剩余%,一边读本地 ~/.claude/projects/ 下的 jsonl 算成本(参考 ccusage 那一类工具的算法)。
  • 中转站(API key)——调对应站点的 /dashboard/billing/subscription/api/user/self 拿精确余额(USD/CNY)。
  • Kimi / OpenAI 官方 / MiniMax 这些没公开余额接口的——只能降级显示登录态和套餐到期。

隐私边界很硬:凭证只在本地读取,只发往对应官方接口,不收集任何数据,开源可审计。不做长期用量存储、不做账号体系、不代理 AI 请求——只读余额。

工程上还在 dev 阶段:spec 写完了,数据源验证过能拿到,UI 骨架也有了,但 Tauri release build 还没出来。接下来一两天的事。

两个工具做的是同一件事:把分散在 4–5 个终端命令、网页和日志文件里的信息,收到一个常驻可见的地方。普通人也用得上——不止工程师。手机上早有「天气」「电池」「日历」挂件,却从来没有「AI 工具今天用了多少」「家里自动化任务跑成了吗」的挂件。那就自己做一个。

任务面板已经在桌面跑了两个星期,过得去。AI 余额面板这周把 Tauri release 做出来——下一篇文章应该能上真截图。

把这篇记录接到下一步

读完以后,可以继续追问这篇文章,也可以回到策展目录,或通过标签追同一条线索。

追问这篇 回到目录 浏览标签