/loop によるループ実行のパラメーター形式、間隔の単位、予算上限、既定値、およびキャンセル方法
/loop Qoder CLI を使用して、プロンプトまたはスラッシュコマンドを繰り返し実行できます。固定間隔での実行(内部では定期タスクシステムによって実装)と、Qoder 自身がペースを決める実行の 2 つがあります。本ページでは、パラメーター形式、間隔の変換、予算上限、およびキャンセル方法について説明します。ループ実行の使用方法については、タスクの繰り返し実行 を参照してください。
使い方
[間隔](省略可):実行間隔。指定すると固定間隔モード、省略すると動的ペース配分モードになります。[フラグ](省略可):永続化と予算上限。下表を参照してください。<プロンプト>(必須):繰り返し実行するプロンプトテキストまたはスラッシュコマンド。スラッシュコマンドはそのまま渡されます。
2 つのモード
| モード | 選択条件 | メカニズム |
|---|---|---|
| 固定間隔 | 入力に間隔が含まれる | 間隔が cron 式に変換され、定期タスクとして登録されます。 |
| 動的ペース配分 | 入力に間隔が含まれない | 各実行の後、Qoder 自身が次の起動をスケジュールします。遅延は [60, 3600] 秒に制限されます。スケジュールしなければループは終了します。 |
- 引数なしの
/loop:.qoder/loop.mdが存在する場合、Qoder は動的ペース配分モードでそのタスクリストを繰り返し実行します。存在しない場合は使用方法のヒントが表示されます。 /loop 5m(間隔のみでプロンプトなし):使用方法のヒントが表示されます。- フラグのみでプロンプトなし(例:
/loop --max-turns 3):Qoder は各イテレーションでプロジェクトの一般的なヘルスチェックを行います(動的ペース配分モード)。
フラグ
| フラグ | 値 | 説明 |
|---|---|---|
--durable | — | タスクをディスクに保存し、再起動後も維持します。自動失効はしません。 |
--durable <N>d | 日数 | タスクをディスクに保存し、N 日後に失効させます。 |
--permanent、-p | — | 失効期限なしの --durable と同等です。 |
--max-turns <N> | 整数 | N 回実行したらループを停止します。 |
--max-credits <N> | 数値 | 累計 N クレジットを消費したらループを停止します。小数も指定できます。 |
- 上限はスペース形式(
--max-turns 6)とイコール形式(--max-turns=6)の両方に対応します。 - フラグは入力内のどこに書いても構いません。間隔の解析より先に取り除かれるため、
/loop --max-turns 5 10m check the deployの間隔は5ではなく10mと解釈されます。 - 同じフラグが繰り返された場合は最初の値が採用され、すべての重複はプロンプトから削除されます。
--durableと--permanentは固定間隔のループに適用されます。動的ペース配分のループは常に現在のセッションにのみ存在します。
間隔の単位
間隔は数値と単位を表すサフィックスで構成されます。
| サフィックス | 単位 | 説明 |
|---|---|---|
s | 秒 | 最も近い分に切り上げます(最小粒度は 1 分)。 |
m | 分 | N 分ごと。 |
h | 時間 | N 時間ごと。 |
d | 日 | N 日ごと(ローカル時間の深夜 0 時にトリガー)。 |
最小粒度は 1 分です。秒単位の間隔は ceil(N/60) 分に切り上げられ、切り上げ時には通知が表示されます。
解析ルール
フラグを取り除いた後、/loop は以下の優先順位で残りの入力を解析します。
- 先頭のトークン:最初の単語が
^\d+[smhd]$(例:5m、2h)に一致する場合、それを間隔とし、残りをプロンプトとします → 固定間隔モード。 - 末尾の every 句:該当しない場合、入力が
every <N><単位>またはevery <N> <単位>で終わる場合(例:every 20m、every 5 minutes)、それを間隔として抽出し、プロンプトから削除します → 固定間隔モード。everyの直後に時間表現が続く場合にのみ一致します。check every PRには間隔が含まれません。 - それ以外:間隔は含まれず、入力全体がプロンプトとなります → 動的ペース配分モード。
例
間隔から cron への変換
| 間隔パターン | cron 式 | 説明 |
|---|---|---|
Nm(N ≤ 59) | */N * * * * | N 分ごと |
Nm(N ≥ 60) | 0 */H * * * | 時間に変換(H = N/60、24 で割り切れる必要がある) |
Nh(N ≤ 23) | 0 */N * * * | N 時間ごと |
Nd | 0 0 */N * * | N 日ごとの深夜 0 時 |
Ns | ceil(N/60)m とみなす | cron の最小粒度は 1 分 |
7m は不均等な間隔を生成する、90m は cron で表現できない)、最も近い均等な間隔が選択され、タスク作成前に丸め結果が通知されます。
予算上限
上限は「到達したら停止する」値であり、「超えてよい」値ではありません。使用量が上限に達した時点でループは停止します。両方を指定した場合は先に到達した方が停止させ、同時に到達した場合は実行回数の上限がメッセージに表示されます。
| 上限 | カウント対象 | 判定タイミング | 精度 |
|---|---|---|---|
--max-turns | タスクの全期間における実行回数 | 各実行の前 | 正確です。--max-turns 2 はちょうど 2 回トリガーされます。 |
--max-credits | 累計消費クレジット | 1 回の実行が計上された後 | 最後の実行は上限を少し超えることがあります。実行中のものが打ち切られることはありません。 |
- 指定できるのは正の数のみです。スケジュール用ツールは
0や負の数を黙って無視せずエラーとして拒否します。また既存のタスクファイルに非正の上限があった場合、読み込み時に破棄され、そのタスクは上限なしとして扱われます。 - 実行回数は全期間の累計です。Qoder CLI を再起動してもリセットされません。
- 上限への到達と失効は別のものです。上限に到達したタスクは削除され、再開はできません。続行するには新しいループを作成してください。
- 上限に到達すると、あなたと Qoder の両方に通知されます。画面には
Scheduled task <id> stopped: it used 2 of 2 turns.(動的ペース配分モードではLoop stopped: it used 3 of 3 turns.)が表示され、Qoder はタスクを作り直すのではなく停止をそのまま報告するよう指示されます。
保存されるフィールド
永続化されたタスクでは、上限と使用量が他のフィールドとともに .qoder/scheduled_tasks.json に保存されます。
| フィールド | 説明 |
|---|---|
fireCount | 全期間の実行回数。maxTurns と比較されます。 |
creditsUsed | 累計消費クレジット。値がない場合は未計測を意味し、0 とは異なります。 |
maxTurns | 実行回数の上限。値がなければ上限なしです。 |
maxCredits | クレジットの上限。値がなければ上限なしです。 |
動的ペース配分モードの上限
動的ペース配分モードでは、上限と使用量はループが続く間メモリ上に保持されます。
- 固定される:ループを開始する
/loopでフラグを指定すれば、以降のすべての起動に適用されます。後続の起動でフラグを指定し直さなくても上限は解除されません。 - 停止でリセット:ループを停止すると上限と使用量の両方がクリアされ、次の
/loopは前のループの消費を引き継がずゼロから始まります。 - 上限に到達すると保留中の起動はキャンセルされ、ループは再び起動しません。
ツールパラメーター
Qoder 自身がタスクをスケジュールする際にも同じ上限を指定できるため、自然言語で依頼することもできます(「5 回確認したら止めて」)。
| ツール | パラメーター |
|---|---|
| 定期タスクの作成 | maxTurns、maxCredits — 応答では Stops after N turns or M credits. の形で示されます。 |
| 動的ペース配分の起動 | maxTurns、maxCredits — ループ全体に固定して適用されます。 |
パネルの操作
/crontab パネルでは:
USAGE列は、上限が指定されている場合は3/10 turns · 12.5/50 credits、指定されていない場合は2 turns · 8.25 creditsと表示します。消費が未計測の場合は、消費額の部分がダッシュになります(—/50 credits)。まだ実行されておらず上限もないタスクでは空欄になります。- タスクの詳細ページには
Turns 3 / 10 (stops at the limit)とCredits 12.5 / 50 (stops at the limit)が表示されます。 tキーで実行回数の上限、bキーでクレジットの上限を編集できます。空の値で上限を解除し、非正の値は受け付けられず、Escでキャンセルします。
キャンセルと無効化
- 既定ではセッション単位の定期タスクとして作成され、プロセス終了とともに停止します。
- 定期タスクは作成後 7 日 で自動的に期限切れになります(
--durableで失効なし、--durable <N>dで任意の期限を指定した場合を除く)。 - 期限切れ前に、対応する定期タスクを手動で削除できます(エージェントに自然言語で削除を要求してタスク ID を提供する、または
/crontabパネルから削除する)。 - 動的ペース配分モードでは、Qoder に停止を指示するとループが終了し、保留中の起動もキャンセルされます。
- ループタスクを作成すると、最初の cron トリガーを待たずに、現在のプロンプトが 即座に 1 回実行されます。
次のステップ
- /loop の使用ガイド:タスクの繰り返し実行。
- 定期タスクの内部メカニズム:定期タスクリファレンス。