Skip to main content
タスクの自動化

定期実行タスク

概要

スケジュールタスクを使用すると、Qoder CLI が指定された時間にプロンプトまたはスラッシュコマンドを自動的に実行します。タスクは未来の特定の時点で 1 回だけ実行するようにスケジュールすることも、カレンダースケジュールに従って定期的に繰り返し実行するように設定することもできます。定期点検、定期レポート、スケジュールに基づく自動化などのシナリオに適しています。 スケジュールタスクには次の 2 種類があります。
  • 単発タスク(one-shot):次に一致する時間に 1 回だけトリガーされ、その後自動的に削除されます。
  • 定期タスク(recurring):削除されるか自動的に期限切れになるまで、Cron スケジュールに従って繰り返しトリガーされます。

スケジュールタスクの作成

インタラクティブセッションで、時間と実行する内容を自然言語で記述すると、Qoder がスケジュールタスクを作成します。例:
Check and summarize CI status every day at 9 AM
Generate a summary of last week's commits every Monday at 10 AM
Remind me to release the version on February 28 at 2:30 PM
Qoder は記述内容を Cron 式に解析してタスクを作成します。タスクには標準的な 5 フィールドの Cron 式(分、時、日、月、曜日)が使用され、CLI を実行するローカルタイムゾーンに基づいて解釈されます。 固定の間隔で繰り返したい場合(例:「5 分ごと」)は、よりシンプルな /loop を使用します。詳細はタスクの繰り返し実行を参照してください。

Cron 式

スケジュールタスクでは 5 フィールドの Cron 式を使用します。
┌───────── 分 (0-59)
│ ┌─────── 時 (0-23)
│ │ ┌───── 日 (1-31)
│ │ │ ┌─── 月 (1-12)
│ │ │ │ ┌─ 曜日 (0-6、0=日曜)
│ │ │ │ │
* * * * *
サポートされているフィールド構文:ワイルドカード *、単一値 N、ステップ */N、範囲 N-M、リスト N,M,...。曜日フィールドでは 7 は日曜日(0 と同等)として扱われます。 LW?、名前エイリアス(MON など)はサポートされておらず、秒レベルのフィールドも含まれません。 例:
Cron意味
*/5 * * * *5 分ごと
0 * * * *毎時 0 分
0 9 * * *毎日午前 9:00
30 14 28 2 *2 月 28 日午後 2:30(その年に 1 回)
0 10 * * 1毎週月曜日午前 10:00
0 9 * * 1-5平日午前 9:00
すべての時間は、CLI を実行するローカルタイムゾーンに基づいて解釈されます。例えば、0 9 * * * は CLI が実行されているタイムゾーンにおける毎日 9 時を意味します。

保存場所と永続化

スケジュールタスクの永続化の動作には次の 2 種類があります。
  • 永続化タスク:プロジェクトルートディレクトリの <project>/.qoder/scheduled_tasks.json に書き込まれ、プロセス再起動後も保持されます。
  • セッション内タスク:メモリ内にのみ保存され、現在のセッション終了時に消去されます。
ディスクに保存されるタスクは、ファイル内でタスクリストとして保存され、各タスクには ID、Cron 式、プロンプト、作成日時などのフィールドが含まれます。

実行の制限

スケジュールタスクには以下の制限があります。
  • タスク数の上限:最大 50 タスク。上限に達した場合、新しいタスクを作成するには既存のタスクを削除する必要があります。
  • 定期タスクの自動期限切れ:定期タスクは、それより前に削除されない限り、作成から 7 日後に自動的に期限切れになります。長期実行が必要なタスクは再作成する必要があります。
  • 最小粒度:秒レベルのフィールドを含まないため、最小スケジュール粒度は 1 分です。
  • 単一プロセス駆動:同じプロジェクトディレクトリでは、ファイルロックによってスケジュールを駆動するプロセスが 1 つだけであることが保証され、重複トリガーが防止されます。
多数のタスクが同時に集中してトリガーされるのを防ぐため、スケジューラーはトリガー時間に少量のジッターを加えます。定期タスクは次の周期の長さの一部(最大 15 分)だけ遅延され、単発タスクは 30 分の境界(0 分と 30 分)に揃える際に最大約 90 秒早くトリガーされます。

表示と削除

セッション内で Qoder に現在のスケジュールタスクを一覧表示させたり、ID を指定して特定のタスクを削除させたりできます。例:
List all scheduled tasks
Delete scheduled task <id>
タスク作成時、Qoder はそのタスクの ID を返します。削除時にはこの ID を使用してキャンセルするタスクを指定します。

逃したタスク

CLI がタスクのトリガー予定時間に実行されていなかった場合(例えば、その時にプロセスが起動していなかった場合)、そのタスクは「逃した」として識別されます。起動時、Qoder は逃したタスクについて通知し、再実行するかスケジュールを調整するかを決定できるようにします。 フィールド、制限値、保存形式の完全な詳細については、定期タスクリファレンスを参照してください。
Qoder CLI を使用する