Skip to content

ADR 0007: エージェントを Cloudflare Agents SDK で実装し専門エージェント網を廃止する

Context

ADR 0002 は「Mastra 不採用・素の Vercel AI SDK でエージェントを実装し、LLM 呼び出しは AI Gateway 経由に統一」と決定していた。単一 Worker 化(ADR 0006)に伴い、エージェント実装基盤を再検討した。

  • Cloudflare には Durable Objects ベースのファーストパーティなエージェントフレームワーク Agents SDKagents パッケージ)があり、状態保持・スケジューリング(schedule)・インスタンス毎の組み込みストレージを備える。
  • 素の AI SDK だけでは「ctx.waitUntil の 30 秒制限を超え得る AI 応答をどこで実行するか」「スレッド毎の直列化・状態保持」を自作する必要がある。Agents SDK はこれらを DO の仕組みとして標準提供する。
  • tied-botdelegateToTeam ツール + 11 体の専門エージェント網は、実態が「system prompt の切り替え + モデル呼び出し」であり、利用頻度に対して維持・移植コストが大きい。

Decision

  • botAgentCloudflare Agents SDK の Agent(Durable Object) として実装する。
    • インスタンスは Slack スレッド単位channel:thread_ts を名前に getAgentByName で取得)。同一スレッドの処理が DO により直列化される。
    • fetch ハンドラからはタスクを渡して即 return し、Agent が schedule(0)自身の実行コンテキストで処理を自走させる(呼び出し元 Worker の waitUntil 30 秒制限に依存しない)。
    • イベント処理済みの記録を DO 内に持ち、KV 重複排除を強整合で補完する。
  • LLM 呼び出しは引き続き Cloudflare AI Gateway 経由に統一(ADR 0002 から継承)。モデルは現行機能維持のため gpt-5-mini(OpenAI)を使う。Agent 内部のモデル呼び出しヘルパには AI SDK の generateTextstopWhen: stepCountIs(3)、現行 maxSteps 3 相当)を AI Gateway の baseURL に向けて用いる(Agents SDK の標準パターン)。
  • tools は fetchUrl(HTMLRewriter で本文抽出)と fetchWorkspaceGuide(Notion API + KV 1 時間キャッシュ)の 2 つを移植する。
  • delegateToTeam ツールと 11 体の専門エージェント網は移植せず廃止する(明示的な機能削減)。必要な専門知識の要点は botAgent の instructions に統合する。週次レポートの paparazziAgent はエージェント網とは独立した「プロンプト + 単発 generateText」として cron(scheduled)側に残す。

Consequences

  • 良い点: Cloudflare ファーストパーティで完結し、状態・スケジューリング・直列化を自作しない。スレッド単位の会話コンテキストを DO ストレージに保持でき、Mastra のメモリ相当の一部を自然に代替。エージェント網の廃止で移行工数が大幅減(旧計画の「最大の工数」が消える)。
  • 悪い点 / 注意:
    • Durable Objects + new_sqlite_classes マイグレーションがリポジトリ初導入(既存アプリに DO 利用はコンテナ shim のみ)。
    • delegateToTeam の廃止は利用者に見える機能削減。アナウンスが必要。
    • Agents SDK のバージョン追従(agents パッケージは更新が速い)。
  • フォローアップ: Agent インスタンスの寿命・ストレージ肥大の運用方針(古いスレッド DO のデータ整理)。gpt-5-mini の後継モデルへの切り替えは AI Gateway 側で一元管理。

Alternatives

  • 素の Vercel AI SDK のみ(旧 ADR 0002 案): モデル呼び出しは最小だが、30 秒制限の回避・スレッド直列化・状態保持を自作することになる。却下。
  • Mastra をコンテナで維持: ADR 0002 で却下済み(Workers で動作せず、コンテナ前提が ADR 0006 と矛盾)。
  • Workers AI のオープンモデルに置き換え: モデルまで Cloudflare 完結になるが、gpt-5-mini からの応答品質変化が大きく「現状機能の維持」要件に反する。AI Gateway 経由のため将来の切り替え余地は残る。却下。
  • 専門エージェント網を AI SDK で再実装: 旧計画フェーズ 6。費用対効果が低くユーザー判断で削除が確定。却下。