peterroe / magpie-usage-display
git clone https://github.com/peterroe/magpie-usage-display.git
ESP32 display that shows you your magpie usage
+59
stars, 24h · #138
+59
stars, 7 days · #811
+59
stars, 30 days · #4,481
59
★ total · +59% this week
8
forks · 1 open issues
Star history starts 2026-10-20; the chart appears after the second daily snapshot.
LanguageC
LicenseMIT
Created2026-10-19 (1d ago)
Last push1d ago
Watchers0
OwnerUser
Links
README excerpt
# Magpie Usage Display 简体中文 | English 将本机 Magpie 网关的用量和运行状态显示在一块 480 × 480 AMOLED 开发板上。 macOS Companion 从 Magpie 本地 HTTP API 读取数据,再通过加密 BLE 发送给 ESP32-S3。开发板不保存 API Key、账户凭据或请求内容。 > 本项目是社区项目,并非 Magpie 官方产品。它基于 > jayyao97/codex-usage-display > 改造。 ## 实拍 Overview Requests Sessions Context ## 功能 - Magpie 官方 Logo 和网关连接状态 - 四个可左右滑动的页面: - **Overview**:今日成功率、调用数、错误数、最低剩余额度 - **Requests**:最近模型、状态、耗时、平均 TTFT、今日 Token - **Sessions**:30 天会话数、总 Token、估算费用、最常用模型 - **Context**:缓存命中率及 Input / Output / Cache / Reasoning 构成 - 15 秒刷新数据,60 秒未收到数据时显示 `STALE` - 60 秒无触摸或按键操作后自动熄屏 - 触摸或 BOOT 键唤醒屏幕 - BLE Secure Connections、六位配对码和自动重连 - 设备快捷操作:聚焦 Magpie、立即刷新 Context 页面只展示 Magpie 公共网关 API 能提供的真实统计,不复制 macOS App 内部尚未公开的 Context 评分。 ## 硬件与系统要求 - Waveshare ESP32-S3-Touch-AMOLED-2.16 - 支持数据传输的 USB-C 线 - macOS - Python 3.9+;构建 ESP32 固件推荐 Python 3.11 - 已安装并正在运行的 Magpie - PlatformIO 目前只验证了上述开发板和 macOS。 ## 工作原理 [code] 默认只访问本机 `http://127.0.0.1:3425`。可通过 `MAGPIE_URL` 环境变量或 `--magpie-url` 参数覆盖。 ## 1. 获取代码 [code] ## 2. 准备 PlatformIO 推荐在项目目录创建独立 Python 环境: [code] 确认使用的是项目环境: [code] `which pio` 应优先显示项目中的 `.pio-venv/bin/pio`。 ## 3. 编译固件 [code] 成功后固件位于: [code] ## 4. 连接并烧录开发板 用 USB-C 数据线连接开发板,查看串口: [code] 找到类似 `/dev/cu.usbmodem11201` 的端口,然后上传: [code] 请将端口替换为你的实际设备。 如果找不到端口或无法连接: 1. 拔下 USB-C。 2. 按住开发板左侧 `BOOT`。 3. 保持按住并重新插入 USB-C。 4. 等待约 2 秒后松开。 5. 重新运行 `ls /dev/cu.*` 和上传命令。 烧录成功后设备会自动重启,未连接 Companion 时显示 `OFFLINE`。 ## 5. 验证 Magpie 数据 确保 Magpie 正在运行,然后执行: [code] 成功时会输出一行 BLE v4 JSON 快照。该命令只读取数据,不连接蓝牙。 ## 6. 启动 Companion [code] 首次运行会自动创建 `companion/.venv` 并安装 `bleak`。macOS 询问蓝牙权限时 请选择允许。 ### 首次配对 只有尚未绑定的设备才会显示六位验证码: 1. 开发板显示六位数字。 2. 在 macOS 蓝牙配对框中输入相同数字。 3. 收到第一包数据后状态变为 `ONLINE`。 后续连接会复用绑定密钥,不再要求输入验证码。 需要换电脑或重新配对时,在设备正常运行状态下长按左侧 `BOOT` 约 3 秒。看到 `PAIRING CLEARED` 后设备会重启。不要在上电时按住 BOOT,否则会进入下载模式。 ## 7. 后台自动运行 先完成一次手动配对,再停止手动运行的 Companion: [code] 卸载: [code] 日志位于: [code] LaunchAgent 进程可能需要在“系统设置 → 隐私与安全性 → 蓝牙”中单独授权。 ## 操作 面对屏幕、三个实体键位于顶部时: | 位置 | 按键 | 行为 | |---|---|---| | 左 | BOOT / GPIO0 | 短按切换屏幕;运行时长按 3 秒清除 BLE 绑定 | | 中 | PWR / AXP2101 | 长按 6 秒关闭主电源 | | 右 | IO18 / Focus | 短按切换数据页面;长按 1 秒打开快捷操作 | - 左右滑动:切换四个数据页面 - 也可以按右侧 Focus 键逐页循环切换,不用手指滑动 - 屏幕熄灭时按 Focus 键只会唤醒屏幕,再按一次才切换页面 - 触摸熄灭的屏幕:仅唤醒,不触发页面操作 - 60 秒无操作:自动熄屏;BLE 数据仍在后台更新 ## 常见问题 ### 没有 `/dev/cu.usbmodem...` - 确认 USB-C 线支持数据传输 - 直接连接 Mac,避免先经过扩展坞 - 换一个 USB 接口 - 按照上面的 BOOT 下载模式步骤重试 ### 屏幕显示 `OFFLINE` 确认 Companion 正在运行: [code] ### 屏幕显示 `STALE` 检查 Magpie 和本地 API: [code] ### 查看设备日志 [code] 按 `Control-C` 退出。烧录前需要先关闭串口监视器。 ## 开发与测试 [code] BLE v4 协议见 docs/BLE_PROTOCOL.md。 ## 安全与隐私 - ESP32 不保存 Magpie 凭据、请求正文或会话内容 - BLE 状态与命令特征要求加密访问 - 设备只允许 `focus_magpie` 和 `refresh` 两个语义操作 - 不接受任意 shell 命令或 prompt 安全问题请参阅 SECURITY.md。 ## 限制 - Companion 当前仅支持 macOS - 只验证了 Waveshare ESP32-S3-Touch-AMOLED-2.16 - 固件没有 OTA,升级需要 USB 烧录 - Context 页面使用公共 API 聚合数据,不包含 Magpie App 内部评分 ## 许可证与商标 代码使用 MIT License。原项目版权和第三方字体声明保留在 THIRD_PARTY_NOTICES.md。 Magpie 名称和 Logo 属于其各自权利人。本项目对 Logo 的使用仅用于标识与 Magpie 的兼容性,不表示官方背书。