多会话监控最常见的错误,是先做一个全局“是否运行”布尔值。只要一个旧线程完成,它就可能覆盖另一个仍在运行的线程;只要一个后台任务写入记录,它又可能把真正等待用户的前台会话挤掉。
每个会话先有自己的一行
每行至少需要供应商、稳定会话标识、工作目录、来源、最新语义事件、事件时间和当前状态。扫描器可以共享,但状态不能先合并。文件路径不是理想的会话身份,因为归档、迁移或桌面端映射都可能改变路径。
分类与聚合分开
先判断每个会话是运行中、等待用户、已完成、受阻还是停滞,再用产品规则选择全局展示。一个实用的优先级是:需要用户处理的前台会话、明确受阻的会话、仍在运行的会话、其他新鲜状态。优先级必须可解释,不能简单按最后文件修改时间排序。
提醒必须带线程身份
“Claude 已完成”对同时开五个项目的人没有帮助。提醒至少应包含工具、可识别的项目或线程标题,以及返回该会话的路径。去重键也应绑定回合,而不是只绑定文本,否则相同文案会漏报或连报。
事件负责速度,重扫负责恢复
文件系统事件适合快速发现变化,但不保证每次都完整送达。低频重扫可以修复漏掉的事件,应用重启时则应完整重建。两条路径必须进入同一个解析和去重逻辑,否则会出现两套互相矛盾的状态。
监控器仍然不知道什么
本地状态无法证明生成代码正确、测试通过或业务任务完成。它只能说明当前会话证据支持什么。遇到冲突或过期记录时,显示“未知”比猜一个漂亮答案更可靠。
想建立可测试的状态定义,可继续阅读七状态分类;想判断安静会话到底是停滞还是结束,可阅读停滞、运行与完成的区别。