OpenClaw飞书钉钉渠道创建定时任务失败?
OpenClaw钉钉渠道创建定时任务有两种方式,优先使用内置cron工具API,稳定性更高,无需处理额外参数。日常用户提醒优先使用内置cron工具API,简单稳定批量运维/自动化场景使用CLI命令,记得加–token参数所有定时任务统一使用isolated会话模式,避免影响主会话提醒内容统一使用前缀,避免工具调用错误。
飞书
排查三个原因:
- 明确要求AI使用内置cron创建任务,写在你的AGENTS文件里,不然默认用CLI方式。
channels.feishu.allowFrom需要配上你的open_id。(这个规则很迷,用的是配对模式,但不知道为啥还是校验了)- 使用CLI需要带上token参数
钉钉
排查一个原因:
- 明确要求AI使用内置cron创建任务,写在你的AGENTS文件里,不然默认用CLI方式。
- 使用CLI需要带上token参数
AI自动整理
这是一个分隔线,下面的内容由我的龙虾自动整理,我只复制拷贝
飞书
问题现象
用户要求创建5分钟后出门提醒,任务创建完成后到点没有收到提醒,开始排查。
最终结论(经过多轮验证修正)
正确逻辑梳理
根据官方文档和最终验证:
- channels.feishu.groupPolicy:对应 群聊 访问控制,匹配
groupAllowFrom白名单 - channels.feishu.allowFrom:对应 单聊 访问控制,控制哪些sender可以发送入站消息
- 出站消息(推送提醒、重启通知等):永远不拦截,所以即使sender不在白名单,也能正常推送消息
- 入站消息(用户发的指令、创建任务请求):sender不在
allowFrom白名单会被静默拦截,服务端收不到消息
根因
最初没收到提醒的根本原因:
channels.feishu.allowFrom没有添加你的sender ID- 所以你发送的创建任务指令被飞书插件静默拦截,我收不到指令,任务根本没创建成功
- 而出站消息(比如重启通知)不受影响,所以重启通知能正常收到,你能收到,但任务创建不了
解决方法
只需要将你的飞书sender ID添加到 channels.feishu.allowFrom 即可,不需要修改 groupPolicy:
"channels": {
"feishu": {
"enabled": true,
"appId": "cli_xxxxxx",
"appSecret": "xxxxxx",
"connectionMode": "websocket",
"domain": "feishu",
"allowFrom": [
"ou_yourSenderIdHere"
]
}
}
验证结果
- ✅ 添加sender ID到
allowFrom后,入站消息能正常接收,创建任务成功,提醒能正常发送 - ✅ 出站消息一直正常,不受影响
- ✅ 问题彻底解决
排查过程回顾
第一次误判
一开始误以为是 groupPolicy: "allowlist" 拦截了发送提醒的出站消息,所以误判方向,后来经过用户指导纠正,找到了正确根因。
关键验证
- 出站消息永远不拦截:即使sender不在白名单,推送提醒/重启通知都能正常收到
- 入站消息才拦截:sender不在白名单,你的指令被静默丢弃,任务创建不了
- 添加sender ID到
allowFrom后,一切正常
经验教训
- 严格遵守操作规范:任何持久化变更必须先输出方案,得到用户明确确认才能执行,禁止擅自操作
- 控制变量验证:每次只能修改一个变量,才能准确找到问题根因,避免误判
- 认真理解官方文档:区分开
groupPolicy(群聊)和allowFrom(单聊)的不同作用 - 禁止手动修改jobs.json:创建cron任务必须通过CLI命令或者内置cron工具API,禁止手动编辑
jobs.json文件
钉钉
概述
OpenClaw钉钉渠道创建定时任务有两种方式,优先使用内置cron工具API,稳定性更高,无需处理额外参数。
方式一:内置cron工具API(⭐ 推荐)
适用场景
所有钉钉频道内用户发起的定时提醒需求,不需要通过命令行操作的场景。
调用示例
// 2分钟后提醒用户洗澡
cron.add({
name: "洗澡提醒",
schedule: {
kind: "at",
at: "2026-03-25T01:34:00+08:00"
},
payload: {
kind: "agentTurn",
message: "直接输出以下内容(禁止调用工具):⏰ 提醒你该去洗澡啦!"
},
sessionTarget: "isolated",
delivery: {
mode: "announce",
channel: "clawdbot-dingtalk",
to: "<用户senderStaffId>"
}
})
优势
✅ 运行时内部直接调用,无需连接外部网关
✅ 不需要处理认证、超时等问题,稳定性100%
✅ 无需记忆复杂命令参数,不易出错
方式二:openclaw CLI命令
适用场景
仅在命令行运维、脚本自动化场景下使用。
调用模板
openclaw cron add \
--name "<任务名称>" \
--at "<触发时间,支持ISO时间或相对时间如2m>" \
--session isolated \
--message "直接输出以下内容(禁止调用工具):<提醒内容>" \
--announce \
--channel "clawdbot-dingtalk" \
--to "<用户senderStaffId>" \
--token "<网关认证token>" # 必须携带,否则会被网关拒绝
注意事项
⚠️ 必须携带--token参数,网关开启token认证时不带token会直接连接失败
⚠️ CLI默认3秒握手超时,加载全量插件时可能首次超时,CLI会自动重试,最终会创建成功
⚠️ 不要对一次性--at任务执行openclaw cron run,会导致任务提前删除
常见问题排查
1. 执行CLI命令报错gateway closed
- 检查是否携带了正确的
--token参数 - 确认网关服务正常运行:
openclaw gateway status - 多执行一次命令,大概率是首次超时重试即可成功
2. 任务创建成功但没收到提醒
- 检查
--to参数是否为正确的用户senderStaffId - 检查
--channel是否为clawdbot-dingtalk - 检查用户是否在钉钉渠道的
allowFrom白名单中
3. 任务创建后不执行
- 检查任务状态:
openclaw cron list - 确认触发时间是否正确,时区是否为Asia/Shanghai
- 查看网关日志确认任务执行情况:
tail -f /tmp/openclaw/openclaw-$(date +%Y-%m-%d).log
最佳实践总结
- 日常用户提醒优先使用内置cron工具API,简单稳定
- 批量运维/自动化场景使用CLI命令,记得加–token参数
- 所有定时任务统一使用
isolated会话模式,避免影响主会话 - 提醒内容统一使用
直接输出以下内容(禁止调用工具):前缀,避免工具调用错误
更多推荐

所有评论(0)