メインコンテンツまでスキップ

スケジュールタスク

Elftia のスケジュールタスクシステム(Cron)を使うと、繰り返し行う作業をスケジュールに従って自動実行できます。デスクトップ通知によるリマインダーと AI Agent タスク実行という 2 種類のアクションタイプに対応しており、実行結果を Channel メッセージングプラットフォームへプッシュすることもできます。

ユースケース

  • 毎朝 9 時に AI で最新の技術ニュースを要約する
  • 30 分ごとに API のステータスを確認して通知する
  • 指定した時刻にワンタイムリマインダーを送信する
  • AI Agent に定期的にデータ分析を実行させ、その結果を Discord や Telegram にプッシュする
  • 毎週月曜日の朝に、その週の作業計画を自動生成する

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

手順

  1. Cron 管理ページを開く(サイドバーまたはナビゲーションメニューから)
  2. タスクを作成ボタンをクリックする
  3. タスク情報を入力する。
    • タスク名 — タスクの内容がわかる名前を付ける
    • 説明(任意)— タスクの目的を詳しく説明する
    • スケジュールタイプ — 実行頻度を選択する(下記のスケジュールタイプを参照)
    • アクションタイプ — 通知または Agent 実行を選択する
    • メッセージ内容 — 通知テキストまたは Agent プロンプト
  4. (任意)Channel プッシュを設定する
  5. (任意)Agent タスクで使用する LLM プロバイダーとモデルを選択する
  6. 保存をクリックする

スケジュールタイプ

Elftia は、シンプルなものから複雑なタイミング要件まで対応できる 3 種類のスケジュール方式をサポートしています。

Cron 式

標準的な 5 フィールドの cron 式を使って、実行時刻を精密に制御します。

フォーマット: 分 時 日 月 曜日

フィールド範囲特殊文字
0-59* , - /
0-23* , - /
1-31* , - /
1-12* , - /
曜日0-7(0 と 7 はどちらも日曜日)* , - /

よく使う例:

意味
0 9 * * *毎日午前 9:00
30 8 * * 1-5平日の午前 8:30
0 */2 * * *2 時間ごとの正時
0 9 1 * *毎月 1 日の午前 9:00
0 9 * * 1毎週月曜日の午前 9:00
*/15 * * * *15 分ごと
0 9,18 * * *毎日午前 9:00 と午後 6:00

特殊文字リファレンス:

文字説明
*すべての値に一致* * * * * 毎分
,複数の値を列挙0,30 * * * * 毎時 0 分と 30 分
-範囲0 9-17 * * * 午前 9 時から午後 5 時まで毎正時
/ステップ*/10 * * * * 10 分ごと

:::tip ビジュアルアシスト タスク作成時、インターフェースにはビジュアルなスケジュールモードセレクターが用意されており、毎日、平日、毎週、毎月、毎時などのプリセットを選択できます。cron 式を手書きする必要はありません。プリセットを選択すると、対応する cron 式が自動生成されます。 :::

インターバル実行(every)

固定間隔でタスクを繰り返します。

フォーマット: number + unit

単位記号
s30s — 30 秒ごと
m5m — 5 分ごと
時間h1h — 1 時間ごと
d3d — 3 日ごと

動作メモ:

  • インターバルは前回の実行が完了した時刻から計算されます
  • アプリの再起動後、システムは最後に記録された実行時刻から計時を再開し、即時にはトリガーしません

ワンタイム実行(at)

指定した正確な時刻にタスクを 1 回だけ実行し、実行後は自動的に無効化されます。

フォーマット: ISO 8601 日時文字列

例: 2026-04-15T09:00:00

動作メモ:

  • 指定時刻に到達した後、次のチェックサイクルでタスクが発火します(チェック間隔は 30 秒)
  • 実行が完了すると、タスクは自動的に無効状態へ切り替わります
  • 期限切れのワンタイムタスクはトリガーされません

アクションタイプ

通知(notify)

デスクトップのシステム通知を送信します。

  • タスクが発火すると、タスク名とメッセージ内容を表示するデスクトップ通知がポップアップします
  • システムがアプリからの通知送信を許可している必要があります
  • Elftia の通知設定で有効または無効にできます

Agent 実行(agent)

AI Agent をトリガーして、指定したプロンプトタスクを実行します。

  • タスクが発火すると、システムはメッセージ内容をプロンプトとして AI Agent に送信します
  • Agent はプロンプト内の指示を実行し、レスポンスを生成します
  • レスポンスは実行履歴に記録されます(先頭から最大 2,000 文字まで保存)
  • タスクに Channel が設定されていない場合、実行結果はデスクトップ通知で表示されます(notifyOnComplete で制御)

