ESP8266 · 开源硬件 · 桌面伴侣

桌上的一台
AI 状态小电脑

一枚可以捧在手心的复古麦金塔小屏幕,实时显示 Claude Code 与 Codex CLI 的工作状态、真实额度、网速和正在播放的音乐 —— 不需要任何官方账单 API key,数据全部来自你本机。

无需 API key ◷ 每 15 秒刷新 240×240 ST7789 彩屏 桌宠可换 · 板上解码
ai-clock.app
手心里的 AI Mac 小屏幕,屏幕上显示戴耳机的像素桌宠和 5h / 周额度百分比
握在手里,只有一颗骰子大小▲ 5h 27% · Weekly 3%
主控
ESP8266EX ESP-12S · 4MB
显示
1.54″ 彩屏 240×240 ST7789
连接
Wi-Fi 局域网轮询桥接
授权
开源 硬件 + 固件 + Mac app

它能显示什么

一眼看清你的 AI 在忙什么

全屏单应用视图,谁在干活就显示谁。像素桌宠 + 一圈方形额度环,工作时动起来、空闲时静止。

status
屏幕显示戴蓝色耳机的像素桌宠、顶部绿色额度进度条,下方 5h 24% / Weekly 3%
实时状态

AI 工作状态与额度

working / idle / offline 一目了然。方形进度环 = 5h 与周窗口的真实用量百分比,颜色像红绿灯一样从绿到黄到红。

net
任务管理器风格的网速曲线页,DOWN 53K/s、UP 1.2M/s,绿色面积图
网速曲线

实时网速监视器

任务管理器风格的滚动面积图,56 秒窗口、逐行写屏完全无闪烁。上下行读数取 1 秒平均,数据来自 Mac 内核网卡计数。

petdex
屏幕显示一只黄色小河马桌宠,左上角 Codex 图标,下方 5h 1% / Weekly 22%
桌宠可换

3300+ 开源桌宠随便换

内置 petdex.dev 画廊,搜索选一个动画,一键上传。设备自己在板上解码缩放,重启也记得,不用重新烧录。

now-playing
小屏幕显示万能青年旅店《杀死那个石家庄人》的专辑封面、歌名、歌手与播放进度条 0:23 / 5:44
音乐播放页

正在播放,一屏尽览

切到音乐模式,小屏幕就变成一块 Now Playing 显示器:专辑封面、歌名、歌手和播放进度条实时同步 Mac 上正在放的歌。封面是 128×128 逐行绘制,进度每 2 秒刷新。

♪ 专辑封面歌名 · 歌手0:23 / 5:44
🖥️

实时镜像

Mac 菜单栏左键弹出与设备完全同步的画面,不看设备也能确认。

🔴

红绿灯信号

桥接掉线或数据过期时红色闪烁,提醒你马上看一眼。

🔌

零配置配对

设备本来就在轮询本机,Mac 端记下来访 IP 即完成发现。

工作原理

两块拼图:Mac 菜单栏 app + ESP8266 固件

Mac app 读本地会话日志、开一个局域网 HTTP 服务;小屏幕联网后每 15 秒轮询它,把状态画到屏上。

working — device + mac mirror
手持小屏幕显示 working 状态:绿色进度环填满、桌宠在跑,背景 Mac 屏幕上是菜单栏 app 弹出的同款实时镜像画面
WORKING AI 正在干活时,方形进度环填满亮绿、桌宠动起来 —— 背景 Mac 上就是菜单栏 app 弹出的实时镜像,与设备画面逐帧同步(5h 42% · Weekly 5%)。
来源 · 你的电脑

本地会话日志 + 官方用量接口

~/.claude / ~/.codex 会话记录判断忙闲,复用两个 CLI 已有的 OAuth 凭据取真实额度。

▼  localhost:8765  ▼
桥接 · Swift 菜单栏 app

合并数据,开局域网 HTTP 服务

菜单栏一颗复古小电脑图标,左键弹出实时镜像、右键遥控设备(切换显示 / 换桌宠 / USB 刷写)。

▼  Wi-Fi 每 15s 轮询  ▼
显示 · ESP8266 小屏幕

把时间 + 状态画到彩屏

桌宠动画的上传、解码、缩放全部在板子上完成,换形象不再需要电脑参与。

  • 不需要任何账单 API key数据来自本机日志和两个 CLI 已经存在的登录凭据,token 只发给各自官方 API。
  • 真实额度,不是估算5h / 周窗口的已用百分比 + 重置倒计时,app 每 2 分钟拉一次官方用量接口。
  • 毫秒级状态切换接收两个 CLI 官方 hooks 的事件推送,从"最多迟滞 20 秒"变成秒级响应。
  • 掉线自愈设备 DHCP 换了 IP 也能重新发现;桥接连不上时屏幕红色闪烁报警。
