$ cat zh/blog/monitor-multiple-claude-code-codex-sessions

如何同时监控多个 Claude Code 和 Codex 会话

先为每个线程保存独立状态,再决定共享状态栏应该显示什么。聚合规则和会话扫描器同样重要。

多会话监控最常见的错误,是先做一个全局“是否运行”布尔值。只要一个旧线程完成,它就可能覆盖另一个仍在运行的线程;只要一个后台任务写入记录,它又可能把真正等待用户的前台会话挤掉。

每个会话先有自己的一行

每行至少需要供应商、稳定会话标识、工作目录、来源、最新语义事件、事件时间和当前状态。扫描器可以共享,但状态不能先合并。文件路径不是理想的会话身份,因为归档、迁移或桌面端映射都可能改变路径。

分类与聚合分开

先判断每个会话是运行中、等待用户、已完成、受阻还是停滞,再用产品规则选择全局展示。一个实用的优先级是:需要用户处理的前台会话、明确受阻的会话、仍在运行的会话、其他新鲜状态。优先级必须可解释,不能简单按最后文件修改时间排序。

提醒必须带线程身份

“Claude 已完成”对同时开五个项目的人没有帮助。提醒至少应包含工具、可识别的项目或线程标题,以及返回该会话的路径。去重键也应绑定回合,而不是只绑定文本,否则相同文案会漏报或连报。

事件负责速度,重扫负责恢复

文件系统事件适合快速发现变化,但不保证每次都完整送达。低频重扫可以修复漏掉的事件,应用重启时则应完整重建。两条路径必须进入同一个解析和去重逻辑,否则会出现两套互相矛盾的状态。

监控器仍然不知道什么

本地状态无法证明生成代码正确、测试通过或业务任务完成。它只能说明当前会话证据支持什么。遇到冲突或过期记录时,显示“未知”比猜一个漂亮答案更可靠。

想建立可测试的状态定义,可继续阅读七状态分类;想判断安静会话到底是停滞还是结束,可阅读停滞、运行与完成的区别