スケジュールでプロンプトを実行する
/loopと cron スケジューリングツールを使用して、Qwen Code セッション内でプロンプトを繰り返し実行したり、ステータスをポーリングしたり、1 回限りのリマインダーを設定したりします。
スケジュールタスクを使用すると、Qwen Code が自動的に定期的にプロンプトを再実行できます。デプロイのポーリング、PR の監視、長時間実行ビルドの確認、セッション内で後で何かを行うよう自分にリマインドするなどに使用します。
タスクはセッションスコープです。現在の Qwen Code プロセス内に存在し、終了すると消えます。ディスクには何も書き込まれません。
ヒント: スケジュールタスクはデフォルトで有効になっています。無効にするには、設定 で
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 を確認します。そして、最初の 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 回限りのリマインダーを設定する
単発のリマインダーには、/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 に渡せます。セッションは最大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 * * * とすると、単発のジッターは適用されません。
3日間の有効期限
繰り返しタスクは作成から3日後に自動的に期限切れになります。タスクは最後に1回発火した後、自動的に削除されます。これにより、忘れられたループが実行され続ける時間に制限がかかります。繰り返しタスクをより長く持続させる必要がある場合は、期限切れ前にキャンセルして再作成してください。
単発タスクはタイマーによる期限切れはありません。発火後に自動的に削除されるだけです。
cron 式リファレンス
CronCreate は標準の5フィールドcron式を受け入れます:分 時 日 月 曜日。すべてのフィールドはワイルドカード ()、単一値 (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日14時30分(ローカルタイム) |
曜日は0または7が日曜日、6が土曜日です。日と曜日の両方が制約されている場合(どちらも*ではない)、いずれかのフィールドが一致すれば日付が一致します。これは標準のvixie-cronセマンティクスに従います。
L、W、?、および MON や JAN のような名前エイリアスなどの拡張構文はサポートされていません。
制限事項
セッションスコープのスケジューリングには固有の制約があります:
- タスクはQwen Codeが実行中かつアイドル状態のときのみ発火します。ターミナルを閉じるかセッションを終了すると、すべてがキャンセルされます。
- 見逃した発火のキャッチアップはありません。Qwen Code が長時間実行リクエストでビジー状態の間にタスクのスケジュール時刻が経過した場合、Qwen Code がアイドル状態になったときに1回だけ発火し、見逃した間隔ごとには発火しません。
- 再起動後も永続化されません。Qwen Code を再起動すると、すべてのセッションスコープのタスクがクリアされます。