关于 cron-helper
cron-helper 是一项指导 Agent 使用 `openclaw cron` 命令行安排任务的技能。它区分在独立会话中执行任务与在主会话中发送简单通知,并说明何时记录任务变更。
主要功能
- 01指导创建和移除 cron 任务
- 02区分任务执行与通知
- 03支持单次及重复计划
- 04配置向聊天频道发送输出
- 05列出任务并查看运行历史
适用场景
- 01安排 Agent 定期执行任务
- 02设置一次性提醒
- 03将定时任务结果发送到聊天频道
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ tclawde/ openclaw-skills-user --skill cron-helper安装后在 Claude Code 中输入/cron-helper确认已加载。
附带文件package.json
详细介绍
Cron Helper Skill
用途: 指导我使用 openclaw cron CLI 执行基于时间的任务,并在创建/移除任务时发送日志。
适用场景:
- 用户请求周期性任务或提醒
- 用户提到“每隔 X 提醒我”
- 用户需要定时后台检查
- 用户希望 Agent 在特定时间执行任务
核心原则
始终优先使用 cron,而不是手动计时。
原因:我没有内置时钟。手动“自己追踪时间”会失败,因为我可能沉浸在阅读/思考中而忘记时间。Cron 是可靠的外部时钟。
主会话与隔离会话
隔离会话(任务首选)✅ 最佳实践
当你希望 Agent 实际执行任务时,使用 --session isolated:
- Agent 收到消息并执行任务
- 可以使用工具(exec、read、message 等)
- 可以将输出发送到频道
- 不会污染主对话历史
格式:
openclaw cron add \
--name "job_name" \
--cron "0 9 * * *" \
--session isolated \
--message "Task instructions for the agent" \
--deliver \
--channel feishu
主会话(仅限简单通知)
仅用于简单通知时,使用 --session main 和 --system-event:
- 只会在主聊天中显示一条消息
- Agent 不会执行任何任务
- 不会调用工具,也不会发送内容
格式:
openclaw cron add \
--name "reminder" \
--at "+30m" \
--session main \
--system-event "Reminder: check email"
我应该如何响应
第 1 步:识别请求
关键词:“每隔”“提醒”“安排”“定时”“每小时/每天/每周”“在 X 分钟后执行”
第 2 步:询问详情
向用户确认:
- 内容 - 任务描述或通知消息
- 时间 - 时间安排(例如,“每 2 小时”“每天上午 9 点”“10 分钟后”)
- 发送方式 - 是否需要将输出发送到聊天?(默认:否)
- 名称 - 任务名称(可选;未提供时自动生成)
第 3 步:创建 cron 任务
用于 Agent 任务(首选):
openclaw cron add \
--name "task_name" \
--at "+10m" \
--session isolated \
--message "Your task instructions here" \
--deliver \
--channel feishu
用于简单提醒:
openclaw cron add \
--name "reminder" \
--at "+10m" \
--session main \
--system-event "Your reminder message"
移除 cron 任务:
openclaw cron rm <job_id>
列出所有 cron 任务:
openclaw cron list
其他实用命令:
openclaw cron status # 查看调度器状态
openclaw cron run <job_id> # 立即触发任务
openclaw cron enable <job_id> # 启用任务
openclaw cron disable <job_id> # 禁用任务
openclaw cron runs <job_id> # 查看执行历史
发送选项
使用 --session isolated 时,可以将输出发送到聊天:
| 选项 | 说明 |
|---|---|
--deliver | 启用发送(向频道输出时必需) |
--channel <name> | 频道:feishu、telegram、slack、whatsapp 等 |
--to <dest> | 频道特定的目标(聊天 ID、电话号码等) |
--post-mode full | 发布完整输出,而非摘要 |
示例:
# Deliver to Feishu
--deliver --channel feishu
# Deliver to Telegram
--deliver --channel telegram --to "-1001234567890"
# Deliver with full output
--deliver --channel feishu --post-mode full
常用选项
| 选项 | 说明 |
|---|---|
--cron <expr> | Cron 表达式(5 字段,或带秒的 6 字段) |
--every <duration> | 每隔指定时长运行(例如,10m、1h) |
--at <when> | 在指定时间运行一次(ISO 格式或 +时长,支持 m/s) |
--tz <iana> | 时区(默认:本地) |
--session main|isolated | 目标会话(默认:main) |
--system-event <text> | 系统事件载荷(仅限主会话) |
--message <text> | Agent 消息载荷(仅限隔离会话) |
--delete-after-run | 成功后删除一次性任务 |
--disabled | 创建处于禁用状态的任务 |
第 4 步:发送日志
仅在创建/移除时:
创建或移除 cron 任务后,发送一条包含确切命令的日志:
日志格式:
# 新增任务
[HH:MM] CRON ✅
$ openclaw cron add \
--name "job_name" \
--at "+10m" \
--session isolated \
--message "task description" \
--deliver \
--channel feishu
# 删除任务
[HH:MM] CRON ❌
$ openclaw cron rm <job_id>
示例:
# 新增
[21:30] CRON ✅
$ openclaw cron add \
--name "daily-summary" \
--cron "0 9 * * *" \
--tz "Asia/Shanghai" \
--session isolated \
--message "总结今天的工作" \
--deliver \
--channel feishu
# 删除
[21:41] CRON ❌
$ openclaw cron rm 983a0f0e-0976-414a-b3d0-fd09c533e301
要点:
- 仅在创建/移除时发送日志,执行时不发送
- 保持精简:一个命令块,不添加额外文本
Cron → 人类可读时间映射(五位 - 分时日月周):
*/5 * * * *→ 每 5 分钟*/30 * * * *→ 每 30 分钟0 * * * *→ 每 1 小时0 */2 * * *→ 每 2 小时0 9 * * *→ 每天 1 次(09:00)0 10,22 * * *→ 每天 2 次(10:00、22:00)0 9 * * 1→ 每周 1 次(周一 09:00)
Cron → 人类可读时间映射(六位 - 秒分时日月周):
*/1 * * * * *→ 每 1 秒*/5 * * * * *→ 每 5 秒*/30 * * * * *→ 每 30 秒
最佳实践总结
| 使用场景 | 会话 | 载荷 | 发送 |
|---|---|---|---|
| Agent 执行任务 | isolated | --message | --deliver ✅ |
| 简单通知 | main | --system-event | ❌ |
经验法则: 如果你希望 Agent 执行某项操作(使用工具、发送消息),请使用 --session isolated + --message。
不要做的事
❌ 不要说“我会自己设置提醒”
❌ 不要尝试手动跟踪时间
❌ 需要 Agent 执行任务时,不要使用 --system-event
❌ 需要将输出发送到聊天时,不要忘记 --deliver
❌ 不要发送执行日志(仅在创建/移除时记录日志)
✅ 始终使用 openclaw cron CLI
✅ 对于 Agent 任务,使用 --session isolated
✅ 仅对于简单通知,使用 --session main
✅ 仅在创建/移除时发送日志
✅ 保持日志简洁清晰
常见的定时计划模式
五位 Cron(分 时 日 月 周)
| 频率 | Cron 表达式 | CLI 标志 |
|---|---|---|
| 每 5 分钟 | */5 * * * * | --cron "*/5 * * * *" |
| 每 30 分钟 | */30 * * * * | --cron "*/30 * * * *" |
| 每小时 | 0 * * * * | --cron "0 * * * *" |
| 每 2 小时 | 0 */2 * * * | --cron "0 */2 * * *" |
| 每天上午 9 点 | 0 9 * * * | --cron "0 9 * * *" |
| 每天两次(上午 10 点、晚上 10 点) | 0 10,22 * * * | --cron "0 10,22 * * *" |
| 每周(周一上午 9 点) | 0 9 * * 1 | --cron "0 9 * * 1" |
六位 Cron(秒 分 时 日 月 周)
| 频率 | Cron 表达式 | CLI 标志 |
|---|---|---|
| 每 1 秒 | */1 * * * * * | --cron "*/1 * * * * *" |
| 每 5 秒 | */5 * * * * * | --cron "*/5 * * * * *" |
| 每 30 秒 | */30 * * * * * | --cron "*/30 * * * * *" |
持续时间标志:
| 频率 | CLI 标志 |
|---|---|
| 每 10 分钟 | --every "10m" |
| 每 2 小时 | --every "2h" |
| 20 分钟后执行一次 | --at "+20m" |
| 20 秒后执行一次 | --at "+20s" |
安装技能后自动加载。