Traffic Light:Claude 红绿灯 - 666News

🚦 Traffic Light:Claude 红绿灯

用一个淘宝红绿灯玩具,把 Claude Code 的运行状态搬到桌面上。把屏幕里的「正在工作 / 等你确认 / 空闲」变成桌面上一盏真实亮起的红绿灯。

特点

  • 物理状态提示:绿灯慢闪代表正在干活、红灯快闪代表在等你授权或选择、黄灯常亮代表空闲、会话结束全部熄灭,不用一直盯着终端。
  • 零依赖:电脑端脚本只用 Python 标准库,不需要 pip 装任何第三方包,git clone 下来就能跑。
  • 完整硬件教程:README 附带开发板和红绿灯玩具的淘宝购买链接、引脚接线表,以及从面包板测试到焊接、穿线、固定的十步图文过程。
  • 事件精准映射:细分到 PermissionRequest、AskUserQuestion、Elicitation、Stop 等具体 hook 事件,而不是笼统的「开始 / 结束」两态。
  • 优雅降级:没接硬件或串口被占用时,桥接脚本始终静默返回成功,绝不阻塞 Claude Code 本身的运行。

⚙️ 机制

整套系统是一条从软件事件到实体灯光的单向链路:Claude Code 触发 Hooks,调用本地 Python 脚本;脚本通过 Unix 域套接字把状态发给一个常驻守护进程,由它独占 USB 串口;守护进程再以 115200 波特率把 working / waiting / idle / off 这类文本命令写给 ESP32-C3。

固件收到命令后驱动红、黄、绿三颗 LED。守护进程用 flock 文件锁保证单实例,套接字权限设为 0600,避免多个 Claude Code 会话争抢同一个串口。

主要依赖:电脑端是纯 Python 标准库(socket、termios、fcntl),固件是 Arduino / C++,硬件是 ESP32-C3 SuperMini 加三颗串了 220Ω 电阻的 LED,采用共阳极接法(GPIO 输出 LOW 点亮)。代码体量很小但工程细节到位:单实例锁、串口自动重连、硬件缺席时的降级处理都考虑到了,installclaudehooks.py 还会先备份再合并 ~/.claude/settings.json,不会覆盖用户已有的 hook 配置。

👨🏻‍💻 使用场景

  • 挂机跑长任务:让 Claude Code 后台执行耗时的 agent 任务时,不必反复切回终端,绿灯闪就是在干活,红灯闪才需要回来授权。
  • 一心多用:一边开会或处理别的事,余光瞥见红灯亮起再回来确认,避免任务卡在权限弹窗上空等半天。
  • 硬件入门练手:想上手 ESP32 和焊接的新手,这是一个目标明确、成本低于百元的第一个项目,从选料到烧录都有现成文档。
  • 桌面仪式感:给命令行工作流加一个会亮的实体反馈,是不少人做这类小物件的直接动机。

🖊 作者背景

K(@KURANADO2)
– 坐标:中国上海*
*
– 技术栈:以 Java 为主,也写过 kpw(Rust 命令行密码管理器)、macos_install(Shell 自动化)等个人项目
– 背景:据作者在 V2EX 自述,此前从未接触过硬件,是在小红书刷到别人做的 Claude Code 红绿灯后,通过和 AI 对话学习基本原理,才第一次动手焊接完成这个作品。

信息来源:TG频道@NewlearnerChannel

Avatar photo

By Tony

Share via
Copy link