概述
/loop 让 Qoder CLI 重复运行同一个提示词或斜杠命令。它适合轮询状态、持续检查、周期性重复动作等场景,例如"每 5 分钟检查一次部署""盯着 CI 直到它变绿"。
节奏有两种模式,取决于你是否给出间隔:
| 模式 | 触发方式 | 节奏 |
|---|---|---|
| 固定间隔 | 给出间隔(/loop 5m …) | Qoder 把间隔换算成对应的周期计划并创建定时任务。 |
| 动态节奏 | 不给间隔(/loop monitor CI) | Qoder 先执行任务,再自行判断下一次什么时候值得跑(60s–3600s)。它一旦不再安排下次唤醒,循环即结束。 |
命令格式
interval:可选的时间间隔。给出时按固定间隔运行;省略时由 Qoder 自行掌握节奏。flags:可选。包括持久化(--durable、--permanent)与预算上限(--max-turns、--max-credits)。标记可以写在输入的任意位置,并会在调度前从提示词中剔除。prompt:要重复运行的提示词或斜杠命令。省略它且存在.qoder/loop.md文件时,Qoder 会改为循环执行该文件里的任务清单。
时间间隔语法
时间间隔由数字加单位组成,支持四种单位:
| 单位 | 含义 | 示例 |
|---|---|---|
s | 秒 | 30s |
m | 分钟 | 5m |
h | 小时 | 2h |
d | 天 | 1d |
30s 会被当作 1m,Qoder 会告诉你实际取整后的间隔。
间隔到 Cron 的转换规则:
| 间隔 | 对应计划 | 说明 |
|---|---|---|
Nm(N ≤ 59) | 每 N 分钟 | |
Nm(N ≥ 60) | 圆整为小时 | 需能整除 24 小时 |
Nh(N ≤ 23) | 每 N 小时 | |
Nd | 每 N 天午夜(本地时间) | |
Ns | 向上取整为分钟 | 最小 1 分钟 |
如果间隔不能整除其单位(例如7m会导致:56到:00的间隔不均匀,90m无法用整点表达),Qoder 会选择最接近的整齐间隔,并在创建前告诉你它取整成了什么。
两种写法
间隔可以写在开头,也可以用结尾的 every 子句表达:
- 开头的间隔:
/loop 5m check the deploy→ 间隔5m,提示词check the deploy。 - 结尾的 every 子句:
/loop check the deploy every 20m→ 间隔20m,提示词check the deploy。也支持every 5 minutes、every 2 hours这类自然表达。
every 只有在后面跟的是时间表达时才当作间隔。例如 /loop check every PR 中的 every 不是时间表达,会被当作提示词的一部分,因此该循环按动态节奏模式运行。
预算上限
循环会一直跑到过期或被你停掉,很容易花出超过预期的开销。两个标记可以给它设上限:
| 标记 | 含义 |
|---|---|
--max-turns N | 跑满 N 次后停止。N 为整数。 |
--max-credits N | 累计消耗 N 积分后停止。允许小数,因为单次运行往往不到 1 积分。 |
--max-turns=6)。只接受正数——上限为零会让循环在第一次运行前就被撤销。
上限的行为:
- 两个都设时,先到者停止循环。
- 轮次按任务的整个生命周期累计,不按会话。 重启 Qoder CLI 不会清零计数,因此无法靠重启绕过上限。
- 轮次在每次运行前判定,所以
--max-turns 2恰好触发两次,不会有第三次。 - 积分在一轮结束后记账,因此最后一轮可能略微超过上限(例如上限
3、实际3.2)。Qoder 不会中途掐断一轮,否则已经付费的工作会被丢掉。 - 触顶即彻底停止。 任务被移除,你会看到类似
Scheduled task a1b2c3d4 stopped: it used 2 of 2 turns.的提示。Qoder 也会收到同一条通知,因此它会如实汇报停止,而不是继续按"循环还在跑"推理。需要继续时,用新的上限重新起一个循环。 - 动态节奏模式下上限粘在循环上。 只需在启动循环的那次
/loop上给出一次,后续每次唤醒都继续生效。停止循环会同时清除上限与已用量,下一个/loop从零开始。
查看与修改用量
/crontab 打开定时任务面板,USAGE 列显示每个循环的消耗:
t 改轮次上限,按 b 改积分上限。输入空值即清除该上限。
持久化、自动失效与取消
默认情况下 /loop 创建的任务只属于当前会话:Qoder CLI 运行期间按计划触发,进程退出即消失。周期任务同时会在创建后 7 天 自动过期。
两个标记可以改变这一点:
| 标记 | 效果 |
|---|---|
--durable | 任务落盘,重启后仍然存在,且不自动过期。 |
--durable 30d | 任务落盘,并在 30 天后过期。 |
/crontab 面板中删除它,或者——在动态节奏模式下——直接让 Qoder 停止循环。
完整的参数、默认值和失效规则见 Loop 命令参考。
