Show HN: Baton – 知道你哪個AI編碼代理需要你
Baton 是一款 macOS 選單欄工具,可以監控 Claude Code 和 Codex 等 AI 編碼代理,即時顯示等待你處理的會話數量。它利用 FSEvents 實現即時更新,並支援點選跳轉到特定會話。
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 許可證。