LLM プロバイダーの設定

Agent タスクでは、使用する LLM プロバイダーとモデルを指定できます。

設定説明
プロバイダー(providerId)タスクを実行する LLM プロバイダーを選択
モデル(model)使用する具体的な AI モデルを選択

指定しない場合は、現在のデフォルトプロバイダーとモデルが使用されます。

Channel プッシュ

スケジュールタスクは、実行結果を外部メッセージングプラットフォーム(Discord、Telegram など)へプッシュできます。

設定手順

  1. タスクの作成または編集時に Channel プッシュを有効にする
  2. 対象の Channel を選択する(事前に Channel 管理で設定されている必要があります)
  3. 対象の Chat ID を入力する(Channel 内のグループ ID またはチャンネル ID)
  4. Agent の実行完了後、結果が指定した Channel に自動送信されます

動作メモ

  • Channel が設定された Agent タスクでは、プロンプトに Channel 情報が含まれます
  • Agent には、channel_send MCP ツールを使って対象 Channel へ結果を送信するよう指示されます
  • Channel が設定されていない Agent タスクはローカルでのみ実行され、結果はデスクトップ通知で表示されます

実行履歴

各タスクの実行履歴は自動的に記録されます。タスクごとに、直近のレコードが最大 200 件保持されます。

履歴レコードのフィールド

フィールド説明
タイムスタンプ実行が開始された時刻
ステータスok(成功)または error(失敗)
実行時間実行にかかった時間(ミリ秒)
エラーメッセージ失敗した場合のエラー説明
Agent レスポンスAgent タスクの返信内容(最大 2,000 文字)

履歴の確認

  1. Cron 管理ページでタスクをクリックする
  2. タスク詳細パネルを展開する
  3. 実行履歴タブを確認する

タスク管理

一時停止 / 再開

  • タスクのトグルスイッチをクリックして、タスクを一時停止または再開します
  • 一時停止中のタスクは、再度有効化されるまでトリガーされません

今すぐ実行

  • タスクの今すぐ実行ボタンをクリックして、手動で 1 回実行します
  • タスクの通常スケジュールには影響しません
  • タスクがすでに実行中の場合、再度クリックしても並行実行は作成されません

編集

  • タスクをクリックして編集モードに入ります
  • 名前、説明、スケジュールタイプ、アクションタイプ、Channel 設定を変更できます
  • 変更を保存すると、次回の実行時刻が自動的に再計算されます

削除

  • タスクを削除すると、その実行履歴レコードも削除されます
  • 削除は取り消せません

ステータスイベントのブロードキャスト

スケジュールタスクは、実行中にステータスイベントをフロントエンドへブロードキャストします。

ステータス説明
runningタスク開始
successタスクが正常に完了
errorタスク失敗

インターフェースはタスクのステータスインジケーターをリアルタイムで更新するため、バックグラウンドタスクの状態を一目で確認できます。

システム動作

動作説明
ポーリング間隔5 秒ごとにタスク設定を再読み込み
チェック間隔30 秒ごとにスケジュール時刻を確認
Cron 重複排除同じ cron タスクは同一分内に 1 回だけ発火
並行実行制御同じタスクは並行実行されない
データ保存タスク設定は jobs.json に保存され、履歴レコードは runs/ ディレクトリに保存されます

FAQ

問題解決策
タスクが時刻どおりに実行されないタスクが有効になっていることと、スケジュール式が正しいことを確認してください
Cron 式が無効インターフェースのビジュアルスケジュールモードを使用するか、上記の式の例を参照してください
Agent タスクの実行に失敗するLLM プロバイダーが正しく設定されており、API Key が有効であることを確認してください
Channel プッシュメッセージを受信できないChannel が正しく設定されており、Chat ID が有効であることを確認してください
ワンタイムタスクがトリガーされない指定した時刻がまだ過ぎていないことを確認してください。時刻は ISO 形式である必要があります
履歴レコードが切り詰められるシステムは自動的に直近 200 件のレコードを保持し、古いレコードを削除します
インターバルタスクがアプリ再起動直後にトリガーされる通常の状況では即時にはトリガーされません。システムは最後の実行時刻から計時を再開します

関連リンク

  • Agent — Agent システムについて学ぶ。Agent はスケジュールタスクの実行エンジンです
  • Channel — メッセージプッシュチャンネルを設定する
  • Chat — 会話で AI 機能を使用する