Skip to main content
タスクの自動化

タスクの繰り返し実行

概要

/loop を使用すると、Qoder CLI で特定のプロンプトやスラッシュコマンドを繰り返し実行できます。ステータスのポーリング、継続的なチェック、定期的なアクションの繰り返しなどのシナリオに適しており、例えば「5分ごとにデプロイを確認する」「CI がグリーンになるまで見張る」といった用途に活用できます。 ペース配分には 2 つのモードがあり、間隔を指定するかどうかで決まります。
モード選択方法タイミング
固定間隔間隔を指定する(/loop 5m …Qoder が間隔を対応する定期スケジュールに変換し、スケジュールタスクを作成します。
動的ペース配分間隔を省略する(/loop monitor CIQoder はまずタスクを実行し、その後、次の実行をいつ行う価値があるかを自ら判断します(60秒〜3600秒)。次の起動をスケジュールしなくなった時点でループは終了します。
より正確なカレンダースケジュール(例:「毎週月曜日の午前9時」)が必要な場合は、スケジュール実行タスクを使用してください。詳細は定期実行タスクを参照してください。

コマンド形式

/loop [interval] [flags] <prompt>
  • interval:オプションの時間間隔。指定すると固定間隔で実行され、省略すると Qoder が自らペースを決めます。
  • flags:オプション。永続化(--durable--permanent)と予算上限(--max-turns--max-credits)があります。フラグは入力内のどこに書いても構わず、スケジュールされる前にプロンプトから取り除かれます。
  • prompt:繰り返し実行するプロンプトまたはスラッシュコマンド。省略し、かつ .qoder/loop.md が存在する場合は、Qoder はそのタスクリストを繰り返し実行します。
例:
/loop 5m /babysit-prs
/loop 30m check the deploy
/loop 1h /standup 1
/loop check the deploy every 20m
/loop monitor CI pipeline                    # 間隔なし。Qoder がタイミングを決定
/loop 10m --max-turns 6 check the deploy     # 6 回実行したら停止
作成後、Qoder は最初の周期まで待機せず、即座に1回そのプロンプトを実行します。

時間間隔の構文

時間間隔は数値と単位で構成され、4種類の単位がサポートされています。
単位意味
s30s
m5m
h時間2h
d1d
最小粒度は1分です。 基盤となるスケジューラーには秒単位のフィールドが含まれていないため、秒は最も近い整数分に切り上げられます。例えば、30s1m として扱われ、Qoder は実際に切り上げられた後の間隔を通知します。 時間間隔から Cron への変換ルール:
間隔対応するスケジュール説明
Nm(N ≤ 59)N分ごと
Nm(N ≥ 60)時間に丸める24時間で割り切れる必要がある
Nh(N ≤ 23)N時間ごと
NdN日ごとの真夜中(ローカルタイムゾーン)
Ns分に切り上げ最小1分
間隔がその単位で割り切れない場合(例えば、7m:56 から :00 までの間隔が不均等になり、90m は整数の時間で表現できません)、Qoder は最も近い均等な間隔を選択し、作成前にどのような値に丸められたかを通知します。

2つの記述方法

時間間隔は先頭に記述することも、末尾の every 句で表現することもできます。
  • 先頭の時間間隔/loop 5m check the deploy → 間隔 5m、プロンプト check the deploy
  • 末尾の every 句/loop check the deploy every 20m → 間隔 20m、プロンプト check the deployevery 5 minutesevery 2 hours といった自然な表現もサポートされています。
every は、その後に時間の表現が続く場合にのみ時間間隔として扱われる点に注意してください。例えば、/loop check every PRevery は時間の表現ではないため、プロンプトの一部として扱われ、このループは動的ペース配分モードで実行されます。

予算上限

ループは期限切れになるか停止させるまで動き続けるため、想定以上のコストがかかりやすくなります。2 つのフラグで上限を設けられます。
/loop 10m --max-turns 6 check the deploy      # 最大 6 回
/loop --max-credits 20 monitor CI             # 最大 20 クレジット
/loop 1h --max-turns=24 --max-credits=50 /standup 1
フラグ意味
--max-turns NN 回実行したら停止します。N は整数です。
--max-credits N累計 N クレジットを消費したら停止します。1 回の実行が 1 クレジットに満たないことも多いため、小数も指定できます。
上限はイコール形式(--max-turns=6)も使用できます。指定できるのは正の数のみです。上限が 0 の場合、ループは最初の実行前に取り消されてしまいます。 上限の挙動:
  • 両方を指定した場合、先に到達した方がループを停止します。
  • 実行回数はセッション単位ではなく、タスクの全期間で累計されます。 Qoder CLI を再起動してもカウントはリセットされないため、再起動で上限を回避することはできません。
  • 実行回数は各実行の前に判定されます。 そのため --max-turns 2 はちょうど 2 回トリガーされ、3 回目はありません。
  • クレジットは 1 回の実行が終わってから計上されます。 そのため最後の実行は上限を少し超えて終わることがあります(例:上限 3 に対して 3.2)。すでに費用が発生した作業を破棄することになるため、Qoder は実行途中で打ち切りません。
  • 上限に到達するとループは完全に停止します。 タスクは削除され、Scheduled task a1b2c3d4 stopped: it used 2 of 2 turns. のようなメッセージが表示されます。Qoder にも同じ通知が届くため、「ループはまだ動いている」という前提で推論を続けることはなく、停止をそのまま報告します。続行したい場合は、新しい上限でループを作り直してください。
  • 動的ペース配分モードでは、上限はループに固定されます。 ループを開始する /loop で一度指定すれば、以降のすべての起動で有効です。ループを停止すると上限と使用量の両方がクリアされ、次の /loop はゼロから始まります。

使用量の確認と変更

/crontab でスケジュールタスクパネルを開くと、USAGE 列に各ループの消費量が表示されます。
USAGE
3/10 turns · 12.5/50 credits     両方の上限を指定
2 turns · 8.25 credits           上限なし
1/5 turns · —/50 credits         消費量が未計測
タスクの詳細ページでは、ループを作り直さずに上限を変更できます。t キーで実行回数の上限、b キーでクレジットの上限を編集し、空の値を入力するとその上限は解除されます。

永続化・自動失効・キャンセル

既定では /loop で作成したタスクは現在のセッションにのみ存在します。Qoder CLI の実行中はスケジュールどおりにトリガーされ、プロセス終了とともに消えます。定期タスクは作成後 7日 で自動的に失効します。 2 つのフラグでこの挙動を変更できます。
フラグ効果
--durableタスクをディスクに保存し、再起動後も維持します。自動失効はしません。
--durable 30dタスクをディスクに保存し、30 日後に失効させます。
どちらのフラグも固定間隔のループに適用されます。動的ペース配分のループは常に現在のセッションにのみ存在します。 作成が成功すると、Qoder はスケジュールされた内容、対応する周期、ディスクに保存されたかどうか、自動失効時間、およびキャンセル用のタスク ID を通知します。事前に停止する必要がある場合は、その ID を指定して対応するループタスクをキャンセルさせるか、/crontab パネルから削除するか、動的ペース配分モードであれば Qoder にループの停止を指示してください。 完全なパラメータ、デフォルト値、および失効ルールについては、Loop コマンドリファレンスを参照してください。
Qoder CLI を使用する