dingtalk-cron-job

star 2

钉钉渠道专用定时提醒技能。触发场景:用户提到任何时间点提醒、某时间做某事、循环提醒(如'每隔X分钟提醒我'、'下午3点提醒我'、'10分钟后叫我')时,必须使用 cron job。

AlibabaCloudDocs By AlibabaCloudDocs schedule Updated 3/3/2026

name: dingtalk-cron-job description: "钉钉渠道专用定时提醒技能。触发场景:用户提到任何时间点提醒、某时间做某事、循环提醒(如'每隔X分钟提醒我'、'下午3点提醒我'、'10分钟后叫我')时,必须使用 cron job。" metadata: {"openclaw": {"always": true}}

钉钉定时提醒

当用户提到任何与时间点提醒相关的内容时,必须使用exec直接调用 openclaw cron add 创建定时任务。不要用OpenClaw 内置的 cron 工具。

触发场景

以下情况必须使用 cron job:

  • "X点提醒我..."
  • "X分钟/小时后提醒我..."
  • "每隔X时间提醒我一次..."
  • "明天/后天X点..."
  • 任何涉及定时、延时、循环提醒的请求

命令模板

openclaw cron add \
  --name "<根据对话生成的任务名>" \
  --at "<时间>" \
  --session isolated \
  --message "直接输出以下内容(禁止调用工具):<具体提醒内容>" \
  --announce \
  --channel "clawdbot-dingtalk" \
  --to "<用户的senderStaffId>"

参数规则(必须严格遵守)

参数 规则 说明
--name 根据对话自动生成 简短描述任务,如"站立活动提醒"、"会议提醒"
--at 绝对时间需带时区 绝对时间用 ISO8601 且包含时区偏移或 Z,如 2026-02-02T14:30:00+08:00 / 2026-02-02T06:30:00Z;相对时间用 20m / 2h
--cron 循环任务用此参数 配合 --tz "Asia/Shanghai" 使用
--session 必须是 isolated 不可用 main,否则消息可能丢失
--message 必须以"直接输出以下内容"开头 见下方详细说明
--announce 建议显式写出 isolated 任务默认就是 announce 模式,但显式写出更明确意图
--channel 必须是 clawdbot-dingtalk 钉钉渠道固定值
--to 单聊用 senderStaffId;群聊用 dingtalk:group:<cid...> 群提醒见下方说明
--delete-after-run 循环任务不要加 --at 一次性任务默认自动删除,无需手动加

命令白名单(严格使用)

只允许使用以下命令做验证/排障,禁止自造变体:

openclaw cron run <job-id> --force --expect-final
openclaw cron runs --id <job-id> --limit 5
openclaw cron rm <job-id>

说明:

  • cron run 只接受位置参数 <job-id>,不要写 --id
  • cron runs 必须写 --id
  • --expect-final 用于等待最终回复,避免"看起来成功但无最终输出"

群聊提醒(本群/提醒所有人)

当用户说"在群里提醒大家/提醒本群"时,用群目标而不是用户 staffId:

  • --to "dingtalk:group:<cid...>"

示例:

openclaw cron add \
  --name "群打卡提醒" \
  --cron "0 17 * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --message "直接输出以下内容(禁止调用工具):该下班打卡啦~" \
  --announce \
  --channel "clawdbot-dingtalk" \
  --to "dingtalk:group:cidxxxxxxxx"

--announce--deliver

--announce--deliver 是同一功能的别名,--deliver 已弃用,请统一使用 --announce。它们的作用是把隔离任务输出投递到渠道/用户;不投递则只在内部/主会话可见。isolated 任务默认就是 announce 模式,但建议显式写出 --announce 以明确意图。

message 参数关键规则

核心理解--message 的内容会作为 prompt 发给一个隔离的 AI session。该 session 的 纯文本输出 会被 announce 机制自动投递给用户的钉钉。AI 不需要也不应该调用任何工具(如 message)来发送消息。

错误写法 ❌

