Claude Code状态氛围灯:用红绿灯实时显示AI编程工作状态
Claude Code状态氛围灯:用红绿灯实时显示AI编程工作状态
当AI牛马需要一个「红绿灯」
随着Claude Code等AI编程工具的普及,一种全新的工作模式正在形成:把编程任务交给AI,自己去做别的事情。但这种模式有一个痛点——AI在执行过程中经常需要用户授权或决策,会弹出输入框等待确认。如果你正好不在屏幕前,就会错过这个窗口,导致AI空等,白白浪费时间。
B站UP主彭雪天针对这个痛点,设计了一个巧妙的硬件项目:Claude Code编程状态氛围灯。通过红绿灯、灯带和蜂鸣器的声光组合,实时反映AI的工作状态,让你即使不盯着屏幕,也能第一时间知道AI需要你的输入。这个项目参加了M-Design创意设计大赛的创意互动方向,思路新颖且实用性极强。
核心原理:Hooks回调 + 串口通信
整个项目的核心思路是利用Claude Code的Hooks回调机制。Claude Code在运行过程中有多个关键节点(如开始执行、等待输入、任务完成等),可以在这些节点上挂载自定义脚本。
这里的Hooks机制类似于Git Hooks或Webpack插件系统的设计理念——它是Anthropic为Claude Code设计的一套生命周期回调系统,允许开发者在AI代理执行的关键节点注入自定义脚本。这些脚本可以是Shell脚本、Python程序或编译后的二进制文件。Hooks的设计初衷是为了增强Claude Code的可观测性和可扩展性,让开发者能够记录日志、触发通知、执行安全检查等。这种事件驱动的架构模式将核心功能与扩展功能解耦,使得第三方开发者无需修改源代码就能增加新功能,为本项目这类硬件联动方案提供了天然的接入点。
软件架构
系统的软件层分为三个部分:
- 守护进程(Python):常驻运行在电脑上,一方面通过串口与硬件通信,另一方面作为UDP服务器接收状态消息。
- Client脚本:由Claude Code在不同工作节点触发调用,通过UDP协议将当前状态发送给守护进程。
- 状态翻译:守护进程接收到状态信息后,将其翻译成串口指令,发送给底层硬件。
项目选择UDP(用户数据报协议)而非TCP作为进程间通信协议,这一设计决策体现了对场景特性的精准把握。UDP是无连接的传输协议,发送数据时不需要建立连接、不需要等待确认,单次通信的延迟极低。Client脚本由Hooks触发后生命周期极短——它只需要发送一条状态消息就退出。如果使用TCP,每次都需要经历三次握手建立连接,对于如此轻量的通信来说是不必要的开销。而UDP的"发射后不管"特性完美匹配了这种场景:即使偶尔丢失一个状态包,下一次状态变更也会很快覆盖,不会造成实质性问题。这种在本地回环上使用UDP进行进程间通信的模式,在系统监控和日志收集领域已经非常成熟。
这种架构设计的好处在于解耦——Claude Code只需要调用轻量级的UDP客户端脚本,不需要直接操作串口,而守护进程负责所有的硬件通信逻辑。
硬件平台
硬件方面使用了NXP的Freedom i.MX RT1186开发板,配合Arduino扩展板,外接红绿灯模块、蜂鸣器和LED灯带。
i.MX RT1186属于NXP的跨界处理器系列,定位介于传统MCU(微控制器)和MPU(微处理器)之间,搭载了双核Arm Cortex-M33和Cortex-M7处理器,主频可达800MHz,同时集成了千兆以太网TSN(时间敏感网络)功能。"Freedom"是NXP的低成本开发板产品线品牌,兼容Arduino扩展板接口(即Arduino Uno R3引脚布局),这使得开发者可以直接使用市面上大量现成的Arduino传感器和执行器模块,大幅降低了原型开发的门槛。在本项目中,Arduino兼容接口使得红绿灯模块、蜂鸣器和LED灯带的连接变得即插即用。
底层固件基于Zephyr操作系统编写,这是一个由Linux基金会托管的开源实时操作系统(RTOS),专为资源受限的嵌入式设备设计,支持从8KB RAM的微控制器到更复杂的多核处理器等多种硬件平台。Zephyr具有出色的跨平台特性,其核心优势在于设备树(Device Tree)抽象机制——这一概念借鉴自Linux内核,通过声明式的硬件描述文件将硬件配置与驱动代码分离。开发者只需编写或修改.dts文件来描述新硬件的引脚映射、外设配置等信息,就可以将同一份应用代码移植到不同的开发板上。相比FreeRTOS等传统RTOS,Zephyr提供了更完整的网络协议栈、蓝牙支持和安全特性,同时保持了实时系统的确定性响应能力。NXP、Nordic、Intel等芯片厂商都是Zephyr项目的主要贡献者。
电脑上的守护进程通过USB虚拟串口(通常表现为COM端口或/dev/ttyUSB设备)与开发板通信。串口通信的优势在于:协议简单(通常只需约定波特率和数据格式)、调试方便(可以直接用串口终端工具查看数据)、延迟低且稳定。相比蓝牙或WiFi等无线方案,有线串口在原型阶段几乎不存在连接不稳定的问题。守护进程将高层语义状态(如"等待输入")翻译为串口指令字节发送给下位机,下位机解析后驱动对应外设,这种"上位机决策、下位机执行"的分层架构是工业控制和物联网设备中的经典设计模式。
三种状态,三种灯效
项目定义了三种清晰的工作状态,每种状态都有独特的声光表现:
🔴 红灯:AI正在工作
当Claude Code处于Running模式或正在思考时,红绿灯显示红灯,灯带呈现流水灯效果。这意味着AI正在忙碌,你可以安心做自己的事情。
🟡 黄灯:需要你的输入
当Claude Code需要用户进行授权或决策时,红绿灯切换为黄灯,灯带进入呼吸灯模式,同时蜂鸣器发出提醒声。这是最关键的状态——它意味着AI在等你,你需要尽快回到屏幕前做出响应。声音提醒确保即使你背对屏幕也不会错过。
🟢 绿灯:空闲状态
当Claude Code处于空闲状态(任务完成或尚未开始)时,红绿灯显示绿灯,灯带呈现彩虹模式。这表示一切就绪,可以给AI分配新任务了。
下位机固件程序设计
固件程序的结构也值得一提。主程序启动后首先进行硬件初始化,然后创建一个心跳线程,通过周期性信号告知系统程序正在正常运行。心跳机制是嵌入式系统中常见的健康监测手段——如果主循环因为某种异常而卡死,心跳信号会停止,看门狗定时器(Watchdog Timer)可以据此判断系统异常并触发复位,保证设备的长期稳定运行。
最核心的部分是命令处理循环:持续监听串口数据,收到命令后进行解析,根据解析结果分别控制红绿灯、蜂鸣器和灯带的状态。整个逻辑简洁明了,状态切换响应迅速。在Zephyr框架下,串口读取通常使用中断驱动或DMA方式实现,确保数据接收的实时性;而灯带控制(如WS2812B协议)则需要精确的时序信号,Zephyr的PWM和SPI驱动为此提供了硬件级别的支持。
实际演示效果
在作者的实际演示中,整个流程非常流畅:
- Claude Code初始处于空闲状态,绿灯亮起,灯带显示彩虹效果
- 下达指令「创建一个空文件Text5.txt」后,AI开始执行,灯带切换为流水灯
- AI请求文件创建权限时,黄灯亮起,灯带变为呼吸模式,蜂鸣器响起
- 用户点击「Yes」授权后,任务完成,灯带恢复彩虹模式,绿灯重新亮起
整个过程状态切换即时,声光反馈明确,完全达到了「不看屏幕也知道AI在干什么」的设计目标。值得注意的是,从Hooks触发到灯光变化的端到端延迟非常短——UDP本地通信在微秒级别,串口传输在毫秒级别,人眼几乎感知不到任何滞后。
实用价值与扩展思考
这个项目虽然看似是一个趣味硬件,但它揭示了一个严肃的效率问题:在人机协作的AI编程模式下,如何减少人类的等待感知延迟?
这个问题的本质是人机交互中的"注意力管理"。传统的软件通知(如任务栏闪烁、弹窗提醒)依赖于用户的视觉注意力停留在屏幕上,而物理世界的声光信号则能穿透注意力屏障——你可以在厨房做饭时听到蜂鸣器响,在阳台晒太阳时看到灯光变化。这种将数字状态"物化"为环境感知的设计思路,在智能家居和工业监控领域已有广泛应用,但将其引入AI编程工作流还是一个新颖的尝试。认知心理学研究表明,人类对多模态信号(视觉+听觉)的感知响应速度显著快于单一通道,这也解释了为什么本项目同时使用灯光和蜂鸣器——冗余信号设计确保了在不同环境条件下(如嘈杂环境或视线遮挡)至少有一个通道能有效传达信息。
当前Claude Code的Hooks机制为这类扩展提供了天然的接口。除了物理灯光提醒,类似的思路还可以扩展到:
- 手机推送通知:通过Webhook发送到手机
- 桌面通知增强:自定义系统通知样式和声音
- 多任务状态面板:同时监控多个Claude Code实例的状态
- 团队协作场景:让团队成员知道AI助手的工作进度
- 智能手表震动提醒:通过蓝牙或推送服务将状态同步到可穿戴设备
- Slack/飞书机器人集成:在团队通讯工具中自动播报AI工作进度
从更宏观的角度看,随着AI编程工具越来越强大,人类的角色正在从「编码者」转变为「决策者」和「审核者」。这种角色转变意味着人类需要在多个AI代理之间分配注意力,就像一个项目经理同时管理多个团队成员一样。如何让这种角色转换更加高效和自然,如何设计更好的"人在环路"(Human-in-the-Loop)交互模式,是一个值得持续探索的方向。而这个红绿灯项目,用最直觉的方式给出了一个优雅的答案——它证明了有时候最好的人机接口不是更复杂的软件界面,而是回归到人类最原始的感知通道:光和声音。
相关推荐
Claude Code 4个必改设置,开发效率直接翻倍
Claude Code 4个必改设置,开发效率直接翻倍
分享Claude Code最值得修改的4个设置:权限模式绕过、聊天记录永久保留、MCP合并规则理解、全局Skill精简到7个。改完告别确认框骚扰,节省6%上下文窗口,开发体验立刻提升。
RTK终端输出压缩工具:Claude Code省下80%Token消耗
RTK终端输出压缩工具:Claude Code省下80%Token消耗
RTK是一款用Rust编写的开源终端输出压缩工具,专为Claude Code设计。通过拦截和压缩git、npm等命令输出,将Token消耗从11.8万降至2.39万,节省约80%。免费、离线、两分钟安装即用。
笨豆:16岁独立拍纪录片,全网播放破亿的10后UP主
笨豆:16岁独立拍纪录片,全网播放破亿的10后UP主
B站UP主笨豆,16岁高一学生,从四年级开始做视频,独立完成印度、蒙古国等人文纪录片拍摄,全网粉丝超百万、播放量破亿。深入了解她的纸上剪辑法、一人纪录片工作流程及创作心路历程。