Skip to main content

概述

定时任务让 Qoder CLI 在指定时间自动运行一个提示词或斜杠命令。你可以安排任务在未来某个时间点运行一次,也可以按照日历计划周期性地重复运行。它适合定时巡检、周期性报告、按计划触发的自动化等场景。 定时任务分两种:
  • 一次性任务(one-shot):在下一个匹配时间触发一次,然后自动删除。
  • 周期任务(recurring):按 Cron 计划反复触发,直到被删除或自动过期。

创建定时任务

在交互式会话中,用自然语言描述时间和要做的事,Qoder 就会为你创建定时任务。例如:
Qoder 会把你的描述解析成 Cron 表达式并创建任务。任务使用标准 5 字段 Cron 表达式(分钟、小时、日、月、星期),基于运行 CLI 的本地时区解释。 如果你想按固定时间间隔重复(例如”每 5 分钟”),使用更简单的 /loop,见 重复执行任务(/loop)

Cron 表达式

定时任务使用 5 字段 Cron 表达式:
支持的字段语法:通配符 *、单值 N、步进 */N、区间 N-M、列表 N,M,...。星期字段中 7 会被当作周日(等同 0)。 不支持 LW?、名称别名(如 MON),也不含秒级字段。 示例:
所有时间都按运行 CLI 的本地时区解释。例如 0 9 * * * 表示 CLI 所在时区的每天 9 点。

保存位置与持久化

定时任务的持久化行为分两种:
  • 持久化任务:写入项目根目录的 <project>/.qoder/scheduled_tasks.json,进程重启后仍然存在。
  • 会话内任务:只保存在内存中,当前会话结束后消失。
保存到磁盘的任务在文件里以任务列表形式存储,每个任务包含 id、cron 表达式、prompt、创建时间等字段。

运行限制

定时任务有以下限制:
  • 任务数量上限:最多 50 个任务。达到上限后需要先删除已有任务才能创建新任务。
  • 周期任务自动过期:周期任务在创建后 7 天 自动过期,除非更早被删除。需要长期运行的任务需重新创建。
  • 最小粒度:由于不含秒级字段,最小调度粒度是 1 分钟
  • 单进程驱动:同一项目目录由文件锁保证只有一个进程驱动调度,避免重复触发。
为了避免大量任务在同一时刻集中触发,调度器会为触发时间加入少量抖动:周期任务按下一周期长度的一小部分(最多 15 分钟)向后延迟;一次性任务在对齐到 30 分钟边界(整点和半点)时最多提前约 90 秒触发。

查看与删除

在会话中可以让 Qoder 列出当前的定时任务,或按 id 删除某个任务。例如:
创建任务时,Qoder 会返回该任务的 id,删除时用这个 id 指定要取消的任务。

错过的任务

如果 CLI 在某个任务本应触发的时间没有运行(例如进程当时未启动),该任务会被识别为”错过”。启动时 Qoder 会把错过的任务提示给你,便于你决定是否补跑或调整计划。 完整的字段、限制值和保存格式见 定时任务参考。