Cron 精确调度
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @u_2c58090c/cron-precision-scheduler。
技能介绍
先说清楚要解决的问题
Agent 的会话通常是轮询式的:网关每隔一段时间唤醒一次会话,检查有没有新请求。这种机制叫 心跳(heartbeat),典型周期是 30 到 60 分钟。问题在于,用户说「10 分钟后提醒我」时,系统如果靠心跳顺便检查一下,实际触发时间取决于下一次唤醒落在哪里——可能要等 40 分钟。心跳会漂移,cron 不会,这是本技能唯一的核心准则。
技能如何工作
技能把时间管理拆成两类机制,并强制区分使用:
act:wait(内联阻塞等待):只用于短延迟交互,延迟超过 1 分钟时被明确禁止。cron:add(一次性 at 调度):用于「X 分钟后」「明天 9 点」这类需要准点触发的场景,配合wakeMode: "now"让调度后立即唤醒。- 周期任务:用标准 cron 表达式或
schedule.kind: "cron"创建每小时、每天、每周的重复任务。 - 任务清理:一次性任务设置
deleteAfterRun: true执行后自动删除;历史遗留任务由 Janitor 通过systemEvent投递到主会话统一清理。
另外有两个容易踩坑的点。时区锁定要求在调度前把用户时区写入 MEMORY.md,时间戳统一使用 ISO 8601 带偏移格式(如 2026-02-06T21:00:00+08:00),避免「晚上 9 点」在不同时区下指向不同时刻。推送通道支持企业微信、钉钉、飞书,负载选 AgentTurn 加严格指令做主动推送,静默后台日志则用 systemEvent。文档还提供了 ERR-001 到 ERR-008 八个结构化错误码,覆盖任务未触发、时区错位、everyMs 秒与毫秒单位混淆、状态文件损坏等常见根因,并给出可执行的排查步骤。
适用边界与注意点
- 精度是分钟级而非毫秒级,实际执行延迟受网关心跳周期约束,大约在 10 到 60 秒之间。
- 不能脱离 LLM 独立运行,依赖 Agent 平台及其内置模型。
- 调度只作用于当前 Agent 会话,不等同于操作系统级
crontab,也不能跨 Agent 实例共享任务状态。 - 不支持「每月最后一个工作日」或农历节日这类复杂日历规则。
- 任务状态存储在
~/.skill-platform/state/cron/jobs.json,外部进程修改或写入中断都会导致丢失,建议对关键任务保留创建参数以便重建。 - 创建前先执行
cron:list检查同名任务,推送通道至少配置两个互为备份。
使用场景
- 需要在当天某个具体时刻收到一条提醒,例如「下午 3 点提醒我提交周报」,用来创建一个一次性的准点触发任务
- 需要每天或每周固定时间自动产出内容,例如每天早 8 点生成当日数据摘要,用来配置周期性 cron 任务
- 需要在无人值守时检查服务状态,例如每小时巡检一次接口可用性,结果以静默 systemEvent 日志形式写入后台
- 需要清理历史遗留的一次性任务和过期周期任务,例如删除 deleteAfterRun 为 false 的残留项,避免任务列表堆积
适合人员
- 负责值班巡检的运维工程师,需要在无人值守时按小时检查服务状态并留下日志记录
- 需要定期汇总数据并主动通知团队成员的数据分析师,诉求是每天固定时刻产出报告并推送到群
- 构建自动化工作流的 Agent 平台开发者,诉求是把 cron 调度接入会话并正确处理时区与任务清理
- 需要跨时区安排提醒的产品或市场人员,诉求是避免「晚上 9 点」这类表述在不同时区下触发错位