概述
- 一次性任务(one-shot):在下一个匹配时间触发一次,然后自动删除。
- 周期任务(recurring):按 Cron 计划反复触发,直到被删除或自动过期。
创建定时任务
/loop,见 重复执行任务(/loop)。
Cron 表达式
*、单值 N、步进 */N、区间 N-M、列表 N,M,...。星期字段中 7 会被当作周日(等同 0)。
不支持 L、W、?、名称别名(如 MON),也不含秒级字段。
示例:
| Cron | 含义 |
|---|---|
*/5 * * * * | 每 5 分钟 |
0 * * * * | 每小时整点 |
0 9 * * * | 每天上午 9:00 |
30 14 28 2 * | 2 月 28 日下午 2:30(当年一次) |
0 10 * * 1 | 每周一上午 10:00 |
0 9 * * 1-5 | 工作日上午 9:00 |
所有时间都按运行 CLI 的本地时区解释。例如 0 9 * * * 表示 CLI 所在时区的每天 9 点。
保存位置与持久化
- 持久化任务:写入项目根目录的
<project>/.qoder/scheduled_tasks.json,进程重启后仍然存在。 - 会话内任务:只保存在内存中,当前会话结束后消失。
运行限制
- 任务数量上限:最多 50 个任务。达到上限后需要先删除已有任务才能创建新任务。
- 周期任务自动过期:周期任务在创建后 7 天 自动过期,除非更早被删除。需要长期运行的任务需重新创建。
- 最小粒度:由于不含秒级字段,最小调度粒度是 1 分钟。
- 单进程驱动:同一项目目录由文件锁保证只有一个进程驱动调度,避免重复触发。