我给 Claude Code 装了个“红绿灯”,再也不怕忘记确认状态了
前两天刷到一位网友给 Claude 做了一个物理外挂:用 Arduino 控制一盏 USB 红绿灯,根据 Claude Code 的状态亮不同颜色的灯。想法很酷,但我没有 Arduino,也不想在桌上多摆一盏灯。
于是我换了个思路:为什么不在电脑上直接做一盏“虚拟红绿灯”呢?于是就有了这个项目 —— Code Light。一个躺在系统托盘里的小圆点,告诉你 Claude Code 此时此刻正在做什么。
项目地址https://github.com/cuihuapeng/code-light-ai.git
痛点:AI 干活,状态你看不见
Claude Code 是一个运行在终端里的 AI 编码代理。你可以让它帮你写代码、跑测试、查文档……问题来了:你给它一个任务之后,往往要切回终端窗口才能知道它现在是什么状态:
-
是在执行工具调用?
-
是卡住等你的确认?
-
还是已经报错了?
来回切换窗口很打断思路。要是能瞟一眼就知道状态,该多好。
Code Light 就是解决这个问题的。它在你的 macOS(也支持 Linux / Windows)系统托盘中显示一个彩色圆点:
|
颜色 |
状态 |
含义 |
|---|---|---|
|
灰色 |
空闲 |
没有正在运行的 Claude Code 会话 |
|
绿色(闪烁) |
工作中 |
正在执行工具调用(写文件、跑命令等) |
|
黄色(闪烁) |
等待中 |
需要你确认下一步操作 |
|
红色(闪烁) |
错误 |
出事了,快去终端看看 |
|
蓝色 |
完成 |
任务结束(显示10秒后变回灰色) |
绿色、黄色、红色都会以每秒2次的频率闪烁,非常醒目。鼠标移到图标上还会显示当前状态、活跃会话数量、最后更新时间。
怎么实现的?比你想的更简单
Code Light 没有走复杂的进程通信,也没有开任何网络端口。它用的是最朴素也最可靠的方式 —— 文件。
Claude Code 官方提供了一套生命周期钩子(Lifecycle Hooks),可以在不同事件(调用工具前、调用工具后、需要用户确认时、会话结束时)执行自定义脚本。Code Light 注册了几个 Bash 钩子脚本,每个脚本做的事很简单:
-
获取当前会话 ID
-
把当前状态(working / waiting / error / completed)写入到
~/.code-light/sessions/<会话ID>.json
然后,系统托盘程序会每隔1秒扫描一次这个文件夹里的所有 JSON 文件,合并所有会话的状态(按错误 > 等待 > 工作中 > 完成 > 空闲的优先级),然后改变图标颜色。
就这么简单。零配置、零端口、零API,只有几个文本文件在干活。
安装使用(3步搞定)
前提条件
-
macOS 12+ / Linux / Windows 10+
-
Claude Code CLI 已安装并配置
-
Node.js 18+ 和
pnpm -
Rust 工具链
1. 从源码构建
git clone https://github.com/cuihuapeng/code-light-ai.git
cd code-light-ai
pnpm install
pnpm tauri build
或者直接安装:

2. 启动应用
双击运行 code-light.app(macOS)或对应平台的可执行文件,系统托盘中会出现一个灰色小圆点。
3. 安装钩子
点击托盘图标 → 选择 “Setup Hooks”,这一步会自动把钩子脚本注册到 ~/.claude/settings.json 中。之后正常使用 Claude Code 即可,图标自动变化。

🍎 macOS 提示“应用已损坏”?从源码构建可能被macOS阻止,执行以下命令后右键打开应用即可:
xattr -cr /path/to/code-light.app
进阶特性:多会话 + 自动清理
📌 多终端会话支持
你可以在多个终端窗口里同时跑 Claude Code,Code Light 会追踪所有会话。托盘图标显示的是所有会话中的最高优先级状态(错误 > 等待 > 工作中 > 完成 > 空闲)。比如一个会话在等待确认,另一个在干活,图标会显示黄色闪烁(等待优先级高于工作中)。
🧹 自动清理与保护
-
超过5分钟没有活动的会话会被自动删除
-
陷入“等待确认”状态超过30秒的会话,会被自动提升为“工作中”(防止挂起)
-
陷入“工作中”状态超过60秒的会话,会被自动标记为“完成”
-
完成状态仅显示10秒,然后会话被清理
如果你也在用 Claude Code,并且受够了来回切换终端看状态,不妨试试这个“红绿灯”。
一眼看清,心里有数。
有什么想法,我们也可以聊聊哇!
更多推荐




所有评论(0)