🔒 隐私优先:所有数据都在你的局域网内流转。HTTP 服务只下发状态和 token 计数,不含任何 API key;建议只在家庭可信网络下运行。

动手做一台

刷机教程 · 从买板子到点亮

整套流程约 20 分钟。你需要一台 Mac、一根数据线,和一块下面这款成品板。命令都可以直接复制。

1

准备硬件

直接买拼多多上的成品板「WiFi 天气时钟 MG01」即可 —— 它本质就是立创开源广场 「SD2 / 小电视」开源方案的量产版。 已确认硬件:ESP8266EX(ESP-12S 模组)/ 4MB flash / CH340C 转串口。到手插上 USB 数据线就能刷。

白色骰子外壳是社区 3D 打印件,可选。核心就是那块 240×240 的小彩屏板。

2

接线是固定的 —— 无需自己焊

这款成品板接线厂家已一体成型,无法重接。你不用动烙铁,这张表只是告诉固件屏幕接在哪。 固件的 platformio.ini 已经按这个组合配置好,直接用就行。

屏幕引脚说明ESP-12SGPIO
SCLKSPI 时钟D5GPIO14 硬件 SPI
MOSISPI 数据D7GPIO13 硬件 SPI
CS片选D8GPIO15
DC数据/命令选择D3GPIO0
RESET复位D4GPIO2
背光LED 背光(低电平点亮,PWM 调光)D1GPIO5
VCC / GND电源 / 地3V3 / GND

踩坑提示:网上几份"看起来像"的教程接线图实测都是错的;驱动必须用 TFT_eSPI 的 ST7789_2_DRIVER 变体,普通 ST7789_DRIVER 配正确引脚依然点不亮。仓库配置已踩平这些坑。

3

拉代码 · 装 PlatformIO

克隆固件仓库,用 Python 建一个虚拟环境装 PlatformIO(Mac 自带 python3)。

bash · 环境准备
# 克隆仓库
git clone https://github.com/pengchujin/esp8266-ai.git
cd esp8266-ai/firmware

# 建虚拟环境并安装 PlatformIO
python3 -m venv .pio-venv && source .pio-venv/bin/activate
pip install platformio
4

编译并烧录固件

用 USB 线把板子连上 Mac,然后一条命令编译 + 上传。CH340C 驱动 macOS 通常免装。

bash · 烧录
pio run -t upload
# 已验证:编译成功,Flash 45.7%,RAM 39.7%,约 1 分钟

找不到串口?插上后运行 ls /dev/cu.usbserial* 确认设备节点(本机为 /dev/cu.usbserial-130)。也可以在 Mac app 里点「刷写固件(USB)…」自动探测串口并烧录。

5

首次开机 · 手机配网

上电后屏幕点亮,第一次会开一个热点 AI-Clock-Setup。手机连上后自动弹出配置页 (或手动访问 192.168.4.1):选你的 Wi-Fi,并在 Bridge host 里填运行 Mac app 那台电脑的局域网 IP,例如 192.168.1.23:8765。保存后设备记住配置,下次开机自动连线。

串口日志 · pio device monitor -b 115200
[wifi] starting WiFiManager autoConnect...
*wm:StartAP with SSID:  AI-Clock-Setup
*wm:AP IP address: 192.168.4.1
6

跑起 Mac 菜单栏 app

最后启动桥接 app,菜单栏会出现一颗复古小电脑图标。它会自动发现设备并开始下发状态 —— 几秒后小屏幕上就会出现你的 AI 桌宠和额度环。搞定 🎉

bash · 启动桥接
cd ../mac-app
swift run   # 前台运行;左键点图标看实时镜像,右键遥控设备

验证服务正常:curl -s http://localhost:8765/status 应返回 claude / codex 的状态 JSON。想开机自启可打包成 LaunchAgent(详见仓库 README)。

完全开源

硬件、固件、Mac app 全部公开

拿去改、拿去做、拿去卖都行。喜欢的话给个 Star ⭐

⚙️

硬件开源方案

立创开源广场「SD2 / 小电视」原理图与 PCB。想自己打板、改外壳、批量做都从这里开始。

oshwhub.com/q21182889/sd2
查看硬件工程 →
💻

软件开源仓库

ESP8266 固件(PlatformIO + Arduino,含板上 GIF 解码)与 Swift 菜单栏 app 的完整源码与文档。

github.com/pengchujin/esp8266-ai
在 GitHub 打开 →