自動化
Cron vs ハートビート
ハートビートとcronジョブはどちらも、スケジュールに基づいてタスクを実行できます。このガイドは、ユースケースに適したメカニズムを選択するのに役立ちます。
クイック決定ガイド
| ユースケース | 推奨 | 理由 |
|---|---|---|
| 30分ごとに受信トレイを確認 | ハートビート | 他のチェックとバッチ処理、コンテキストを考慮 |
| 毎日9時ちょうどに日次レポートを送信 | Cron (分離) | 正確なタイミングが必要 |
| カレンダーを監視して予定を確認 | ハートビート | 定期的な確認に自然に適合 |
| 毎週の詳細分析を実行 | Cron (分離) | スタンドアロンタスク、異なるモデルを使用可能 |
| 20分後にリマインド | Cron (メイン, --at) | 正確なタイミングのワンショット |
| バックグラウンドでのプロジェクト健全性チェック | ハートビート | 既存のサイクルに相乗り |
ハートビート: 定期的な確認
ハートビートは、メインセッションで定期的な間隔(デフォルト: 30分)で実行されます。エージェントが状況を確認し、重要なことを表面化させるために設計されています。
ハートビートを使用する場合
- 複数の定期的なチェック: 受信トレイ、カレンダー、天気、通知、プロジェクトステータス をそれぞれ別々の5つのcronジョブで確認する代わりに、単一のハートビートですべてをバッチ処理できます。
- コンテキストを考慮した判断: エージェントはメインセッションのコンテキストを完全に把握しているため、何が緊急で何が待てるかをスマートに判断できます。
- 会話の連続性: ハートビートの実行は同じセッションを共有するため、エージェントは最近の会話を記憶し、自然にフォローアップできます。
- オーバーヘッドの少ない監視: 1つのハートビートが多くの小さなポーリングタスクを置き換えます。
ハートビートの利点
- 複数のチェックをバッチ処理: 1回のエージェントターンで、受信トレイ、カレンダー、通知をまとめて確認できます。
- APIコールを削減: 5つの分離したcronジョブよりも、単一のハートビートの方がコストが低くなります。
- コンテキストを考慮: エージェントはあなたが取り組んできた内容を知っており、それに応じて優先順位を付けられます。
- スマートな抑制: 注意が必要なものが何もない場合、エージェントは
HEARTBEAT_OKと返答し、メッセージは配信されません。 - 自然なタイミング: キューの負荷に基づいてわずかにずれることがありますが、 ほとんどの監視には問題ありません。
ハートビートの例: HEARTBEAT.md チェックリスト
# Heartbeat checklist
- Check email for urgent messages
- Review calendar for events in next 2 hours
- If a background task finished, summarize results
- If idle for 8+ hours, send a brief check-in
エージェントは各ハートビートでこれを読み、すべての項目を1ターンで処理します。
ハートビートの設定
{
agents: {
defaults: {
heartbeat: {
every: "30m", // 間隔
target: "last", // 明示的なアラート配信ターゲット (デフォルトは "none")
activeHours: { start: "08:00", end: "22:00" }, // オプション
},
},
},
}
詳細な設定については ハートビート を参照してください。
Cron: 正確なスケジューリング
Cronジョブは正確な時刻に実行され、メインコンテキストに影響を与えずに分離されたセッションで実行できます。毎時0分に繰り返されるスケジュールは、デフォルトで0〜5分のウィンドウ内でジョブごとに決定論的なオフセットによって自動的に分散されます。
Cronを使用する場合
- 正確なタイミングが必要: 「毎週月曜日の9:00 AMにこれを送信する」(「9時頃」ではない)。
- スタンドアロンタスク: 会話のコンテキストを必要としないタスク。
- 異なるモデル/思考: より強力なモデルを正当化する重い分析。
- ワンショットリマインダー:
--atを使用した「20分後にリマインド」。 - ノイズの多い/頻繁なタスク: メインセッションの履歴を乱雑にするタスク。
- 外部トリガー: エージェントが他の理由でアクティブかどうかに関係なく独立して実行すべきタスク。
Cronの利点
- 正確なタイミング: タイムゾーンサポート付きの5フィールドまたは6フィールド(秒)のcron式。
- 組み込みの負荷分散: 繰り返される毎時0分のスケジュールは、デフォルトで最大5分間隔でずらされます。
- ジョブごとの制御:
--staggerでずらしを上書き、または--exactで正確なタイミングを強制。 - セッション分離: メイン履歴を汚染することなく
cron:で実行。 - モデルの上書き: ジョブごとに安価なモデルまたはより強力なモデルを使用可能。
- 配信制御: 分離ジョブはデフォルトで
announce(要約) を使用。必要に応じてnoneを選択。 - 即時配信: アナウンスモードはハートビートを待たずに直接投稿。
- エージェントコンテキスト不要: メインセッションがアイドル状態または圧縮されていても実行。
- ワンショットサポート: 正確な将来のタイムスタンプ用の
--at。