Cron announce 丢消息止血:避免主会话 NO_REPLY 吞掉定时播报
问题/场景:批量 cron announce 注入主会话时,主代理可能返回 NO_REPLY,导致目标频道静默收不到消息。前置条件:使用 `sessionTarget=isolated` + `delivery.mode=announce`,且有可检查的 cron runs/logs。实施步骤:先复现批量运行→对比 run 成功与目标频道无消息→优先启用 direct delivery(`delivery.to` 明确目标)并减少依赖主会话总结→用 bestEffort=false 观测失败。关键点:把“投递成功”与“agent 生成成功”分开验证。验证:run=ok 且目标 topic 实际收到内容。风险:bestEffort=true 会隐藏失败。
GITHUBDiscovered 2026-02-15Author TedwardForma
Prerequisites
- Cron jobs are configured with announce delivery and observable target channel/topic.
- You can inspect `openclaw cron runs` and gateway logs for each execution.
Steps
- Create a controlled batch (2-3 jobs) that fires in the same window to reproduce missing announces.
- Compare run records (`status: ok`) with channel delivery reality; mark mismatches as delivery-path failures.
- Prefer direct recipient delivery (`delivery.to`) and avoid relying on main-session summarization for critical alerts.
- Temporarily set strict failure visibility (avoid best-effort hiding) until delivery path stabilizes.
Commands
openclaw cron runs --id <jobId>openclaw gateway statusVerify
For at least 3 consecutive runs, each cron run has matching message evidence in the target channel/topic.
Caveats
- Issue analysis is based on active bug reports; exact behavior may change after upstream fixes(需验证).
- Do not treat `lastStatus: ok` as delivery success without channel-side evidence.
Source attribution
This tip is aggregated from community/public sources and preserved with attribution.
Open original source ↗