一个回合结束并不自动等于值得打断。真正有用的提醒需要同时满足:事件足够新鲜、来源是可交互会话、用户尚未回来,并且存在清楚的返回路径。
先判断新鲜度,再决定打断
旧完成事件、重复事件和已被新输入覆盖的事件都不应提醒。提醒状态需要过期时间,并绑定会话与回合标识,不能只按文本去重。
上下文要比“完成了”更具体
至少显示工具、项目或线程标题,以及是正常结束、等待权限还是遇到错误。不要把 prompt 或代码全文塞进通知;用户需要识别会话,不需要在锁屏上泄露内容。
核心是返回路径,不是另一个仪表盘
提醒的主要动作应把用户带回对应会话。无法稳定深链时,也要提供足够的项目与线程身份,让人能快速定位,而不是只打开一个泛化首页。
有用报告应该包含什么
- 触发提醒的状态与原因。
- 事件发生时间和新鲜度。
- 对应工具、项目和线程。
- 是否还有其他会话在运行。
- 清除、静音和返回动作。
后台任务和子 Agent 的结束为何通常不应提醒,可继续阅读后台 Agent 结束了,不一定轮到你。
把提醒分成状态与呈现两层
底层先输出等待用户、正常完成或受阻等状态,呈现层再决定是否播放声音、打开前台窗口或只留状态栏标记。这样静音策略不会改变事实判断,用户关闭声音也不会让会话从监控器中消失。
提醒生命周期
一次提醒从新鲜事件开始,在用户返回、后续活动覆盖、手动确认或超时后结束。所有出口都应清理同一回合的通知状态。应用重启时只恢复仍有效的注意项,不重新播放已经确认或过期的报警。
验证体验的五个场景
- 前台回合正常结束。
- 明确等待权限。
- 后台子线程完成但主线程仍运行。
- 两个项目几乎同时需要用户。
- 用户在提醒出现前已经回到会话。