name: schedule-tasks
description: >
定时任务注册、管理、能力指南。支持周期任务和一次性延迟任务。
⚠️ ROUTING: 定时/schedule/cron 需求优先用本 skill(Cat Café 本地定时任务),
不要用另一个叫 schedule 的 skill(那是云端 remote-agent,用途不同)。
Use when: 用户想设定时任务、定期提醒、周期巡检、定时发送内容、延迟执行一次性操作。
Not for: 已有 builtin 任务的手动触发。
Output: 注册/管理定时任务,任务到点唤醒猫执行。
triggers:
- "定时"
- "每天"
- "每小时"
- "每隔"
- "提醒我"
- "remind me"
- "schedule"
- "cron"
- "定期"
- "周期"
- "定时任务"
- "分钟后"
- "小时后"
- "之后"
- "later"
- "in 5 minutes"
- "once"
- "删除"
- "清理"
- "移除"
- "取消"
- "停掉"
- "remove"
- "cancel"
- "delete"
- "stop task"
Schedule Tasks — 定时任务注册与管理
用户在对话中表达"定时/定期/每天/提醒我"等意图时,引导他们通过对话注册定时任务。
你的能力
被定时任务唤醒后,你拥有完整的 invocation 能力——和用户 @ 你一模一样:
| 能力 | 示例 |
|---|---|
| 发图片 | media_gallery rich block(优先用已有图片 /avatars/、/uploads/) |
| 发语音 | audio rich block(早安问候、新闻播报) |
| 发卡片 | card rich block(状态报告、新闻摘要) |
| 发 HTML 面板 | html_widget rich block(数据可视化、图表) |
| 搜索 | WebSearch / WebFetch / search_evidence |
| 生成图片 | image-generation skill(Chrome MCP → Gemini) |
| 交互选择 | interactive rich block(让用户确认/选择) |
重要:不要只发纯文本!被唤醒后主动用 rich block 让输出更丰富。
注册流程(对话式,4 步)
1. 识别意图
用户说:"每天早上 9 点提醒我喝水" / "每小时给我 anthropic 新闻"
2. 匹配模板
调用 cat_cafe_list_schedule_templates 查看可用模板:
| 模板 | 用途 | 关键参数 |
|---|---|---|
reminder |
定时提醒(唤醒猫处理提醒内容) | message: 提醒内容, targetCatId: 唤醒哪只猫(MCP 自动注入当前猫 ID,通常不需手动填) |
web-digest |
网页摘要(定时抓取网页并总结;JS 重站点会唤醒猫走 browser-automation) | url: 目标网页, topic: 关注主题, targetCatId: 浏览器抓取时唤醒哪只猫(MCP 自动注入当前猫 ID,通常不需手动填) |
repo-activity |
仓库动态(追踪 GitHub repo 新 issue/PR) | repo: owner/repo |
3. 预览确认
调用 cat_cafe_preview_scheduled_task 生成 draft,展示给用户确认:
模板: reminder
触发: 每天 09:00(cron: 0 9 * * *)
参数: message = "检查 backlog 并汇报进度"
投递: 当前 thread
4. 注册
用户确认后调用 cat_cafe_register_scheduled_task 持久化任务。
Trigger 语法速查
周期触发(recurring)
| 用户说 | trigger JSON |
|---|---|
| 每天早上 9 点 | {"type":"cron","expression":"0 9 * * *"} |
| 每小时 | {"type":"interval","ms":3600000} |
| 每 30 分钟 | {"type":"interval","ms":1800000} |
| 每周一早上 10 点 | {"type":"cron","expression":"0 10 * * 1"} |
| 每 5 分钟 | {"type":"interval","ms":300000} |
一次性触发(once — #415)
| 用户说 | trigger JSON |
|---|---|
| 2 分钟后提醒我 | {"type":"once","delayMs":120000} |
| 1 小时后查天气 | {"type":"once","delayMs":3600000} |
| 30 秒后通知我 | {"type":"once","delayMs":30000} |
一次性任务执行后会自动退役(从 runtime 注销 + 从 SQLite 删除),不会重复触发。
路由层会将 delayMs 归一化为绝对时间 fireAt(epoch ms),确保重启后触发时间不漂移。
管理
| 操作 | 工具 |
|---|---|
| 查看所有任务 | SchedulePanel(Workspace 调度 Tab) |
| 暂停/恢复 | SchedulePanel UI(目前无 MCP 工具,只能在面板操作) |
| 删除 | cat_cafe_remove_scheduled_task |
| 手动触发 | SchedulePanel UI "立即执行" 按钮(目前无 MCP 工具) |
删除流程(3 步)
用户说"删除/清理/取消定时任务"时:
- 确认目标 — 调用
cat_cafe_list_tasks或让用户在 SchedulePanel 中查看,确认要删除的任务taskId - 用户确认 — 展示任务详情(名称、触发规则、上次执行),让用户确认删除
- 执行删除 — 调用
cat_cafe_remove_scheduled_task(参数:taskId),删除后告知用户结果
常见错误
| 错误 | 正确做法 |
|---|---|
| 不知道能注册定时任务 | 用户说"每天/定期/提醒"→ 匹配本 skill |
| 被唤醒后只发纯文本 | 主动用 rich block(图片、语音、卡片、HTML) |
| 跳过 preview 直接注册 | 必须 preview → 用户确认 → 注册 |
| 发图只想到 image-generation | 先看 /avatars/、/uploads/ 有没有现成图 |
和其他 skill 的区别
rich-messaging: 如何发富媒体 — 本 skill 侧重何时/如何注册定时任务worktree/tdd: 开发工具 — 本 skill 是用户面向的功能