返回全部手记
制作记录7 分钟

星律 Astralyn:给 AstrBot 写一张桌面用量卡片

原本只想随时看一眼 AstrBot 的 Token、消息趋势和模型占比,最后做成了一张带角色背景、双热力图和自适应配色的 Windows 桌面小工具。

Astralyn Windows 桌面用量卡片封面

7 月 14 日,我想给 AstrBot 做个桌面用量显示。最近用了多少 Token、一天里什么时候消息最多、常用哪些模型,我经常想看;每次都得打开浏览器,进 Dashboard,再翻统计页,有点麻烦。

一张小卡片就够了,放在 Windows 桌面上,抬眼能看到最近的运行情况,不需要塞太多操作。后来我给它起名叫星律,Astralyn。

把 30 天的数据压进 448 × 250

窗口只有 448 × 250 像素,每 60 秒读取一次 AstrBot Dashboard API。近 30 天的数据放在同一张卡片上:

  • 30 天总 Token,以及当天的 Token;
  • 输入与输出 Token 的比例;
  • 总调用次数、累计消息和持续观测时间;
  • Token 与消息各自的 30 天热力图;
  • 使用量最高的三个模型及占比。

卡片能随意拖动,也能置顶。右键菜单只留了立即刷新、修改连接、切换置顶和关闭,用起来不用惦记太多。

SEMANTIC MODULE / DATA-PIPELINEV1

从 AstrBot 到桌面卡片

  1. 01AstrBot Dashboard API
  2. 0230 天聚合
  3. 03背景与色板分析
  4. 04Windows 桌面卡片

我不想让它看起来像监控面板

数据得准,但我也不想在桌面上摆一个灰色表格。我选了 Mumei 的图片做背景,把统计信息排在画面上,右上角还放了一句 “Always Keep Singing!”。

居中裁切很容易让数字挡住人物。处理脚本先用 isnet-anime 找主体,再用 Haar 人脸检测确认位置,把脸移到卡片预留的空白区。画面从整张原图连续裁出,没有把人物抠下来重新贴回去,边缘和光线也就能保持连贯。

脚本会从裁好的画面提取色板,再分别检查标题、Token、热力图、消息和模型区域的亮度,选择看得清的文字颜色。考虑到 Windows 缩放时会发糊,我还生成了 896 × 500 的 2x 资源,用 Lanczos 缩放,再做一点锐化。

连接、凭据和异常处理

连接 AstrBot 要用 Dashboard JWT 和自动续期密码,我不想把它们明文写进配置。这里用了 Windows DPAPI 加密,只能由当前 Windows 用户解密。保存配置时先写临时文件,再替换原文件,免得程序中断后只剩半截 JSON。

登录过期就尝试用保存的凭据重连;消息接口暂时失败,也不耽误 Token 更新。日志限制了大小并定期轮换,数字格式、30 天聚合、模型排序、高 DPI 背景和图像变换都补了测试。我希望它能一直放在桌面上,不用隔几天就去照看一次。

为什么叫“星律”

热力图让我想到了“星律”这个名字。原本一直往上加的数字,变成了有明暗、有间隔的格子;每天的消息像亮起来的星,模型调用又各有各的节奏。

把机器运行留下的噪声,整理成一段可以被看见的节律。

7 月 14 日 22:59,我把最终版本打包成 AstrBotUsage.exe,大约 62 MB。最初只是想少打开几次浏览器,做着做着,背景、排版、数据处理和安全存储都花了不少心思。

Astralyn 最初就是这样一张 AstrBot 桌面用量卡片。后来做网站时,我又想起了它的名字和这套视觉。