
1 つのサーバーで 60 のコンテナ
1 つのベアメタルボックスで数十から数百の Hoody コンテナを実行。KSM と BTRFS のデデュプでマージナルコストはほぼゼロ。
従来の cron 行は午前 2 時に reconcile.sh を実行します。Hoody の cron 行は hoody-agent にプロンプトを POST します。スケジュールは固定。仕事は違います。エッジケースは保守する分岐ではなくなり、エージェントが推論するコンテキストになります。
5 つの朝 · 5 つの異なる決定 · 1 つの crontab 行
Hoody Cron はすべてのコンテナ上のマネージド crontab です。Hoody Agent は同じコンテナ上の組み込み自律エージェントです。cron エントリがエージェントを curl します。エージェントが日付を読み、データを読み、その日が何を必要としているかを決定します。両方のサーフェスは HTTP です — cron は /api/v1/cron/users/me/entries に、エージェントは /api/v1/agent/tasks にあります。両者の間にグルーコードはありません。
# POST /api/v1/cron/users/me/entries { "schedule": "0 7 * * *", "command": "curl -X POST $AGENT/api/v1/agent/tasks \ -d @prompt.json", "comment": "morning-reports" }
# prompt.json — the body of the POST { "description": "昨日の注文を照合してください。スキーマがドリフトしたら再マッピングしてください。異常スコアが 3 を超えたら停止してオンコールに通知してください。今日が月の最終日なら、税調整済み台帳に月次決算を含めてください。", "mode": "code" }
POST 2 回で完了です。crontab 行は二度と変わりません — 保守する唯一のファイルはプロンプトです。新しいエッジケース? 1 文を追加。新しい異常ルール? 1 文を追加。スケジュールは発火し続け、エージェントが各発火が何を意味するかを理解します。
エージェントが受け取る作業の形は常に同じです — 日付、データセット、目標。変わるのは、エージェントがそれらに対して何を決定するかです。
エージェントは cron が発火した後に動きます。カレンダーをチェックします — 月末、休日、会計期末。データセットをサンプリングします — スキーマ、ボリューム、異常スコア。6 か月前にあなたが書いた静的な if ツリーからではなく、そのコンテキストで次のアクションを選びます。
昨日のエクスポートが refund_reason カラムを追加したとき、スクリプトは壊れてあなたを呼び出します。エージェントはスキーマを読み、レガシーフィールドにマッピングし、変更を実行サマリに記録します。crontab 行は何も知る必要がありませんでした。
各実行は、エージェントが何を決定し、なぜかを返信します。履歴は平易な日本語です — 「スキップ: 新しいデータなし」、「適応: refund カラム追加」、「異常: refund スパイク +412%、オンコールに通知」 — exit code 0 / exit code 1 ではありません。cron のログはジャーナルになります。
3 ステップ — cron が発火し、エージェントが推論し、決定が着地します。中央のステップは、あなたが 17 のエッジケース分岐を持つ 400 行のシェルスクリプトで自分で書いていたものです。今はプロンプトです。
Hoody Cron がエントリを実行します。crontab 行は 1 つの curl です: プロンプト本体を持つ POST /api/v1/agent/tasks。あなたが書いたリトライもなく、ログプラミングもなく — cron サービスがエントリをシステム crontab に挿入し、実行を追跡します。
エージェントは記述を受け取り、ツール — ターミナル、ファイル、sqlite、ブラウザ、exec — を開いて、アクションプランを選びます。実行、スキップ、適応、または通知するかもしれません。選択は毎日変わります。指示は変わりません。
実行が完了します。エージェントはサマリ行を返信します: レポートを再生成、新しいデータがないためスキップ、異常で停止。あなたは朝食をとりながら携帯で読みます。
スケジュールは変わっていません。スクリプトも変わっていません。変わったのは、人間であるあなたが起きて対処する必要があったかどうかです。エージェントがループに入ると、答えはほぼ常に no — そして実行履歴がその理由を教えてくれます。
Hoody Cron と Hoody Agent は、同じコンテナ上の 2 つのサービスで、両方とも HTTP として到達可能です。数値は文書化されたサーフェスから来ています — 捏造したベンチマークではありません。
crontab に 1 つの curl、永遠に。プロンプト本体が、あなたが書き直す唯一のもの — そしてそれは crontab -e を実行することではなく、JSON ファイルで行います。
hoody-agent はフルサーフェスを公開します — ターミナル exec、ファイル読み書き、sqlite クエリ、ブラウザ自動化、デーモン制御 — をエージェントのタスクに対してプレーンな HTTP コールとして。
cron とエージェントの間に SDK はありません。1 つの URL に POST し、もう 1 つを読みます。両方のサービスは同じコンテナにあるので、コールはローカルネットワーク高速です。
Hoody Cron は標準の 5 フィールド表現 (* * * * *) とマクロ (@hourly、@daily、@weekly、@monthly、@yearly) をサポートします。Hoody Agent タスク作成は 1 回の POST /api/v1/agent/tasks。ライブ更新は /api/v1/agent/ws でストリーミングされます。
cron エントリはジョブを実行しません — エージェントにジョブを理解させるのです。
cron がファイルしか実行する方法を知らなかったため、reconcile.sh の中に書いていたもの一式。それぞれが分岐、フラグ、設定であり、スケジュールが知る必要のないものです。エージェントがその日を読んで決定します。
cron スクリプトの保守をやめましょう。プロンプトの保守を始めましょう。スケジュールが発火し、エージェントが理解します。