← 返回 Skill 列表
extension
分类: 开发与工程API Key 暂未确认

111

【MUST exec】只处理 OpenClaw「原生 cron / Monitor Cron」。触发必须包含明确关键词:列出原生 cron、OpenClaw cron 有哪些、Monitor Cron 任务、迁移 cron、原生定时转 Hub、删除已迁移的原生 cron。 重要:用户若只说「定时任务 / 有哪些任务 / 列表」但未提“原生 cron/Monitor”,默认按 **Hub 定时任务** 处理,应走 `hub-job-task-manager`(不要触发本 Skill)。流程:先 list → migrate → 用户确认后再 delete-native。本 Skill 允许只读原生 cron(经 cron-migrate.sh);不要用 hub-job-task-manager 拒绝,也不要让用户去截 Monitor。日常 Hub CRUD 用 hub-job-task-manager。

person作者: baobaohuhubModelScope

Hub Cron Migrator — 原生 cron → Hub 定时任务

🚨 何时:用户只要「列出原生 cron」

重要澄清:仅当用户明确提到「原生 cron / Monitor Cron」相关内容时,本 Skill 才能被调用。若用户只说「定时任务/有哪些任务/清单」,一律当成 Hub 定时任务,改走 hub-job-task-manager。

即使用户只说「列出 OpenClaw 原生 cron / 看看原生定时任务有哪些」,也必须:

bash "$SKILL_SCRIPT" list

把脚本 stdout 贴给用户。
❌ 禁止说「做不到 / 被 Hub Skill 禁止 / 请去 Monitor 截图」。
❌ 禁止改去调 job-task-api.sh(那是 Hub 任务,不是原生 cron)。

若 cron-migrate.sh 不存在:说明未安装/未绑定 hub-cron-migrator,如实告知并请绑定本 Skill;仍不要编造「策略禁止列原生」。

🚨 固定三步(迁移时不得跳步、不得合并)

| 步骤 | 用户意图 | 必须 exec | 之后 Agent 回复 | |------|----------|-----------|-----------------| | 1. 列出 | 列出原生 cron / 迁移前预览 | list | 贴脚本输出;标出可迁 / 需补参 / 不支持 | | 2. 迁移 | 确认迁哪些、补齐通知等之后 | migrate ... | 只汇报 Hub 创建结果;明确问:「确认无误后我将删除对应原生 cron,请回复确认」 | | 3. 删除原生 | 用户明确确认删除 | delete-native --confirm yes ... | 贴删除结果 |

硬规则:

  • ❌ 未先 list 就 migrate
  • ❌ migrate 成功后立刻 delete-native(必须等用户下一轮明确确认)
  • ❌ 用户未说「确认 / 同意删除 / 可以删」等同义确认就删原生
  • ❌ 用本 Skill 做日常「新建定时任务」(那是 hub-job-task-manager)
  • ❌ 调用内置 cron.add / 双写;本 Skill 只读原生列表,仅在步骤 3 删除已迁移项
  • ❌ 编造 jobId / taskId;一切以脚本 stdout 为准

缺参(飞书人、是否回写会话、微调 cron/prompt)在会话里问清,或让用户去 定时任务管理端 改;脚本不会猜飞书收件人。


脚本路径

SKILL_SCRIPT=$(ls /home/node/.openclaw/skills/hub-cron-migrator*/scripts/cron-migrate.sh 2>/dev/null | head -1)

每轮涉及迁移的操作前,先:

bash "$SKILL_SCRIPT" context

命令

1) 列出原生 cron

bash "$SKILL_SCRIPT" list

输出每条:nativeJobId、名称、schedule、分类(compatible / needs_params / unsupported)、原因、建议 Hub cron / prompt 摘要。

2) 迁移到 Hub(不删原生)

# 迁指定原生任务(可多次 --job-id)
bash "$SKILL_SCRIPT" migrate --job-id <nativeJobId> [--job-id ...] \
  [--notify-channel toc_chat|feishu|both|none] \
  [--notify-user email] [--notify-group chatId]

# 仅迁 list 里标记为 compatible 的(仍建议先 list 给用户看过)
bash "$SKILL_SCRIPT" migrate --all-compatible [--notify-channel toc_chat]

默认 notify-channel=toc_chat(绑当前 ToC 会话)。要飞书时必须带 --notify-user 和/或 --notify-group。

成功后脚本会写入迁移状态文件;仍保留原生 cron。

3) 用户确认后再删原生

# 删除本轮/状态文件中已成功迁移的原生任务
bash "$SKILL_SCRIPT" delete-native --confirm yes

# 或只删指定 nativeJobId(仍须 --confirm yes)
bash "$SKILL_SCRIPT" delete-native --confirm yes --job-id <nativeJobId>

没有 --confirm yes 时脚本拒绝执行。


分类规则(脚本为准)

| 分类 | 条件 | |------|------| | compatible | schedule.kind=cron 且 payload 为 agentTurn/文本提示,可转 Quartz | | needs_params | 可转,但 delivery 含 announce/飞书等需用户指定 Hub 通知 | | unsupported | every / at / command 脚本类,或无法解析表达式 |

needs_params:会话补参后再 migrate(带 notify 参数),或先 migrate --notify-channel none|toc_chat 再在管理端改通知。


回复模板

list 后: 原样归纳脚本表格;请用户选择要迁的 nativeJobId,并确认通知方式。

migrate 后(必须含确认问句):

  1. 成功:nativeJobId → Hub taskId、名称、cron
  2. 失败:脚本错误原文
  3. 固定结尾:「原生 cron 尚未删除。请核对 Hub 定时任务管理端或本会话任务列表;确认无误后回复「确认删除原生 cron」,我再执行删除。」

delete-native 后: 贴删除成功/失败的 nativeJobId;提醒可在 Monitor「Cron 任务」核对是否已清空对应项。


与 hub-job-task-manager 的边界

| 能力 | 本 Skill | hub-job-task-manager | |------|----------|----------------------| | 列/迁/删原生 cron | ✅ | ❌(禁止碰原生) | | 日常创建/改/删 Hub 任务 | ❌ | ✅ |