AI News HubLIVE
站内改写1 分钟阅读

Show HN: Baton – 知道你哪个AI编码代理需要你

Baton 是一款 macOS 菜单栏工具,可以监控 Claude Code 和 Codex 等 AI 编码代理,实时显示等待你处理的会话数量。它利用 FSEvents 实现即时更新,并支持点击跳转到特定会话。

来源Hacker News AI作者: nkp007

Baton 是一款专为 macOS 设计的菜单栏应用,旨在帮助开发人员跟踪 AI 编码代理(如 Claude Code 和 Codex)的工作状态。它通过 FSEvents 实时监控代理的会话文件,在菜单栏中显示一个计数,告诉你当前有多少个代理正在等待你的回应。

安装非常简单,只需运行一行命令即可将 Baton 克隆到 ~/.baton 并设置自动启动。更新和卸载也同样方便。Baton 要求 macOS 系统以及 Python 3.9 或更高版本,推荐 3.11 以上以启用完整的 Codex 自动化跟踪功能。

Baton 的核心功能包括:实时菜单栏计数、按工具(Claude Code 或 Codex)和状态(等待中、工作中、已完成)分组显示会话、点击即可跳转到对应会话(Claude Code 会话会聚焦到 Terminal 标签页,Codex 则会通过 deep link 打开)、以及可选的横幅通知。对于 Claude Code,Baton 会识别出最后一条消息为助手回复的空闲会话标记为“等待”;对于 Codex,则直接使用其自身的蓝点未读状态。

此外,Baton 还提供了一个独立的 HTML 仪表盘(通过 server.py 启动),用于更丰富的多标签视图。Baton 的工作原理是基于多个“收集器”来标准化数据,所有来源的状态都统一为特定的字段格式,使得 UI 可以无缝处理新增的来源。目前支持的来源包括 Claude Code 会话文件、Codex 线程索引和 Codex 自动化任务。

Baton 的局限性在于:点击跳转仅支持 Terminal.app,对于 iTerm 或 Ghostty 等其他终端,点击 Claude 会话会打开仪表盘而不是直接跳转;Claude Code 没有原生的已读/未读标志,Baton 使用了一种基于查看行为的方式来标记已读;此外,Baton 仅适用于 macOS。

在安全与隐私方面,Baton 完全本地运行,只读取 ~/.claude 和 ~/.codex 目录中的文件,从不修改任何状态,也不会将任何数据发送到外部。仪表盘服务器仅绑定到 127.0.0.1,确保安全。

Baton 由 Python 编写,依赖 rumps 和 pyobjc-framework-FSEvents,仪表盘则使用纯 HTML/CSS/JS。项目采用 MIT 许可证。