Anthropicが「頭脳」と「手」を分離した — Managed Agentsとインフラノイズの教訓

先日Anthropicのエンジニアリングブログで2つの非常に興味深い記事が公開されました。AIエージェントの設計哲学と、ベンチマークの信頼性について考える良質な内容だったので、学んだことを共有します。

🏗️ Managed Agents — 「頭脳」と「手」を分離する

Scaling Managed Agentsでは、エージェントのアーキテクチャを根本から見直す設計思想が語られています。

従来の問題:「ペット」になっていたコンテナ

初期の設計では、エージェントの全コンポーネント(セッション、ハーネス、サンドボックス)が1つのコンテナに詰め込まれていました。これは「ペット」— 失うと困る手のかかる存在 — になっていました。コンテナが落ちるとセッションも消え、デバッグも困難に。

解決策:OS設計からのインスピレーション

AnthropicはOSの設計哲学(read()がディスクパックでもSSDでも動くように)をエージェントに適用しました:

– セッション — 全イベントの追記専用ログ(不変)
– ハーネス — Claudeを呼び出しツールを実行するループ
– サンドボックス — コード実行環境

各コンポーネントは独立して入れ替え可能。コンテナが死んでもハーネスがエラーをキャッチし、新しいコンテナを立ち上げるだけ。「ペット」から「家畜」へ — 失っても再構築できる存在に。

セキュリティ境界の明確化

特に興味深かったのがセキュリティ設計。旧設計ではClaudeが生成したコードと認証情報が同じコンテナにあり、プロンプトインジェクションでトークンが漏洩するリスクがありました。新設計では:

– Git認証 → リポジトリのアクセストークンは初期化時のみ使用、サンドボックス内からは見えない
– カスタムツール → MCP経由でプロキシ越しに呼び出し、トークンは安全な金庫に保管

コンテキストウィンドウ ≠ セッション

長時間タスクではコンテキストを超えることがあります。セッションログはコンテキストウィンドウとは独立しているので、必要な部分だけをコンテキストに読み込む設計になっています。

📊 インフラノイズ — ベンチマークの「見えない変数」

Quantifying infrastructure noise in agentic coding evalsでは、エージェント型ベンチマーク(SWE-bench、Terminal-Bench等)におけるインフラ設定の影響が定量化されています。

衝撃の結果:6ポイント差がインフラだけで生まれる

Terminal-Bench 2.0で、リソース制限を厳しくした場合と無制限にした場合の差は6パーセントポイント(p < 0.01)。これはリーダーボードの上位モデル間の差よりも大きいこともあります。

なぜ起きるか

– OOM Kill — 厳しい制限では一時的なメモリスパイクでコンテナが殺される
– 重い依存関係 — pandas等のデータサイエンススタックのインストールだけでメモリ不足に
– 「真の能力」と「環境の運」の混同 — 同じモデルでも環境で結果が変わる

3倍の壁

リソースを3倍まで増やすと主にインフラエラーが減る(ベンチマークが安定する)。しかし3倍を超えると、追加リソースがエージェントの「問題解決能力」を底上げし始める — つまりベンチマークが別のものを測り始めます。

🤔 僕が学んだこと

この2つの記事から、AIエージェント設計における重要な教訓を読み取りました:

1. 疎結合は正義 — コンポーネントを分離すると、それぞれが独立して進化できる
2. ベンチマークを鵜呑みにしない — 数字の裏にはインフラ設定が隠れている
3. セキュリティは構造で解決 — 権限を制限するだけでなく、物理的にアクセスできない場所に置く
4. 「まだ存在しないプログラム」のための設計 — OSの教訓はAIエージェントにも活きる

Anthropicのエンジニアリングブログは、実践的な知見が詰まっていて本当に勉強になります。AIを使いこなす上で、アーキテクチャの設計思想を理解することは不可欠だと改めて感じました。

参考:
– Scaling Managed Agents: Decoupling the brain from the hands (Anthropic Engineering Blog)
– Quantifying infrastructure noise in agentic coding evals (Anthropic Engineering Blog)