プロンプトをスケジュール実行する
/loopと cron スケジューリングツールを使用して、Qwen Code セッション内でプロンプトを繰り返し実行したり、ステータスをポーリングしたり、ワンタイムリマインダーを設定したりします。
スケジュールされたタスクを使用すると、Qwen Code は指定された間隔でプロンプトを自動的に再実行できます。これらを使用して、デプロイのポーリング、PR の監視、長時間実行されるビルドの状況確認、またはセッションの後半で何かを行うためのリマインダー設定を行います。
タスクはセッションスコープです。つまり、現在の Qwen Code プロセス内に存在し、終了すると消滅します。ディスクには何も書き込まれません。
ヒント: スケジュールタスクはデフォルトで有効になっています。無効にするには、settings で
experimental.cron: falseを設定するか、環境変数にQWEN_CODE_DISABLE_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 を実行すると、固定されたプロンプトを繰り返す代わりに自律ループが開始されます。Qwen Code は、会話ですでに確立された作業の管理者として機能し、あなたが離席している間も作業を進行させ続けます。
/loopプロンプトも間隔もない単なる /loop は、自己ペースの自律ループを実行します。プロンプトなしの /loop <interval> は、同じ自律ループを固定された頻度(例: /loop 10m)で実行します。実行のたびに、会話ですでに設定された作業を前進させます。開始した作業の完了、進行中の PR の維持(レビューコメントへの対応、失敗した CI の修正、コンフリクトの解決)、およびフォローアップの約束を果たします。これは、トランスクリプトですでに確立された作業に対してのみ動作します。明確な許可なく新しい作業を作り出したり、不可逆な変更(push、delete、send)を行ったりすることはなく、すべてが静かになると停止します。
ループの管理
/loop は、既存のジョブを管理するための 2 つのサブコマンドもサポートしています。
/loop listID と cron 式を含む、スケジュールされたすべてのジョブを一覧表示します。
/loop clearスケジュールされたすべてのジョブを一度にキャンセルします。
ワンタイムリマインダーを設定する
ワンショットリマインダーの場合は、/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の間で実行される可能性があります。 - 単発タスク で、正時または 30 分(
:00または:30)にスケジュールされているものは、最大 90 秒早く実行されます。
オフセットはタスク ID から導出されるため、同じタスクは常に同じオフセットを受け取ります。正確なタイミングが重要な場合は、:00 や :30 以外の分を指定してください。たとえば、0 9 * * * の代わりに 3 9 * * * を指定すると、単発ジッターは適用されません。
定期タスクの有効期限
定期タスクは、デフォルトで作成から 7 日後に自動的に期限切れになります。タスクは最後に 1 回実行された後、自身を削除します。これにより、忘れられたループが実行され続ける期間に上限が設けられます。
制限を変更するには、settings で experimental.cronRecurringMaxAgeDays を設定するか、QWEN_CODE_CRON_MAX_AGE_DAYS 環境変数を設定します(環境変数が優先されます。settings.json の編集が現実的でないクラウドやコンテナデプロイメントで便利です)。値を 0 にすると有効期限が無効になり、タスクは削除するまで実行され続けます。これは、日報、ダイジェスト、または継続的な監視をホストする長時間実行デーモンデプロイメントに便利です。設定された制限は、再起動後にディスクから復元された永続タスクにも適用されます。
単発タスクはタイマーによって期限切れになることはありません。1 回実行された後に単に自身を削除します。
cron 式リファレンス
CronCreate は標準的な 5 フィールドの cron 式を受け付けます。minute hour day-of-month month day-of-week です。すべてのフィールドは、ワイルドカード (*)、単一の値 (5)、ステップ (*/15)、範囲 (1-5)、およびカンマ区切りのリスト (1,15,30) をサポートしています。
| 例 | 意味 |
|---|---|
*/5 * * * * | 5 分ごと |
0 * * * * | 毎時 0 分 |
7 * * * * | 毎時 7 分 |
0 9 * * * | 毎日午前 9 時(ローカル) |
0 9 * * 1-5 | 平日の午前 9 時(ローカル) |
30 14 15 3 * | 3 月 15 日午後 2 時 30 分(ローカル) |
曜日は、日曜日に 0 または 7、土曜日に 6 を使用します。日(day-of-month)と曜日(day-of-week)の両方が制約されている場合(どちらも * でない場合)、どちらかのフィールドが一致すれば日付が一致します。これは標準的な vixie-cron のセマンティクスに従います。
L、W、? などの拡張構文や、MON や JAN などの名前エイリアスはサポートされていません。
制限事項
セッションスコープのスケジューリングには、固有の制約があります。
- タスクは、Qwen Code が実行中でアイドル状態のときにのみ実行されます。ターミナルを閉じたり、セッションを終了させたりすると、すべてキャンセルされます。
- 逃した実行のキャッチアップはありません。長時間実行されるリクエストの処理中に Qwen Code がビジーでタスクのスケジュール時間を過ぎた場合、逃した間隔ごとではなく、Qwen Code がアイドル状態になったときに 1 回だけ実行されます。
- 再起動をまたいだ永続性はありません。Qwen Code を再起動すると、セッションスコープのタスクはすべてクリアされます。