Task Scheduler — 任务调度器
v1.0.0安排任务和命令在特定时间运行。根据cron时间表执行shell命令、agent任务、API调用和自动化。已在Telegram和Discord上测试。
运行时依赖
安装命令
点击复制技能文档
调度器 使用自然语言在计划时间执行任务和命令。运行 shell 命令、代理任务、API 健康检查、文件操作和自动化 —— 一次性或重复执行。
用法 /schedule 运行 npm test 5 分钟后 /schedule git pull origin main 明天 6 点 /schedule 生成每周销售报告,每周一 9 点 /schedule 检查 https://api.example.com/health 每 30 分钟 /schedule 清理 /tmp 文件,每天 3 点静默执行 /schedule 备份数据库,每周日 2 点 /schedule 重启服务器 10 分钟后静默执行 /schedule 列表 /schedule 取消
代理指令 当用户触发 /schedule 时,确定意图: 列表 → 调用 cron.list 并显示活动计划任务。 取消 / 删除 / 移除 → 调用 cron.remove 并传入 jobId。 其他所有内容 → 创建新的计划任务(以下步骤)。
步骤 1:解析输入 提取四件事情:WHAT(要执行的任务)、WHEN(时间)、RECURRENCE(一次性或重复)、DELIVERY(宣布结果或静默运行)。
识别任务(WHAT) 将用户的请求分类为任务类型: 任务类型 触发词 代理动作 Shell 命令 运行、执行、做、命令样式(npm、git、docker、curl、python) 使用 Bash 工具执行命令 代理任务 生成、总结、分析、写、创建、编译、审查 使用可用的代理工具执行任务 API/健康检查 检查、ping、hit、调用、URL 模式(https://...) 获取 URL 并报告状态 文件操作 清理、备份、复制、移动、归档、压缩 使用可用的工具执行文件操作 自定义提示 其他内容 以自由形式代理提示执行
WHAT 变成 payload.message —— 代理唤醒执行时的明确指令。
识别时间(WHEN) 使用与 remindme 技能相同的时间解析管道: 第 1 层:模式匹配 扫描以下模式(第一个匹配获胜): 相对时长 —— 在 : 模式 时长 in Ns、in N 秒 N 秒 in Nm、in N 分钟、in N 分钟 N 分钟 in Nh、in N 小时 N 小时 in Nd、in N 天 N 24 小时 in Nw、in N 周 N 7 天 绝对时钟时间 —— 在 : 模式 含义 at HH:MM、at H:MMam/pm 今天在该时间(或明天如果已过) at Ham/pm、at HH 今天在该小时 命名天: 模式 含义 明天 下一个日历天,缺省 9 点 今晚 今天 8 点 下周一...周日 即将发生的事件,缺省 9 点 重复 —— 每 : 模式 计划 每 Nm/Nh/Nd 种: "every",everyMs: N unit_ms 每天在 种: "cron",expr: "M H " 每个星期几在 种: "cron",expr: "M H DOW" 每个工作日在 种: "cron",expr: "M H 1-5" 每个周末在 种: "cron",expr: "M H 0,6" 每小时 种: "every",everyMs: 3600000 单位转换表: 单位 毫秒 1 秒 1000 1 分钟 60000 1 小时 3600000 1 天 86400000 1 周 604800000
第 2 层:口语和缩写短语 解析为 在一会儿,稍后 30 分钟 一会儿 1 小时 稍后,今天 3 小时 一天结束,eod 今天 5 点 一周结束,eow 周五 5 点 早晨 9 点 下午 2 点 晚上 6 点 午夜 12 点 第二天 中午 12 点
第 3 层:模糊性 —— 询问,不要猜测 如果无法确定 WHEN,请询问用户。永远不要默默地选择默认时间。
识别传递模式(DELIVERY) 用户说 传递模式 静默、安静、在后台、无输出 "none" —— 不报告结果 未指定,或报告、显示结果、宣布 "announce" —— 将任务输出发送到频道
步骤 2:计算计划时间 时区规则:始终使用用户的本地时区(系统时区)。永远不要默认为 UTC。 一次性 → 带有用户本地时区偏移的 ISO 8601 时间戳。如果计算出的时间在过去,请跳转到下一个发生时间。 重复(cron) → 带有 tz 设置为用户的 IANA 时区的 5 字段 cron 表达式。 重复(间隔) → kind: "every",everyMs 以毫秒为单位。
步骤 3:安全检查 在计划之前,检查任务是否涉及破坏性操作: 破坏性模式(需要显式用户确认): 文件删除:rm、del、remove、wipe、clean(除非清理临时/缓存) 数据库:drop、truncate、delete from、destroy Git:reset --hard、push --force、branch -D 系统:kill、shutdown、reboot、format 网络:iptables、firewall、ufw 如果检测到破坏性模式: 警告用户: "此任务涉及破坏性操作 ()。您确定要计划此任务吗?" 仅在获得明确确认后继续。 在作业名称中包含 [CONFIRMED DESTRUCTIVE] 以进行审计跟踪。 安全模式(无需确认): 只读:ls、cat、git status、git log、curl GET、ping 构建/测试:npm test、npm build、make、cargo test 报告:generate、summarize、analyze、compile report
步骤 4:检测传递频道 与 remindme 相同的优先顺序: 显式覆盖 —— 用户说 "on telegram" / "on discord" 等。 当前频道 —— 如果从外部频道发送消息,则在那里传递。 首选频道 —— 从 MEMORY.m 中。