Claude Code Hooks 很适合回答“刚才发生了什么”,持续会话监控则更适合回答“现在是什么状态”。这不是实现偏好,而是两类信号的时间语义不同。
Hooks 擅长观察离散事件
Hook 由工具在特定生命周期节点触发,例如工具调用前后、权限请求或回合停止。它天然适合运行脚本、记录审计信息、执行格式化,或者把一次明确事件发送到其他系统。它的优势是事件语义清楚,缺点是只看到被配置和成功触发的那一刻。
持续监控重建当前上下文
监控器会读取本地持久记录,维护每个会话的最新事件、回合标识和新鲜度。即使监控器晚于会话启动、应用刚刚重启,或者同时存在多个终端,它仍可从现有记录恢复当前视图。
| 问题 | Hooks | 持续监控 |
|---|---|---|
| 某个事件刚发生 | 强 | 强 |
| 应用重启后恢复 | 需要另存状态 | 可从记录重建 |
| 同时查看多个会话 | 需要额外聚合 | 天然适合 |
| 发现漏掉的事件 | 弱 | 可通过重扫恢复 |
| 触发自定义动作 | 强 | 通常不是重点 |
Stop Hook 不能单独证明“现在已完成”
停止事件只能证明某个回合在某个时刻结束。它之后可能立即出现新的用户输入、权限请求或另一个回合。如果界面需要持续显示“轮到你”,就必须判断事件是否仍然新鲜、是否已被后续活动覆盖。
什么时候选哪一种
当“事件本身就是契约”时选 Hooks,例如运行检查或记录一次工具调用。当目标是显示当前上下文、恢复状态、管理多个会话时,选择持续监控。可靠的系统也可以组合二者:Hooks 提供高质量语义事件,本地记录负责恢复与校验。
实现清单
- 为事件保留稳定的会话和回合标识。
- 明确哪个时间戳代表语义发生时间。
- 定义重复事件、乱序事件和缺失事件的处理方式。
- 在重启、多个会话、部分写入和长时间静默下测试。
- 说明原始内容是否离开本机。
Agent Island 的选择
Agent Island 采用本地持续监控路线:读取 Claude Code 和 Codex 已写入磁盘的会话记录,按会话保留状态,再聚合到状态栏。它不会要求用户为了基本监控去改写现有 CLI 工作流。相关的状态定义见七状态分类与测试清单。