我经常同时开几个 Claude Code / Codex CLI 的 iTerm2 标签页,过一会儿就分不清哪个还在跑、哪个在等审批、哪个已经结束了。
所以做了个很小的开源工具:ai-tab-color。
它会根据当前 Agent 状态自动修改 iTerm2 tab 的背景色:
- 🔵 蓝色:working
- 🔴 红橙色:waiting for approval
- 🟢 绿色:done ,保持到下次提交 prompt
安装:
curl -fsSL https://github.com/misaka1018/ai-tab-color/releases/latest/download/install.sh | bash
项目地址:
https://github.com/misaka1018/ai-tab-color
实现方式比较简单:Claude Code / Codex lifecycle hooks 只负责写状态,每个 CLI 会话启动一个轻量 poller ,默认每 5 秒检查状态,再通过 iTerm2 OSC 序列修改 tab 颜色。
有几个细节稍微多做了一点:
- 配置采用合并而不是覆盖,保留原有字段和第三方 hooks
- 重复安装不会重复注入
- 修改 JSON 前自动备份,JSON 损坏时直接中止
- 等待审批后,通过 transcript 的更新时间判断 Agent 是否已经继续工作,避免 tab 一直“卡红”
- Codex 没有 SessionEnd ,poller 会通过 iTerm2 session 存活检查和硬 TTL 做回收
- 检测到 cc-switch 时,会把 Claude hooks 同步到各个 provider
先把限制说清楚:
- 目前只支持 macOS + iTerm2
- Codex 需要 stable lifecycle hooks
jq是必需依赖- 默认 5 秒轮询,不是实时到毫秒
- 没有 UI 或 dashboard ,就只是 tab 颜色
仓库里有隔离临时 HOME 的集成测试,覆盖 Claude/Codex 安装、重复安装、卸载、Codex 不支持 hooks 时的降级,以及坏 JSON 中止等场景。
想问问大家:你们在多 Agent / 多 tab 场景下也会遇到这个问题吗?如果有其他终端状态呈现方式,或者安装兼容问题,欢迎拍砖。