OpenCode SchedulerでAIエージェントをスケジュール実行
OpenCode SchedulerはOSネイティブのスケジューラ(launchd、systemd、Task Scheduler)を使ってAIエージェントを定期実行できるプラグインです。
OpenCodeはターミナルベースのAIコーディングエージェントとして広く使われています。しかし、AIエージェントを自動実行したい場合 — 毎朝9時にディールをチェック、毎週月曜にGitHub通知を要約、6時間ごとにウェブサイトを監視 — ターミナルを開いたままにする必要はありません。
OpenCode Schedulerは、OpenCodeの公式プラグインとして、OSのネイティブスケジューラをAIエージェントの実行エンジンとして活用します。
OpenCode Schedulerとは#
OpenCode Schedulerは、OpenCode ↗ CLIフレームワーク用のプラグインで、OSネイティブのスケジューラ — macOSのlaunchd、Linuxのsystemd --user、Windowsのschtasks、そしてcronフォールバック — を使って定期的なAIエージェントタスクをスケジュールできます。
重いバックグラウンドデーモンやクラウドcronサービスに依存する代わりに、このプラグインはあなたのマシンに既にある実績あるOSスケジューラの薄いラッパーとして機能します。
主な機能#
自然言語でのスケジュール設定#
やりたいことを自然な日本語で説明するだけです。プラグインが自動的に適切なcron式とOSスケジューラ設定に変換します。
「毎朝9時に、300ドル未満のスタンディングデスクをFacebook Marketplaceで検索して、上位5件のディールをTelegramに送信するジョブをスケジュールして」
cron構文を覚える必要はありません — もちろん知っている場合は標準の5フィールドcron式も使えます。
OSネイティブ実行#
一度スケジュールされると、ジョブは自律的に実行されます。OSが指定された時間にタスクを起動し、スーパーバイザスクリプトを実行して、あなたのプロンプトでopencode runを実行します。ターミナルやNode.jsプロセスを常時起動しておく必要はありません。
| プラットフォーム | バックエンド | ステータス |
|---|---|---|
| macOS | launchd | フルサポート |
| Linux (systemd) | systemd --user | フルサポート |
| Linux (POSIX) | cron (crontab) | フォールバック |
| Windows | schtasks (Task Scheduler) | サポート |
監視付き実行 (v1.2.0+)#
スケジュール実行はスーパーバイザスクリプトでラップされており、以下を提供します:
- 重複実行防止 — 前回の実行がまだアクティブな場合、次のスケジュール実行はスキップされます
- 非対話モード — スケジュール実行は
OPENCODE_PERMISSIONを強制的に拒否設定にし、ジョブがユーザー入力を待ってハングするのを防ぎます - 設定可能なタイムアウト —
timeoutSecondsを設定して、SIGTERM→SIGKILLで長時間実行を強制停止できます
ワークディレクトリによるスコープ分離#
ジョブは作業ディレクトリごとにスコープ分けされます。これにより、異なるプロジェクトが互いに干渉することはありません — 各プロジェクトは独自のジョブ定義、ロック、ログ、OSスケジューラユニットを持ちます。
ビルトインスキルテンプレート#
プラグインには@scheduled-job-best-practicesスキルテンプレートが同梱されています。1つのコマンドで任意のリポジトリにインストールできます:
Install the scheduled job best practices skilltextスキルは.opencode/skill/scheduled-job-best-practices/SKILL.mdに書き込まれ、スケジュールジョブのプロンプトで参照できます。
インストール方法#
opencode.jsonにプラグインを追加するだけ:
{
"plugins": ["opencode-scheduler"]
}jsonOpenCode起動時に自動的に全ツールが登録されます。
利用可能なツール#
| ツール | 説明 |
|---|---|
schedule_job | 新しいスケジュールジョブを作成(自然言語またはcron) |
list_jobs | 全スケジュールジョブを一覧表示 |
get_job | ジョブの詳細とメタデータを取得 |
update_job | 既存ジョブのスケジュール、プロンプト、タイムアウトを更新 |
delete_job | スケジュールジョブとそのアーティファクトを削除 |
run_job | ジョブを即時実行(fire-and-forget) |
job_logs | ジョブの最新ログを表示 |
get_version | スケジューラとOpenCodeのバージョンを表示 |
get_skill | ビルトインスキルテンプレートを取得 |
install_skill | ビルトインスキルをリポジトリにインストール |
cleanup_global | 全スコープのスケジューラアーティファクトを削除 |
実用的なユースケース#
自動ディールハンティング#
Schedule a daily job at 9am to search for standing desks under $300textエージェントがマーケットプレイスを巡回し、結果をフィルタリングして、最良のディールをTelegramやSlackに転送します — あなたが寝ている間に。
週次コード監査#
Schedule a job every Monday at 8am to summarize my GitHub notificationstextリポジトリ全体のPR、Issue、アクティビティの週次ダイジェストを取得できます。
ヘルスモニタリング#
Schedule a job every 6 hours to check if my website is up and alert me on Slack if it's downtext別途監視サービスは不要 — あなたのAIエージェントがアップタイムチェックを処理します。
バックグラウンドデータ処理#
Schedule a daily job from /path/to/project to run my-tasktext定期的なメンテナンス、トークンクリーンアップ、ドキュメント生成などを自律的なバックグラウンドエージェントに任せられます。
動作の仕組み#
- 自然言語またはcron式でジョブを記述
- プラグインが
~/.config/opencode/scheduler/scopes/<scopeId>/jobs/にジョブ設定ファイルを書き込み - OSネイティブのタイマーをインストール —
launchd用の.plist、systemd用の.service+.timer、またはWindowsのTask Scheduler - 指定時刻にOSがスーパーバイザスクリプト(
~/.config/opencode/scheduler/supervisor.pl)を呼び出し - スーパーバイザが
opencode run -- "<prompt>"を実行し、ログを追記してメタデータを更新
トラブルシューティング#
ジョブが実行されない場合、スケジューラの登録を確認:
- macOS:
launchctl list | grep opencode - Linux:
systemctl --user list-timers | grep opencode - Windows:
schtasks /Query /TN "\OpenCode\opencode-job-*"
ログを確認: OpenCode内でShow logs for my-job
作業ディレクトリにMCPサーバー設定を含むopencode.jsonがあることを確認 — これがないと、スケジュール実行時にMCPツールが利用できません。
哲学#
OpenCode Schedulerは意図的に薄いラッパーです。分散ジョブスケジューラやクラウドcronの代替を目指しているわけではありません。代わりに、主要なOSに既に存在するスケジューリングインフラを活用し、自律的なAIエージェントを本番環境で信頼性高く動作させるのに十分な監視機能(重複防止、タイムアウト、ログ集約)を追加しています。
結果として、追加のインフラコストなしで、数分で自律AIエージェントを自分のマシン上にセットアップできます。