コンテンツにスキップ
use-cases / wake-agent-at-3am / hero
Cron · エージェント · コンテナ

午前 3 時にエージェントを起こし、4 時に退役させる

昨日の請求例外をスキャンし、重複をクラスタリングしてトリアージノートを書く夜間ジョブ。1 日約 1 時間だけ存在すれば十分です。2 つの cron エントリが 02:59 に新しいエージェント コンテナを起動し、04:01 に破棄します。残りの 23 時間、稼働せず、ウォームでもなく、課金もされません。

ドキュメントを読む
use-cases / wake-agent-at-3am / mechanism

2 つの cron エントリ、1 つの短命コンテナ

ウォームプールなし、スケジューラサービスなし、作業をポーリングする糊デーモンなし。02:59 に hoody-cron エントリが hoody-agent の spawn URL に POST します。エージェントは実行を行い、終了します。04:01 の 2 つ目の cron がコンテナが消えていることを確認するために DELETE を呼びます。それが装置全体です。

POST cron.hoody.com/users/root/entries
起床トリガー · 02:59
// Cron entry that fires once a day and POSTs the spawn requestPOST cron.hoody.com/users/root/entries{ schedule: "0 3 * * *", command: "curl -X POST $AGENT_URL -d @prompt.json", comment: "billing-reconcile · 3am wake"}
02:59 に発火 →
POST api.hoody.com/api/v1/projects/$PID/containers
エージェント生成 · ai + hoody_kit
// The agent boots, reconciles yesterday's invoices, writes notes, exitsPOST api.hoody.com/api/v1/projects/$PID/containers{ name: "billing-reconcile-$(date +%s)", ai: true, hoody_kit: true, autostart: false}
コンテナ終了、2 つ目の cron が 04:01 に発火 →
DELETE api.hoody.com/api/v1/containers/$CID
ティアダウン · 04:01
// Belt-and-braces: a second cron asserts the container is goneDELETE api.hoody.com/api/v1/containers/$CID// Response from hoody-containers200 OK · container deleted

DB 内の 2 つの cron 行。1 つのエージェント イメージ。コンテナは作業のためだけに存在し、その後存在しなくなります。ウォームプールなし、スケジュール済みタスク プリミティブなし、自分で運用するライフサイクル デーモンなし。

use-cases / wake-agent-at-3am / night

夜は実際にはどう見えるか

5 つの瞬間。エージェントは中央の 3 つで生存。この 1 時間以外は、containers テーブルの行は消えています。

  1. 02:59Cron · 起床

    cron エントリ billing-reconcile-wake が発火。ai: true と hoody_kit: true で api.hoody.com に POST。クリーンなファイルシステムとエージェントのプロンプトをロードした新コンテナが起動。

  2. 03:02エージェント · 読み取り

    エージェントは Hoody SQLite 経由で昨日の billing-exceptions テーブルを読み、期待していた invoices と結合し、reason code でクラスタリング。ファイル共有マウントなし。URL のみ。

  3. 03:31エージェント · 書き込み

    クラスタごとに 1 つのトリアージノートを同じ SQLite URL に書き戻し、その後 1 つの通知を日次サマリーとともに送信。これまでのウォール時間: 約 30 分。

  4. 03:58エージェント · 終了

    エージェントプロセスが 0 を返し、コンテナは自分で終了。hoody-containers が停止としてマーク。この瞬間以降、エージェントについて稼働中、ウォーム、課金されているものは何もありません。

  5. 04:01Cron · 退役

    2 つ目の cron エントリがコンテナ ID に対して DELETE を発火。エージェントがすでに終了していれば、これは no-op の 200 OK。ハングしていればコンテナはとにかく破棄。冪等で監視不要。

5 つのタイムスタンプ、2 つの cron 行、62 分間生きるコンテナ 1 つ。夜は自分で動き、朝にトリアージノートを読んで実行されたことを知ります。

use-cases / wake-agent-at-3am / powers

なぜこのライフサイクル形状が機能するか

