通知内容与时机
codex-notify 发送两类飞书卡片:任务正常完成,以及任务确认中断。
subAgent 与侧边会话
subAgent(界面中的侧边会话)有独立的本地 rollout 记录。codex-notify 会读取首条 session_meta 的 thread_source 精确区分它与用户主会话;默认过滤这些侧边会话的完成和中断通知,只推送主会话。
如确实需要接收侧边会话通知,可以显式开启:
codex-notify config --subagent-notifications on使用 off 可恢复默认过滤。这个开关只影响 codex-notify 发往飞书的消息,不会隐藏或删除 Codex 中的任何会话。
完成通知
Codex 正常结束一轮任务后,会通过 notify 调用 codex-notify。完成事件会先进入本地队列,再由后台 watcher 发送。飞书卡片包含:
- Codex 会话标题;
- 任务耗时;
- 你提交的原始任务;
- Codex 的最终回复;
- 本地发送时间。
新会话的标题可能会在任务结束后才写入本地索引。notify 会快速返回,让 Codex 继续生成标题;watcher 在后台等待,最长 5 秒。已有标题时无需等待。
安装或升级前已经打开的任务可能没有加载新的 notify 配置。watcher 会同时识别本地任务记录中的正常完成事件,因此升级 codex-notify 后不必为了通知功能重启 ChatGPT。升级时还会回看最近 10 分钟,尽量补上刚刚漏掉的完成通知。
任务和结果默认收纳在卡片内容中,既方便在手机通知栏快速判断状态,也能在飞书中查看完整结果。
中断通知
网络断开、服务异常、用量限制等情况可能没有正常的完成事件。后台 watcher 会增量读取 Codex 本地会话记录,识别错误和没有最终完成消息的中止事件,并结合 Stop Hook 判断任务是否意外结束。
发现异常后不会立即发送消息,而是等待并再次确认任务没有自动恢复。这样可以减少短暂重连或正常结束过程中的误报。
中断卡片通常包含:
- Codex 会话标题和任务耗时;
- 原始任务;
- 已识别的错误信息;
- 任务工作目录;
- 本地发送时间。
为什么中断检测是“尽力而为”
中断检测依赖 Codex 写入本地会话记录。如果发生断电、系统崩溃或进程被强制结束,Codex 可能来不及记录终止信息,此时任何本地通知工具都无法可靠判断任务状态。
因此:
- 正常完成优先使用 Codex 官方
notify事件,可靠性更高; - 旧任务的完成补获和中断通知依赖本地记录,会尽量减少漏报和误报,但不能保证覆盖所有极端情况。
避免重复通知
同一个 turn 会使用稳定标识去重。无论事件来自 notify、本地任务记录还是 Stop Hook,都不会在 codex-notify 内重复发送。若原有 notifier 也向飞书发送消息,两个独立工具仍可能各发一条;确认 codex-notify 正常后,可以停用旧工具的飞书发送功能。
内容过长时
飞书卡片有大小限制。codex-notify 会优先保留任务状态和关键信息,只在接近飞书限制时截断过长内容,避免整条通知发送失败。
Codex 结果中的本地图片、视频和音频无法直接上传给飞书。卡片会保留附件名称,并提示回到 Codex 查看,不会把本机路径当作飞书图片发送。