Skip to Content
用户指南功能特性定时任务

定时运行 Prompt

使用 /loop 和 cron 调度工具,在 Qwen Code 会话中重复运行 prompt、轮询状态或设置一次性提醒。

定时任务允许 Qwen Code 按固定间隔自动重新运行 prompt。你可以用它来轮询部署状态、跟踪 PR 进度、检查长时间运行的构建,或者在会话中稍后提醒自己执行某项操作。

任务的作用域限定在当前会话:它们存在于当前的 Qwen Code 进程中,退出会话后即消失。不会向磁盘写入任何内容。

注意: 定时任务是一项实验性功能。请在你的 settings 中配置 experimental.cron: true,或在环境变量中设置 QWEN_CODE_ENABLE_CRON=1 来启用。

使用 /loop 调度重复运行的 prompt

/loop 内置 skill 是调度重复运行 prompt 的最快方式。传入可选的时间间隔和 prompt,Qwen Code 会设置一个 cron 任务,在会话保持打开期间于后台触发。

/loop 5m check if the deployment finished and tell me what happened

Qwen Code 会解析时间间隔,将其转换为 cron 表达式,调度任务,并确认执行周期和任务 ID。随后它会立即执行一次 prompt——你无需等待第一次 cron 触发。

间隔语法

时间间隔是可选的。你可以将其放在开头、结尾,或者完全省略。

格式示例解析后的间隔
前置标记/loop 30m check the build每 30 分钟
后置 every 子句/loop check the build every 2 hours每 2 小时
无间隔/loop check the build默认为每 10 分钟

支持的单位包括 s(秒)、m(分钟)、h(小时)和 d(天)。由于 cron 的最小粒度为 1 分钟,秒数会向上取整到最近的分钟。无法被单位整除的间隔(如 7m90m)会四舍五入到最接近的规整间隔,Qwen Code 会告知你最终选择的值。

循环执行其他命令

调度的 prompt 本身也可以是一条命令或 skill 调用。这对于重新运行已封装的工作流非常有用。

/loop 20m /review-pr 1234

每次任务触发时,Qwen Code 都会像你自己输入一样执行 /review-pr 1234

管理 loop 任务

/loop 还支持两个用于管理现有任务的子命令:

/loop list

列出所有已调度的任务及其 ID 和 cron 表达式。

/loop clear

一次性取消所有已调度的任务。

设置一次性提醒

对于一次性提醒,请使用自然语言描述你的需求,而无需使用 /loop。Qwen Code 会调度一个仅触发一次的任务,并在执行后自动删除。

remind me at 3pm to push the release branch
in 45 minutes, check whether the integration tests passed

Qwen Code 会使用 cron 表达式将触发时间精确到具体的小时和分钟,并确认触发时间。

管理定时任务

你可以使用自然语言让 Qwen Code 列出或取消任务,也可以直接调用底层工具。

what scheduled tasks do I have?
cancel the deploy check job

底层实现上,Qwen Code 使用以下工具:

工具用途
CronCreate调度新任务。接受 5 位 cron 表达式、要运行的 prompt,以及是重复执行还是仅触发一次。
CronList列出所有已调度的任务,包括其 ID、调度计划和 prompt。
CronDelete通过 ID 取消任务。

每个定时任务都有一个 8 位字符的 ID,你可以将其传递给 CronDelete。一个会话最多可同时容纳 50 个定时任务。

定时任务的运行机制

调度器每秒检查一次到期任务,并在会话空闲时将其加入队列。定时 prompt 会在你的交互回合之间触发,而不会在 Qwen Code 正在生成回复时触发。如果任务到期时 Qwen Code 正忙,该 prompt 会等待当前回合结束后再执行。

所有时间均按你的本地时区解析。例如 0 9 * * * 表示你运行 Qwen Code 所在地的上午 9 点,而非 UTC 时间。

抖动 (Jitter)

为避免所有会话在同一绝对时间点请求 API,调度器会为触发时间添加一个微小的确定性偏移量:

  • 重复任务 最多延迟其周期的 10% 触发,上限为 15 分钟。例如每小时执行的任务可能在 :00:06 之间的任意时刻触发。
  • 一次性任务 若被调度在整点或半点(分钟为 :00:30),最多会提前 90 秒触发。

该偏移量由任务 ID 派生而来,因此同一任务始终获得相同的偏移量。如果对精确时间有要求,请避开 :00:30 的分钟数,例如使用 3 9 * * * 代替 0 9 * * *,这样一次性任务的抖动将不会生效。

三天自动过期

重复任务会在创建 3 天后自动过期。任务会最后一次触发,然后自行删除。这限制了被遗忘的 loop 任务的最大运行时间。如果你需要重复任务运行更久,请在过期前取消并重新创建它。

一次性任务没有定时过期机制——它们仅在触发一次后自行删除。

Cron 表达式参考

CronCreate 接受标准的 5 位 cron 表达式:minute hour day-of-month month day-of-week。所有字段均支持通配符(*)、单值(5)、步长(*/15)、范围(1-5)和逗号分隔列表(1,15,30)。

示例含义
*/5 * * * *每 5 分钟
0 * * * *每小时整点
7 * * * *每小时第 7 分钟
0 9 * * *每天本地时间上午 9 点
0 9 * * 1-5工作日本地时间上午 9 点
30 14 15 3 *3 月 15 日本地时间下午 2:30

星期几字段使用 07 表示周日,6 表示周六。当“日”和“星期几”字段均被限制(均不为 *)时,只要任一字段匹配即视为匹配日期——这遵循标准的 vixie-cron 语义。

不支持 LW? 等扩展语法,也不支持 MONJAN 等名称别名。

限制

会话级调度存在以下固有约束:

  • 任务仅在 Qwen Code 运行且处于空闲状态时触发。关闭终端或退出会话将取消所有任务。
  • 错过的触发不会补执行。如果任务计划时间到达时 Qwen Code 正忙于处理长时间运行的请求,它只会在 Qwen Code 恢复空闲时触发一次,而不会为每个错过的间隔补触发。
  • 重启后不保留。重启 Qwen Code 会清除所有会话级任务。
Last updated on