常時オンのワーカーは、1 日 1 回しか動かないジョブには間違った形です。Hoody では基盤が定額制 — 利点は秒単位課金ではなく、ウォームプールなし、スケジューラサービスなし、運用する糊デーモンなし。

アイドルは追加料金なし

実行間にコンテナは存在しない

メモリに座っているウォームプールはありません。状態を保持する「スケジュール済みタスク」サービスはありません。containers テーブルの行は 1 日のうち 23 時間消えています。エージェントが生きていた分だけ定額制のサーバーを既にレンタルしていて、アイドル時間は別の請求項目を生成しません。

実行ごとの請求項目なし

サーバー請求は変わらない

Hoody はサーバーではなくランタイムに課金します。60 分の夜間エージェントと 24/7 常時オンのワーカーは同じ定額制のサーバー請求に収まります。利点は「使用した分だけ支払う」ではなく、不要なウォームプールオーバーヘッドに 2 回支払わない。

ライフサイクル コードなし

2 つの cron 行、糊デーモンなし

起床用 Lambda、「コンテナを起動する」ワーカー、それを退役させるウォッチドッグを書く必要はありません。hoody-cron が POST、hoody-containers が生成、エージェントが終了、2 つ目の cron が DELETE を POST。それが表面領域すべてです。

use-cases / wake-agent-at-3am / economics

アイドル エージェントのコスト

ほとんどのエージェント プラットフォームは、1 秒未満で準備できるようにワーカーを 24 時間ウォームに保ちます。3 時の バッチ ジョブには、それは正反対のトレードオフです。スケジュールが自分のものなら、数秒のコールド スポーンで十分です。

常時オン エージェント24h × 30 日
720h / mo

常時オンのエージェント コンテナ、または 1 日 1 回動くエージェントのために予約されたウォームプール枠は、月 720 時間生存します。そのうち 719 時間、何もしていません。

秒単位プラットフォームでは請求項目がアイドル
起こして退役させる1h × 30 日
30h / mo

cron エントリで生成された短命コンテナは、1 晩 1 時間存在します。月合計 30 時間。エージェントプロセスが 0 を返し、containers テーブルの行は消えます。

  • 02:59 → 04:0162m 生存
  • 02:59 → 04:0060m 生存
  • 02:59 → 03:5858m 生存
  • 02:59 → 04:0061m 生存
  • 02:59 → 04:0060m 生存
  • 02:59 → 03:5959m 生存
  • 02:59 → 04:0060m 生存
サーバー請求に変化なし

Hoody はサーバーに課金し、ランタイムには課金しません。「生存」列は各夜のエージェント存在時間を示します。定額制のサーバーはそれがあるかどうかにかかわらず実行されます。月額 $29 から、仕様、地域、レンタル期間によって異なります。

use-cases / wake-agent-at-3am / punchline

作業があるときにだけ存在するエージェント。

1 日の生存時間1h02:59 → 04:01、その後消える
サーバー請求変化0定額制、生存またはアイドル
書くライフサイクル コード02 つの cron 行、デーモンなし
spawn API を見る
use-cases / wake-agent-at-3am / replaces

これが置き換えるもの

エージェントを 24 時間存在させるために支払うパターン。Hoody では、エージェントが既にレンタルしている定額制のサーバー内で実行 — ウォームプール、スケジューラサービス、秒単位メーターなし。

  • 常時オンのエージェント コンテナアクティブ レートで課金される 23 時間のアイドル
  • AWS Lambda ウォームプールcron からコールドスタートを遠ざけるための支払い
  • Modal Labs スケジュール済みタスククローズドな ランタイム、不透明な課金
  • カスタム ウォーム-コールド ライフサイクル コード書くのに 3 週間、デバッグに 6 か月
  • /spawn エンドポイントへのポーリング最初のエージェントを起動するためだけの 2 つ目の cron
  • 常時稼働の Hetzner GPU ボックス1 日 1 回の推論のために $200/月
use-cases / wake-agent-at-3am / cta

作業があるときにだけ存在するエージェント。

ドキュメントを読む
use-cases / wake-agent-at-3am / related

他のユースケースを読む