一个很小但很实用的想法:如果 AI 网关正在忙,桌面上的鱼能不能先告诉我?
项目地址:github.com/wolfvoid/magpie-DaFeiYu
很多桌宠展示的是"AI 在做什么"。但真正每天用多模型、多账号的人,往往还有两个更朴素的问题:现在到底有几个请求在跑?哪个账号在工作?额度还剩多少?
于是我给本地 AI 网关 Magpie 做了一只 macOS 桌宠:magpie-DaFeiYu(蓝色大肥鱼)。

演示图中的账号与额度均为合成数据,角色动画来自 PC2005-cloud/dsh-pet。
一、为什么不是再做一只 Codex 桌宠?
Codex 桌宠通常绑定某个客户端或某个模型,任务是它唯一的信息源。
但 Magpie 更像一个本地模型网关:请求可以来自不同客户端,背后也可能接 DeepSeek、OpenAI、Claude 等多个供应商和多个账号。它天然掌握了更完整的"网关视角"。
所以这个项目的定位很明确:
- Mac 专用:面向 Apple Silicon,使用透明悬浮窗;
- 接入 Magpie:读取本机网关的并发、路由和额度接口;
- 不绑定 Codex,也不需要 DSH:只看经过本机 Magpie 的请求;
- 只读、本地:不调用模型,不读聊天内容,不上传提示词。
换句话说,它不是"AI 任务监视器",而是一个桌面上的 Magpie 状态灯。
二、六个最有用的细节
1. 一个请求,一盏灯
桌面底部有一排小灯泡。进行中的请求会亮灯,空闲时熄灭;多个请求并发时,灯泡会逐个亮起。
这比一行"正在处理"更有信息量:你不用打开面板,也能知道现在是轻负载还是已经排队。
2. 订阅显示百分比,API 显示余额
这是我很在意的一点。
- 订阅账号有周期额度,适合显示剩余百分比;
- DeepSeek 等按量付费的 API,没有"百分比"这个概念,应该直接显示钱包余额。
所以项目把它分成两套读法:subscription → %,balance → 金额。没有余额数据时就显示待刷新,不硬编一个百分比出来。
3. 多账号横排,正在工作的账号高亮
账号额度徽章横向排列在桌宠底部。账号多时可以滚动,不会把主体越挤越高。
正在实际处理请求的账号使用珊瑚红,其他账号保持低饱和蓝色。这样一眼就能看出"当前是谁在扛流量"。
4. 106 段动画,不只是随机待机
项目保留并校验了 106 段透明 WebM 动画:吃饭、玩耍、施法、魔术、放烟花都有。
动画调度也不是简单随机:
- 按动作类别加权;
- 避开最近 15 个动作,降低重复感;
- 工作状态连续播放两段后,穿插一个轻动作;
- 请求成功时只触发一次烟花,避免同一事件反复庆祝;
- 支持手动切换动作和暂停动态。
5. 可以真的贴在屏幕边缘
透明窗口最怕"看起来很小,实际占一个巨大的矩形"。这个项目允许窗口越过屏幕边界,所以可以把桌宠拖到右边、左边,甚至让部分动作自然出画。
想找回它时,可以从菜单栏重新居中。
6. 隐私边界写清楚
它只访问 127.0.0.1:3425 上的 Magpie 本地接口,支持自定义端口。
不会读取 Codex 数据库,不读取聊天内容,不保存账号邮箱或提示词。账号在内存中经过每次启动重新生成的 HMAC 盐处理,只用于把额度卡片和当前路由对应起来。
三、技术实现:状态是怎么变成动作的
请求状态
并发状态每 2 秒读取一次 /v1/magpie/concurrency,核心判断可以简化成:
if (data.requests > data.waiting) {
state = 'thinking'; // 正在处理模型请求
} else if (data.waiting > 0) {
state = 'waiting'; // 请求排队
} else if (data.tools > 0) {
state = 'working'; // 等待客户端工具结果
} else {
state = 'idle';
}
灯泡数量对应进行中的请求数;账号高亮则进一步读取 /v1/magpie/trace,只挑选 phase 为 upstream 且尚未完成的尝试。
额度与余额
额度数据每 30 秒读取一次 /v1/magpie/quotas/cards。订阅卡取 used 并转换成剩余百分比;余额卡只接受带币种的合法金额字符串,避免把异常响应显示成假数字。
动画
素材是 VP9 编码的透明 WebM。应用启动时读取动作目录,AnimationDirector 根据 Magpie 状态、最近播放记录和类别权重选择下一段动画。
窗口本身使用 Electron 的无边框透明窗口,并在 macOS 上隐藏 Dock 图标,只保留菜单栏入口。打包时只保留中英文语言资源,压缩 Electron 自带的冗余文件,但不压缩、不删减动画素材。
四、安装体验
要求:Apple Silicon Mac(M 系列)+ macOS 12 及以上。不支持 Intel Mac、Windows 或 Linux。
- 先启动本机 Magpie;
- 从 Releases 下载 macOS arm64 安装包;
- 解压,把「蓝色大肥鱼.app」拖进「应用程序」;
- 从菜单栏启动。
也可以在 Magpie 中安装页面插件:
magpie plugin add github:wolfvoid/magpie-DaFeiYu
页面插件会在 Magpie 侧边栏提供使用说明,但不会自动安装桌面 App,悬浮窗仍需单独下载。
需要说明的是:App 目前只有本地 ad-hoc 签名,没有 Apple Developer ID 公证。若 macOS 拦截,请先核对下载来源,再到「系统设置 → 隐私与安全性」选择「仍要打开」,不要直接关闭 Gatekeeper。
五、它能知道什么,不能知道什么
能看见:请求数、排队状态、当前路由到的账号、Magpie 能提供的额度和余额。
看不见:改了哪个文件、执行了哪条命令、是否在等你审批、整个任务何时结束。
这不是能力缺失,而是刻意划出的边界。桌宠不是任务追踪器,也不应该假装知道网关之外的事情。
六、开源地址与致谢
项目地址:github.com/wolfvoid/magpie-DaFeiYu
- 角色、106 段动画和动作配置来自 PC2005-cloud/dsh-pet,素材仅限非商业使用,展示和分发须保留来源;
- 本机网关联动基于 yetone/magpie;
- 早期桌宠安装与 Codex 状态联动思路参考了 yifanlu0227/DaFeiYu-codex-pet 和 bianbian-666/Codex-dafeiyu。
新增代码采用 MIT License;角色动画、提示词和源视频不属于 MIT,不能商用。
如果这个项目对你有用,欢迎去 GitHub 点个 Star、提 Issue,或者告诉我你希望它接入哪些新的本地状态。也欢迎把它转给身边正在用 Magpie 的 Mac 用户。