--message "提醒用户:起来活动一下"

执行时 AI 会误认为需要调用 message 工具主动发送,导致因缺少 target 参数而报错 "Action send requires a target."。

正确写法 ✅

--message "直接输出以下内容(禁止调用工具):该起来活动一下了!久坐对身体不好,请起身走动几分钟。"

message 句式模板(固定前缀 + 实际内容)

  • 直接输出以下内容(禁止调用工具):<内容>
  • 直接生成一条关于<主题>的提醒并输出(禁止调用工具)

完整示例

一次性提醒(指定时间点)

用户说:"下午3点提醒我开会"

openclaw cron add \
  --name "开会提醒" \
  --at "2026-02-02T15:00:00+08:00" \
  --session isolated \
  --message "直接输出以下内容(禁止调用工具):下午3点的会议马上开始了,请准备参会。" \
  --announce \
  --channel "clawdbot-dingtalk" \
  --to "02482523065424091871"

一次性提醒(相对时间)

用户说:"20分钟后提醒我喝水"

openclaw cron add \
  --name "喝水提醒" \
  --at "20m" \
  --session isolated \
  --message "直接输出以下内容(禁止调用工具):该喝水了!保持水分很重要。" \
  --announce \
  --channel "clawdbot-dingtalk" \
  --to "manager9140"

循环提醒

用户说:"每2小时提醒我休息一下"

openclaw cron add \
  --name "定时休息提醒" \
  --cron "0 */2 * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --message "直接输出以下内容(禁止调用工具):已经过去2小时了,该休息一下眼睛和身体。" \
  --announce \
  --channel "clawdbot-dingtalk" \
  --to "manager9140"

每日固定时间提醒

用户说:"每天早上9点提醒我看日报"

openclaw cron add \
  --name "日报提醒" \
  --cron "0 9 * * *" \
  --tz "Asia/Shanghai" \
  --session isolated \
  --message "直接输出以下内容(禁止调用工具):早上好!该查看今日日报了。" \
  --announce \
  --channel "clawdbot-dingtalk" \
  --to "manager9140"

常见错误检查清单

创建任务前确认:

  • 绝对时间带时区(或 --cron 配合 --tz "Asia/Shanghai"
  • --session isolated 不是 main
  • --message 以"直接输出以下内容(禁止调用工具)"开头,不要用"提醒用户"句式
  • 使用了 --announce(显式声明投递意图)
  • 全局 cron.enabled 未被关闭,且未设置 OPENCLAW_SKIP_CRON=1
  • --channelclawdbot-dingtalk
  • --to 是正确的 senderStaffId

创建后最小验收(必须执行)

创建任务成功后,必须立刻做两步验收:

  1. 强制触发一次并等待最终输出
openclaw cron run <job-id> --force --expect-final
  1. 查看最近运行记录(确认 run log 已写入)
openclaw cron runs --id <job-id> --limit 5

若两步任一步失败,不要宣称"已稳定定时发送"。必须明确告知用户当前仅完成"任务创建",调度执行仍待确认。

失败告警模板(固定句式)

当最小验收失败时,直接使用类似以下文案:

已完成任务创建,但本次强制触发/运行记录校验未通过。 这通常表示调度器尚未实际执行。 我已给出可复现命令:openclaw cron run <job-id> --force --expect-finalopenclaw cron runs --id <job-id> --limit 5。 在看到有效 run 记录前,不应视为"已稳定定时发送"。

调试命令(仅限白名单)

# 查看所有任务
openclaw cron list

# 立即测试任务(强制 + 等待 final)
openclaw cron run <job-id> --force --expect-final

# 查看运行记录
openclaw cron runs --id <job-id> --limit 5

# 删除任务
openclaw cron rm <job-id>
Install via CLI
npx skills add https://github.com/AlibabaCloudDocs/openclaw-dingtalk --skill dingtalk-cron-job
Repository Details
star Stars 2
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator
AlibabaCloudDocs
AlibabaCloudDocs Explore all skills →