プロンプトをスケジュール実行する
/loopと cron スケジューリングツールを使用して、Qwen Code セッション内でプロンプトを繰り返し実行したり、ステータスをポーリングしたり、1回限りのリマインダーを設定したりできます。
スケジュールタスクを使用すると、Qwen Code が指定した間隔でプロンプトを自動的に再実行します。デプロイのステータスをポーリングしたり、PR の進行状況を確認したり、長時間実行されるビルドの進捗を定期的にチェックしたり、セッションの後半で何かを実行するよう自分にリマインダーを設定したりするのに役立ちます。
タスクはセッションスコープです。現在の Qwen Code プロセス内で有効であり、セッションを終了すると削除されます。ディスクへの書き込みは一切行われません。
Note: スケジュールタスクは実験的な機能です。設定 で
experimental.cron: trueを有効にするか、環境変数にQWEN_CODE_ENABLE_CRON=1を設定して有効化してください。
/loop で定期的なプロンプトをスケジュールする
/loop バンドルスキル は、定期的なプロンプトをスケジュールする最も簡単な方法です。任意の間隔とプロンプトを渡すと、Qwen Code がセッションが開いている間バックグラウンドで実行される cron ジョブを設定します。
/loop 5m check if the deployment finished and tell me what happenedQwen Code は間隔を解析して cron 式に変換し、ジョブをスケジュールして、実行間隔とジョブ ID を確認します。その後、プロンプトをすぐに 1 回実行します。最初の 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 分単位の粒度であるため、秒は最も近い分に切り上げられます。7m や 90m のように単位で割り切れない間隔は、最も近いきれいな間隔に丸められ、Qwen Code が選択した値を通知します。
他のコマンドをループ実行する
スケジュールされたプロンプト自体をコマンドやスキルの呼び出しにすることもできます。これは、すでにパッケージ化したワークフローを再実行する場合に便利です。
/loop 20m /review-pr 1234ジョブが実行されるたびに、Qwen Code は /review-pr 1234 を手動で入力したかのように実行します。
ループの管理
/loop には、既存のジョブを管理するための 2 つのサブコマンドも用意されています。
/loop listスケジュールされたすべてのジョブを、ID と cron 式とともに一覧表示します。
/loop clearスケジュールされたすべてのジョブを一度にキャンセルします。
1回限りのリマインダーを設定する
1回限りのリマインダーの場合は、/loop を使う代わりに、自然言語で希望を記述します。Qwen Code は、実行後に自身を削除する単発タスクをスケジュールします。
remind me at 3pm to push the release branchin 45 minutes, check whether the integration tests passedQwen Code は cron 式を使用して実行時刻を特定の分と時間に固定し、実行予定時刻を確認します。
スケジュールタスクの管理
自然言語で Qwen Code にタスクの一覧表示やキャンセルを依頼するか、基盤となるツールを直接参照してください。
what scheduled tasks do I have?cancel the deploy check job内部では、Qwen Code は以下のツールを使用します。
| ツール | 目的 |
|---|---|
CronCreate | 新しいタスクをスケジュールします。5フィールドの cron 式、実行するプロンプト、および繰り返し実行か単発実行かを指定します。 |
CronList | スケジュールされたすべてのタスクを、ID、スケジュール、プロンプトとともに一覧表示します。 |
CronDelete | ID を指定してタスクをキャンセルします。 |
各スケジュールタスクには 8 文字の ID が割り当てられており、これを CronDelete に渡すことができます。1 つのセッションで同時に保持できるスケジュールタスクは最大 50 個です。
スケジュールタスクの実行方法
スケジューラは毎秒実行予定のタスクをチェックし、セッションがアイドル状態のときにキューに追加します。スケジュールされたプロンプトは、Qwen Code が応答生成中の間ではなく、ユーザーの操作の合間に実行されます。タスクの実行時刻になっても Qwen Code がビジー状態の場合、プロンプトは現在のターンが終了するまで待機します。
すべての時刻はローカルタイムゾーンとして解釈されます。0 9 * * * のような cron 式は UTC ではなく、Qwen Code を実行している環境の午前 9 時を意味します。
ジッター
すべてのセッションが同じ実際の時刻に API にアクセスするのを防ぐため、スケジューラは実行時刻に小さな決定論的オフセットを追加します。
- 定期タスクは、期間の最大 10%(最大 15 分)遅れて実行されます。1 時間ごとのジョブは、
:00から:06の間の任意の時刻に実行される可能性があります。 - 単発タスクで、時刻の切り上げまたは切り下げ(分が
:00または:30)にスケジュールされたものは、最大 90 秒早く実行されます。
オフセットはタスク ID から導出されるため、同じタスクは常に同じオフセットが適用されます。正確な実行時刻が重要な場合は、:00 や :30 以外の分を指定してください(例:0 9 * * * の代わりに 3 9 * * *)。これにより、単発タスクのジッターは適用されなくなります。
3 日間の有効期限
定期タスクは作成から 3 日後に自動的に期限切れになります。タスクは最後に 1 回実行された後、自身を削除します。これにより、忘れられたループが実行され続ける期間に上限が設けられます。定期タスクをより長く実行する必要がある場合は、期限切れになる前にキャンセルして再作成してください。
単発タスクはタイマーによる期限切れはありません。1 回実行された後に自身を削除するだけです。
cron 式リファレンス
CronCreate は標準的な 5 フィールドの cron 式(分 時 日 月 曜日)を受け付けます。すべてのフィールドで、ワイルドカード(*)、単一値(5)、ステップ(*/15)、範囲(1-5)、カンマ区切りリスト(1,15,30)がサポートされています。
| 例 | 意味 |
|---|---|
*/5 * * * * | 5 分ごと |
0 * * * * | 毎時 0 分(1 時間ごと) |
7 * * * * | 毎時 7 分 |
0 9 * * * | 毎日ローカル時刻の午前 9 時 |
0 9 * * 1-5 | 平日のローカル時刻午前 9 時 |
30 14 15 3 * | 3 月 15 日のローカル時刻午後 2 時 30 分 |
曜日は、日曜日が 0 または 7、土曜日が 6 です。日と曜日の両方が指定されている場合(どちらも * ではない場合)、どちらかのフィールドに一致する日付がマッチします。これは標準的な vixie-cron のセマンティクスに従います。
L、W、? などの拡張構文や、MON や JAN などの名前エイリアスはサポートされていません。
制限事項
セッションスコープのスケジュールには、以下のような固有の制約があります。
- タスクは Qwen Code が実行中でアイドル状態のときにのみ実行されます。ターミナルを閉じたりセッションを終了したりすると、すべてのタスクがキャンセルされます。
- 実行漏れのキャッチアップはありません。長時間実行されるリクエストで Qwen Code がビジー状態の間にタスクの実行時刻が過ぎた場合、Qwen Code がアイドル状態になったときに 1 回だけ実行され、実行漏れの回数分実行されることはありません。
- 再起動をまたいだ永続化はありません。Qwen Code を再起動すると、セッションスコープのタスクはすべてクリアされます。