用红绿灯监控 AI 写代码的状态 — CodeLight 开源小工具

3 阅读3分钟

用红绿灯监控 AI 写代码的状态 — CodeLight 开源小工具

你是不是也这样:让 Claude Code / Cursor 帮你写代码,切到别的窗口摸鱼,回来发现它早就写完了(或者报错了)?

一个痛点

用 AI 编程助手写代码,最大的问题不是它写得好不好,而是——你不知道它干到哪了

切到浏览器看两篇文章,回来发现 AI 5 分钟前就 idle 了。或者以为它在思考,其实早就报错了。

所以我做了 CodeLight —— 一个 macOS 菜单栏红绿灯,实时显示 AI 编程助手的工作状态。

红灯 = 正在执行,黄灯 = 在思考,绿灯 = 搞定了。一眼就能看出来,不用切回终端看。

长什么样

横版红灯-执行中转存失败,建议直接上传图片文件

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

竖版模式转存失败,建议直接上传图片文件 竖版绿灯转存失败,建议直接上传图片文件 竖版红灯转存失败,建议直接上传图片文件

灯效说明

灯效含义
🟢 绿灯常亮任务完成,当前空闲
🟡 黄灯呼吸AI 正在思考、分析代码
🔴 级灯快闪AI 正在执行工具(读文件、跑命令等)
🟡 黄灯闪烁调用失败,正在重试
🔴 级灯慢闪会话异常终止

怎么做到的

原理很简单,利用 AI 工具提供的 Hooks 机制

  1. AI 开始执行工具 → 触发 PreToolUse hook → 红灯亮
  2. AI 执行完工具 → 触发 PostToolUse hook → 黄灯亮(思考中)
  3. AI 任务完成 → 触发 Stop hook → 绿灯亮

每个 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 干活 🚦