起因
不知道大伙儿有没有 AI 焦虑------就是项目交给 AI 跑了以后,隔一会儿就得切回终端看一眼:它是不是在问我要权限?需求跑完了没有?还是在哪个环节卡住了?
市面上有一些消息提醒工具,能在 AI 需要操作时推送通知到手机或桌面,但似乎还没有人做跟硬件联动 的方案。我的想法很简单:在桌面上放一盏小灯,AI 的状态直接映射成灯效,扫一眼就知道它在干什么。


它能做什么
核心思路是把 AI 编程助手的实时状态映射到桌面 LED 灯效:
| AI 状态 | 灯效 | 含义 |
|---|---|---|
| 思考/执行中 | 黄色跑马灯旋转 | AI 正在工作中 |
| 需要授权 | 红灯常亮 | AI 在问你要权限,赶紧去看看 |
| 任务完成 | 绿灯常亮 | 活儿干完了 |
| 空闲待机 | 蓝灯呼吸 | 闲着,等你发指令 |
| 出错 | 红灯慢闪 | 挂了,去看看 |
实现方式是在 OpenCode 的插件钩子中捕获事件(AI 输出、工具执行、权限请求、任务完成等),然后通过 MQTT 消息推送到 ESP32,ESP32 根据收到的状态切换灯效。
具体来说,插件监听了以下 OpenCode 事件:
message.part.delta--- AI 正在输出内容,触发「思考中」黄灯tool.execute.before/after--- AI 在执行工具(读写文件、运行命令等),同样黄灯permission.asked--- AI 需要用户授权,切换红灯常亮,提醒你赶紧去处理session.idle--- 会话空闲,说明活干完了,切绿灯session.error--- 出错了,红灯闪烁

还有一个比较实用的特性------多项目协调。如果你同时开了好几个项目在跑 AI,插件会自动取优先级最高的状态来显示。比如项目 A 在思考(黄灯),项目 B 突然需要授权(红灯),灯会自动切到红灯,因为「需要授权」优先级更高。优先级规则:
error(10) > auth_required(8) > thinking(5) > done(3) > idle(0)
架构
支持两种模式:
本地模式(默认):插件内嵌了一个 MQTT Broker,ESP32 和电脑在同一局域网就能通信,零配置。
你的电脑(OpenCode + 插件)→ 内嵌 MQTT Broker → WiFi 局域网 → ESP32 + LED
远程模式:如果你有公网服务器,可以部署 Mosquitto Broker,ESP32 通过互联网连接,不受局域网限制。
你的电脑 → 远程 MQTT Broker(公网)→ 互联网 → ESP32 + LED

成本:约 15 块钱
是的,只要十五块。物料清单:
| 部件 | 型号 | 参考价格 |
|---|---|---|
| 主控 | ESP32-C3 Super Mini | ~¥8 |
| LED | WS2812B 灯带(60颗/米) | ~¥5/米(只需截 3 颗) |
| USB-C 数据线 | ~¥2 | |
| 合计 | ~¥15 |
接线也非常简单,三根线:
ESP32-C3 WS2812B 灯带(3颗)
GPIO 8 → DIN(数据输入)
5V → VCC
GND → GND
如果你手上有 ESP8266,也支持,用 PWM 方式驱动三色 LED。
烧录 & 配网
提供了三种烧录方式,按需选择:
- Web 烧录器(最省事) --- Chrome/Edge 浏览器直接烧录,零安装,插上 USB 就能刷
- arduino-cli 命令行 --- 适合批量部署
- Arduino IDE --- 经典方式,不多解释
配网也很方便:ESP32 首次启动会开一个 WiFi 热点,手机连上去打开浏览器,填入你家 WiFi 密码就行,不用把配置写死在代码里。


3D 外壳
3D 建模我也是门外汉,外壳模型来自拓竹 MakerWorld 上 Leroyd 的作品,打印出来效果不错,刚好能塞进 ESP32-C3 和灯带。
安装
两条命令搞定:
Linux / macOS:
bash
git clone https://github.com/mydubai7794/opencode-led.git
cd opencode-led && bash install.sh
Windows:
cmd
git clone https://github.com/mydubai7794/opencode-led.git
cd opencode-led && install.bat
重启 OpenCode 就能看到蓝灯呼吸了。
最后
这个项目的出发点很小------就是想少切几次终端窗口,用一盏灯来告诉自己 AI 在干什么。但做下来发现还挺实用的,尤其是红灯亮起来的时候,真的能做到「不打断工作流但又不漏掉权限请求」。
项目完全开源,欢迎各位佬友试试,有建议或者想加功能欢迎提 Issue / PR。