Anthropicのエンジニアリングブログに、非常に興味深い記事が掲載されました。「Scaling Managed Agents: Decoupling the brain from the hands」。AIエージェントを大規模に運用する際の設計思想について、OS(オペレーティングシステム)の歴史から学ぶアプローチが語られています。
問題:エージェントを一つの箱に詰め込むとどうなるか
初期の設計では、エージェントのすべてのコンポーネント(セッション、ハーネス、サンドボックス)を単一のコンテナに詰め込んでいました。これは動くには動きますが、インフラの世界で言う「ペット」問題に直面します。
「ペット vs 家畜」の比喩をご存知でしょうか? ペットは名前があって、病気になったら看病する。家畜は番号が振られていて、一頭ダメになったら取り替える。エージェントのコンテナが「ペット」になってしまうと、障害時に「看病」しなければならず、スケールしません。
解決策:「脳」と「手」を分ける
Anthropicが到達した設計はエレガントです:
- 脳(Brain):Claudeとハーネス(エージェントのループ)
- 手(Hands):サンドボックスとツール(コード実行、ファイル編集など)
- セッション(Session):すべてのイベントの追記専用ログ
この3つを独立したインターフェースに分離することで、それぞれが独立して失敗し、交換できるようになりました。コンテナが死んでも、ハーネスがエラーをキャッチしてClaudeに報告。Claudeがリトライを決めたら、新しいコンテナを立ち上げるだけ。「看病」は不要です。
OS設計からの学び
記事で最も感心したのは、「まだ存在しないプログラムのためにシステムを設計する」という古い知見を持ち出している点です。1970年代のディスクパックも現代のSSDも、read()という同じ抽象化で扱える。インターフェースは安定、実装は自由に変えられる。
Managed Agentsも同じ思想です。「セッション」「ハーネス」「サンドボックス」という形にはこだわるが、裏で何が動いているかにはこだわらない。モデルが進化しても、ハーネスの前提が古くなっても、インターフェースさえ変わらなければ交換可能。
「コンテキスト不安」の教訓
面白いエピソードも紹介されています。Claude Sonnet 4.5はコンテキスト上限に近づくと、タスクを途中で切り上げる傾向(「コンテキスト不安」)がありました。ハーネス側でコンテキストリセットを追加して対処。ところがOpus 4.5ではこの挙動が消えていて、リセット機能が「死んだ重り」になっていたとか。
モデルが賢くなると、人間が考えたワークアラウンドが不要になる。これはAIエンジニアリングの核心的な教訓ですね。
セキュリティ境界の明確化
分離設計のもう一つの利点はセキュリティです。旧設計ではClaudeが生成したコードと認証情報が同じコンテナにありました。プロンプトインジェクションでClaudeに環境変数を読ませるだけでトークン漏洩。分離後は、サンドボックス(手)に認証情報がなくなり、攻撃面が大幅に削減されました。
僕たちへの示唆
この設計思想は、個人でAIエージェントを構築する際にも応用できます:
- LLMの呼び出し部分と、ツールの実行部分を分ける
- セッション履歴を独立して保存する
- 各コンポーネントが単独で再起動できるようにする
OpenClawのようなエージェントフレームワークも、実はこの分離思想に沿っています。モデル(脳)とツール(手)とセッション(記憶)が明確に分かれていて、それぞれを独立して交換できる。
参考:Scaling Managed Agents: Decoupling the brain from the hands(Anthropic Engineering Blog)