多渠道定时推送
同一个任务推到 QQ + 飞书 + 微信 + 邮件,让龙虾在不同场景用不同渠道找到你。这篇讲怎么做、怎么不互相打架、怎么单个渠道挂了不影响其他。
一、为什么需要多渠道推送
单渠道的典型痛点:
- 公司用飞书,下班后看不到 —— 你想让重要告警同时发私人微信
- QQ 在夜里静音,飞书在工作时静音 —— 根据时段切换渠道
- 家人群在微信,同事群在飞书 —— 同一份早报要推到两拨人
- 某个渠道突然挂了(API 限流、token 过期) —— 其他渠道要顶上
新手做法:给每个渠道单独建一个 cron 任务。问题:① 任务数翻倍;② 重复执行浪费 token;③ 数据重复抓取。
高级做法:一个 cron 任务,提示词里声明多渠道。
二、三种推送模式
按场景挑:
| 模式 | 什么意思 | 适合 |
|---|---|---|
| 并行 | 一次触发,同时发到所有渠道 | 重要告警、不嫌吵的场景 |
| 主备 | 先发主渠道,主渠道失败再发备用 | 单点容灾 |
| 按时段切换 | 早 9-晚 6 发飞书,其他时间发微信 | 工作/生活分流 |
并行模式(最常用)
在提示词里显式列出所有目标渠道:
帮我建一个服务健康检查任务:
时间:每 6 小时一次
内容:检查 〈服务〉 健康状态
推送规则:**同时**通过飞书和微信推送告警,两个渠道内容一致
失败处理:如果一个渠道发送成功另一个失败,记录失败的那个但不要重试——告警已经发出去了
关键:是"一次告警,多渠道广播",不是"多个任务"。关键句是"同时"和"两个渠道内容一致"——龙虾会理解为这是一个动作(多渠道广播),而不是多个动作。
主备模式
帮我建一个服务存活监控任务:
时间:每 30 分钟一次
内容:检查 〈服务〉 状态
推送规则:**先尝试通过飞书推送**。如果飞书发送失败(返回错误或超时 10 秒),**降级通过微信推送**,并在消息末尾标注"[飞书不可用]"
兜底:两个渠道都失败时,写入 ~/.openclaw/logs/alert-failed.log,下次触发时优先重试
这是单点容灾——主渠道挂了备用顶上,不要因为飞书抽风错过重要告警。关键句是"先尝试" + "降级"——龙虾会按顺序执行,不会并行。
按时段切换
帮我建一个服务存活监控任务:
时间:每 1 小时一次
内容:检查 〈服务〉 状态
推送规则:按当前北京时间选渠道:
- 工作日 09:00-18:00 用飞书(同事需要看到)
- 其他时间用微信(不打扰同事)
跨时段时(17:55 触发)发飞书即可,不需要双发
让告警在我醒着、能处理的时间到达对的渠道。时段判断让龙虾自己做——它会读当前时间然后选渠道。
三、渠道适配:每个渠道的格式限制
不同渠道的消息格式不一样,不要假设龙虾自动知道。在提示词里写清楚:
| 渠道 | 限制 | 怎么说 |
|---|---|---|
| 单条消息 5000 字、markdown 支持有限 | "格式化为纯文本,每条不超过 2000 字" | |
| 飞书 | 富文本卡片、支持 markdown | "用 markdown 格式,可以用 emoji 和加粗" |
| 微信 | 单条消息较短、对链接敏感 | "每条不超过 500 字,链接单独成行" |
| 邮件 | 几乎没限制、可以带附件 | "主题用 XX,正文用 markdown,附件保存到 /tmp/" |
| 企业微信 | 类似微信但支持 markdown | "用 markdown 格式,每条不超过 1000 字" |
长内容要分段
如果你的早报内容很长(比如 20 条新闻),微信会截断、QQ 会刷屏。在提示词里写:"如果内容超过「渠道」的舒适长度(500 字),自动拆成多条发送,每条带 '(第 N/M 条)' 后缀。"
四、失败处理:单渠道挂了不影响其他
多渠道推送最容易踩的坑:一个渠道挂了,整个任务报错,其他渠道也没发出去。
避免方法——在提示词里明确:
帮我建一个早报任务(多渠道版):
时间:每天北京时间 7:00
内容:抓 HN 前 10 条 + 中文摘要
推送:4 个渠道,**每个渠道独立处理**:
- 飞书(完整 markdown,可以带 emoji 和加粗)
- 微信(拆成 3-4 条,每条不超过 500 字,去掉链接只留标题)
- QQ(完整内容,但链接单独成行)
- 邮件(完整内容 + 附件 /tmp/daily-report-YYYY-MM-DD.md)
关键规则:**单个渠道失败不要中断整个任务**,每个渠道独立尝试。最后汇总:成功 N 个、失败 M 个、失败原因是 X,通过飞书告诉我。这段话强制龙虾串行执行 + 错误隔离,不会因为一个渠道挂了整个崩。
五、真实场景:四渠道早报
电商运营小张的实例。他在公司有飞书群(同事)、家人微信群、技术交流 QQ 群、个人邮箱。希望同一份早报分别推到这 4 个地方,每个渠道适配格式。
帮我建一个每日运营早报任务:
时间:每天北京时间 7:00
内容:
1. 抓取 HN 前 10 条 + 36kr 今日热门 + 财联社早间快讯
2. 每条配 50 字以内中文摘要
3. 整理成 markdown,标题用 "🐲 每日早报 YYYY-MM-DD"
推送(4 个渠道,独立适配、独立失败):
- 飞书(公司群):完整 markdown,可以带 emoji 和加粗
- 微信(家人群):拆成 3-4 条,每条不超过 500 字,去掉链接只留标题
- QQ(技术群):完整内容,但链接单独成行
- 邮件(自己):完整内容 + 附件 /tmp/daily-report-YYYY-MM-DD.md
失败处理:每个渠道独立尝试,单个失败不中断。最后汇总"成功 N 个、失败 M 个",通过飞书告诉我。
兜底:所有渠道都失败时,立刻写 ~/.openclaw/logs/morning-report-failed.log,下次 cron 触发时优先重试。跑两天看效果,再调每条字数和拆分策略。
六、什么时候不要多渠道推送
- 强实时告警(< 1 分钟级别)—— 多渠道串行会拖慢,用 webhook 直接广播
- 高敏感数据(工资单、合同)—— 只推一个加密渠道,别广撒网
- 试验性任务 —— 先用单渠道验证内容质量,稳定了再扩到多渠道
七、下一步
- 任务跑不起来 / 推送丢失:定时任务排障
- 抄现成模板:Cron Cookbook
