用红绿灯监控 AI 写代码的状态 — CodeLight 开源小工具
你是不是也这样:让 Claude Code / Cursor 帮你写代码,切到别的窗口摸鱼,回来发现它早就写完了(或者报错了)?
一个痛点
用 AI 编程助手写代码,最大的问题不是它写得好不好,而是——你不知道它干到哪了。
切到浏览器看两篇文章,回来发现 AI 5 分钟前就 idle 了。或者以为它在思考,其实早就报错了。
所以我做了 CodeLight —— 一个 macOS 菜单栏红绿灯,实时显示 AI 编程助手的工作状态。
红灯 = 正在执行,黄灯 = 在思考,绿灯 = 搞定了。一眼就能看出来,不用切回终端看。
长什么样

支持竖版、横版、迷你三种模式,拖到屏幕边缘还能变成磁吸长条:

灯效说明
| 灯效 | 含义 |
|---|---|
| 🟢 绿灯常亮 | 任务完成,当前空闲 |
| 🟡 黄灯呼吸 | AI 正在思考、分析代码 |
| 🔴 级灯快闪 | AI 正在执行工具(读文件、跑命令等) |
| 🟡 黄灯闪烁 | 调用失败,正在重试 |
| 🔴 级灯慢闪 | 会话异常终止 |
怎么做到的
原理很简单,利用 AI 工具提供的 Hooks 机制:
- AI 开始执行工具 → 触发
PreToolUsehook → 红灯亮 - AI 执行完工具 → 触发
PostToolUsehook → 黄灯亮(思考中) - AI 任务完成 → 触发
Stophook → 绿灯亮
每个 hook 就是发一个 HTTP 请求到本地服务,CodeLight 内置了一个轻量 HTTP 服务(纯 Swift 实现,不依赖 Python),收到状态变更后刷新灯效。
AI 工具 --hook--> curl --> CodeLight HTTP Server --> 刷新灯效
快速上手
1. 下载安装
GitHub Releases 下载最新版(macOS 13.0+)
双击运行,如果提示"已损坏":
xattr -cr CodeLight.app
2. 一键配置 Hook
打开设置 →「配置 Hook」选项卡,勾选你用的工具(Claude Code / Codex / Cursor),点「应用配置」就行了。
底层其实就是往对应的 settings.json 写了一组 hooks 配置,让 AI 工具在每个关键节点回调 CodeLight 的本地 HTTP 接口。
3. 开始用
正常使用 AI 编程助手,红绿灯会自动同步状态。
几个实用的功能
权限气泡 — 当 AI 请求执行 Bash 命令等需要权限的操作时,红绿灯旁边会弹出微信风格的聊天气泡,直接点允许/拒绝,不用切回终端。
多会话支持 — 如果你同时开了多个 Claude Code 终端,CodeLight 会聚合成一个状态显示。红灯表示至少有一个在执行,全绿才表示全部完成。
吉祥物 — 灯亮的时候灯珠上会出现小牛、小猫、机器人等小吉祥物,可以在设置里切换。
桌面模式 — 支持置顶显示、全屏可见、窗口透明度调节,双击灯窗口可以切换竖向/横向/迷你模式。
技术栈
- 纯 Swift,没有用 SwiftUI,AppKit 原生开发
- HTTP 服务用
NWListener实现,不依赖外部服务 - 所有绘制用
NSBezierPath+draw()手绘,包括灯珠的 LED 点阵效果和吉祥物 - 状态持久化用
UserDefaults
整个 App 就是一个单文件 + 几个模块,没有复杂的依赖,编译也就几秒钟。
开源
GitHub: github.com/guandeng/co…
MIT 协议,欢迎提 Issue 和 PR。
如果你也在用 AI 编程助手,试试 CodeLight,让它帮你盯着 AI 干活 🚦