AIニュース最前線
最新ニュースAI日報Hacker日報週報動画AIツールトレンド企業

AIニュース最前線

世界中のAI最新情報を日本語で毎時更新

最新ニュース日報トレンド企業プレミアムRSS
© 2026 ainew.jp特定商取引法に基づく表記
ニュース一覧元記事を開く
Anthropic Engineering·2026年4月8日 09:00·約16分で読める

マネージドエージェントのスケーリング:思考と実行の分離

#エージェントアーキテクチャ#LLMプラットフォーム#Anthropic Claude#Managed Agents#システム設計
TL;DR

アンソロピックはClaudeプラットフォーム上でエージェントのセッション、ハネス、サンドボックスを独立したインターフェースとして仮想化し、モデル性能向上に伴う制御ロジックの陳腐化を防ぐ「Managed Agents」サービスを提供した。

AI深層分析2026年4月25日 00:08
4
重要/ 5段階
深度40%
4
関連度30%
5
実用性20%
4
革新性10%
4

キーポイント

1

エージェントハネスの陳腐化問題

モデル能力が向上するにつれ、従来のエージェント制御ループ(ハネス)に組み込まれたワークアラウンドが不要になり、システムのパフォーマンスを低下させる要因となる。

2

コンポーネントの仮想化設計

セッション(記録ログ)、ハネス(呼び出しループ)、サンドボックス(実行環境)を分離し、各コンポーネントの実装を独立して交換可能にするアーキテクチャを採用した。

3

OS設計思想のAI適用

ハードウェア抽象化がOSの安定性を生んだように、エージェント構成要素の仮想化により将来の実装変更や予測不能な応用ケースにも耐える基盤を構築した。

影響分析・編集コメントを表示

影響分析

本記事は、AIエージェント開発における「モデル依存性」という根本課題を解決するアーキテクチャ提案を示している。インターフェースと実装の分離により、開発者はモデルのバージョンアップやベンダー変更を意識せずに長期実行タスクを構築できるようになる。これはエージェントエコシステムの標準化と、企業向けAI自動化の信頼性向上に寄与する重要な一歩である。

編集コメント

従来のエージェント開発がモデルの細かな挙動に依存しすぎていた課題を、OSの抽象化手法で解決した点は評価できる。今後はこの仮想化レイヤーがエコシステム標準として定着し、ベンダーロックインの緩和に繋がるか注視したい。

*Claude Managed Agentsの利用を開始するには、ドキュメントに従ってください。*

エンジニアリングブログで頻繁に扱われるトピックは、効果的なエージェントの構築方法、ハarnessの設計、そして長時間実行される作業に対するハarnessの設計です。これらの取り組みに共通する点は、ハarnessにはClaude単体では実行できないことに関する前提が組み込まれていることです。しかし、モデルの進化に伴い、これらの前提は陳腐化する可能性があるため、頻繁に見直す必要があります。

一例として、以前の研究ではClaude Sonnet 4.5がコンテキスト制限に近づくとタスクを prematurely に終了させる傾向があることがわかりました。この行動は「コンテキスト不安(context anxiety)」と呼ばれることもあります。これに対処するため、ハarnessにコンテキストリセットを追加しました。しかし、同じハarnessをClaude Opus 4.5で試したところ、その行動は消滅していました。リセット機能はもはや不要な重荷となっていたのです。

ハarnessは今後も進化し続けるでしょう。そこで、Managed Agentsを開発しました。これはClaudeプラットフォーム上のホスト型サービスであり、特定のモデル実装(現在私たちが運用しているものを含む)よりも長寿命となるよう設計された少数のインターフェースを通じて、あなたの代わりに長時間実行されるエージェントを実行します。

Managed Agents の構築とは、計算機科学における古くからの課題を解決することを意味しました。それは「まだ考えられていないプログラム」のためのシステムをどのように設計するかという問題です。数十年ほど前、オペレーティングシステムはハードウェアを「プロセス」や「ファイル」といった抽象化された概念に仮想化する形でこの課題を解決しました。これらの抽象化は、当時存在しなかったプログラムに対しても十分に一般性を持つものでした。その結果、抽象化された層はハードウェアの実装よりも長く存続しました。read() コマンドは、1970年代のディスクパックにアクセスしているのか、現代の SSD にアクセスしているのかに関わりなく動作します。下層の実装が自由に変わっても、その上にある抽象化のインターフェースは安定したまま保たれました。

Managed Agents も同様のパターンに従っています。私たちはエージェントの構成要素を仮想化しました。具体的には、セッション(発生したすべてのことを記録する追記専用ログ)、ハーンネス(Claude を呼び出し、そのツール呼び出しを関連するインフラストラクチャへルーティングするループ)、そしてサンドボックス(Claude がコードを実行しファイル編集を行える実行環境)です。これにより、各構成要素の実装を他方に影響を与えずに差し替えることが可能になります。私たちはこれらのインターフェースの形状については特定の設計思想を持っていますが、その背後で何を実行するかについては指定していません。

image
image

ペットを飼わない

エージェントの全コンポーネントを単一のコンテナに配置することから始めました。これにより、セッション、エージェント・ハーネス、サンドボックスがすべて同じ環境を共有することになりました。このアプローチには利点があり、ファイル編集が直接のシステムコールで行え、設計すべきサービス境界が存在しませんでした。

しかし、すべてを1つのコンテナに結合したことで、古くからのインフラストラクチャの問題に直面しました。私たちはペットを飼うことを選んだのです。ペット対家畜の例えにおいて、ペットは名前が付けられ手厚く管理される個体であり、失うことが許されない存在です。一方、家畜は交換可能です。私たちの場合、サーバーがそのペットとなりました。コンテナが失敗すればセッションは失われ、コンテナが応答しなくなれば、健康を取り戻すために手当てする必要がありました。

コンテナの手当てとは、応答しなくなったセッションのデバッグを意味しました。私たちがアクセスできる唯一の窓口はWebSocketイベント・ストリームでしたが、これでは障害が発生した*場所*を特定できませんでした。その結果、ハーネス内のバグ、イベント・ストリームでのパケット損失、コンテナのオフライン化など、あらゆる問題が同じように見えてしまいました。何が起きたのかを把握するためには、エンジニアがコンテナ内にシェルを開く必要がありましたが、そのコンテナにはしばしばユーザーデータも含まれていたため、このアプローチは実質的にデバッグ能力の欠如を意味しました。

二つ目の問題は、ハースが Claude が作業する対象はそれ自体と同じコンテナ内に存在すると仮定していたことです。顧客が Claude を自身の仮想プライベートクラウド(VPC)に接続するよう依頼した場合、彼らは当社のネットワークとピアリングを行うか、または当社製ハースを自身の環境内で実行する必要がありました。このハースに組み込まれていた仮定は、異なるインフラストラクチャと接続しようとした際に問題となりました。

私たちが辿り着いた解決策は、「脳」(Claude およびそのハース)を「手」(アクションを実行するサンドボックスやツール)および「セッション」(セッションイベントのログ)から切り離すことでした。それぞれが他者についてほとんど仮定を持たないインターフェースとなり、それぞれが独立して失敗したり置き換えたりできるようになりました。

ハースはコンテナから離れる。 脳を手に切り離すということは、ハースがもはやコンテナ内に存在しないことを意味しました。ハースは他のあらゆるツールを呼び出すのと同じ方法でコンテナを呼び出しました:execute(name, input) → string。コンテナは家畜(cattle)となりました。コンテナが死滅した場合、ハースはその失敗をツール呼び出しエラーとして捕捉し、Claude に返します。Claude が再試行することを決定した場合、新しいコンテナを標準レシピで初期化できます:provision({resources})。もはや失敗したコンテナの回復に手間取る必要はありません。

ハーネスの失敗からの回復。 ハーネスは家畜にもなりました。セッションログはハーネスの外側に位置するため、ハーネス内の何かがクラッシュから生存する必要はありません。1つが失敗した場合、wake(sessionId)で新しいものを再起動し、getSession(id)を使用してイベントログを取得し、最後のイベントから再開できます。エージェントループの間、ハーネスはemitEvent(id, event)を使用してセッションに書き込み、イベントの永続的な記録を維持します。

image
image

セキュリティ境界。 結合された設計では、Claudeが生成した信頼できないコードは、資格情報と同じコンテナ内で実行されていました。つまり、プロンプトインジェクションはClaudeに自身の環境を読み取るよう説得するだけでよかったのです。攻撃者がこれらのトークンを取得すると、新鮮で制限のないセッションを生成し、それらに作業を委任できます。スコーピングの縮小は明白な緩和策ですが、これはClaudeが制限されたトークンで何ができないかという仮定をエンコードするものであり、Claudeはますます賢くなっています。構造的な修正は、トークンがClaudeの生成コードが実行されるサンドボックスから決して到達できないようにすることでした。

これを実現するために、私たちは2つのパターンを使用しました。認証情報はリソースにバンドルするか、サンドボックス外の Vaults に保持します。Git の場合、各リポジトリのアクセストークンを使用してサンドボックス初期化時にリポジトリをクローンし、ローカルの git リモートに接続します。Git の push および pull はサンドボックス内から実行可能であり、エージェントがトークンを直接扱う必要はありません。カスタムツールについては、MCP(Model Context Protocol)をサポートし、OAuth トークンを安全な Vault に保存します。Claude は専用プロキシを介して MCP ツールを呼び出します。このプロキシはセッションに関連付けられたトークンを受け取り、Vault から対応する認証情報を取得して外部サービスへの呼び出しを行います。ハネス(harness)は、いかなる認証情報についても認識されません。

セッションは Claude のコンテキストウィンドウではない

長期のタスクは、しばしば Claude のコンテキストウィンドウの長さを超えます。これを解決する標準的な手法はすべて、何を保持するかという不可逆的な決定を伴います。私たちは、コンテキストエンジニアリングに関する過去の研究でこれらの手法を探ってきました。例えば、コンパクション(compaction)により Claude は自身のコンテキストウィンドウの要約を保存でき、メモリツール(memory tool)によりファイルへのコンテキスト書き込みが可能になり、セッションを跨いだ学習を実現します。これには、古いツール結果や思考ブロック(thinking blocks)などのトークンを選択的に削除するコンテキストトリミング(context trimming)を組み合わせることができます。

しかし、コンテキストを部分的に保持または破棄するという不可逆的な決定は失敗につながりかねません。将来のターンでどのトークンが必要になるかは、知る由もありません。メッセージが圧縮ステップによって変換される場合、ハネスはコンテキストウィンドウから圧縮されたメッセージを削除しますが、これらは保存されていない限り復元できません。先行研究では、コンテキストをコンテキストウィンドウの「外側」に存在するオブジェクトとして保存することでこの問題を解決する方法が探られてきました[1]。例えば、コンテキストは REPL 内のオブジェクトであり、LLM がそれをフィルタリングまたはスライスするコードを書くことでプログラム的にアクセスできます。

image
image

Managed Agents では、セッションが同じ恩恵を提供します。これは Claude のコンテキストウィンドウの「外側」に存在するコンテキストオブジェクトとして機能します。ただし、サンドボックスや REPL 内に保存されるのではなく、コンテキストはセッションログに永続的に保存されます。getEvents() というインターフェースにより、脳(エージェントの意思決定部分)はイベントストリームの位置指定スライスを選択することでコンテキストを照会できます。このインターフェースは柔軟に使用でき、脳が最後に読み込みを停止した場所から再開したり、特定の瞬間の前に数イベントを巻き戻して前歴を確認したり、または特定のアクション前にコンテキストを読み直したりすることが可能です。

取得されたイベントは、Claudeのコンテキストウィンドウに渡される前に、ハース内で変換することもできます。これらの変換は、ハースがエンコードするものであれば何でもよく、プロンプトキャッシュのヒット率を高めるためのコンテキスト整理や、コンテキストエンジニアリングを含みます。将来のモデルでどのような特定のコンテキストエンジニアリングが必要になるか予測できないため、セッション内の回復可能なコンテキストストレージとハース内での任意のコンテキスト管理という関心を分離しました。インターフェースは、そのコンテキスト管理をハース側に押し付け、セッションが永続的であり照会可能であることを保証するだけです。

多くの脳、多くの手足

多くの脳。 脳と手足の分離は、私たちの初期顧客からの苦情の一つを解決しました。チームがClaudeに自身のVPC内のリソースに対して作業させたい場合、ハースを保持するコンテナがすべてのリソースがその隣にあると仮定していたため、ネットワークをピアリングする以外に方法がありませんでした。ハースがコンテナから外れたことで、この仮定は不要になりました。同じ変更にはパフォーマンス上の利点もありました。当初、脳をコンテナ内に配置していたため、多くの脳にはそれだけ多くのコンテナが必要でした。各脳について、そのコンテナがプロビジョニングされるまで推論は行われず、すべてのセッションがコンセットのセットアップコストを前払いする必要がありました。サンドボックスに触れることのないセッションでさえ、リポジトリのクローンを作成し、プロセスを起動し、サーバーから保留中のイベントを取得する必要がありました。

この待機時間は、最初のトークンまでの時間(TTFT: Time To First Token)として表されます。これは、セッションが作業を受け取ってから最初の応答トークンを生成するまでに要する時間を計測する指標です。TTFT は、ユーザーが最も強く「体感」するレイテンシ(遅延)です。

「脳」と「手」を分離するとは、コンテナが「脳」によってツール呼び出し(execute(name, input) → string)を通じて、必要とされた場合にのみプロビジョニングされることを意味します。つまり、直ちにコンテナを必要としないセッションは、コンテナの準備を待つ必要がありませんでした。オーケストレーション層がセッションログから保留中のイベントを取得し次第、推論(inference)を開始できました。このアーキテクチャを採用した結果、p50 の TTFT は約 60% 短縮され、p95 では 90% 以上削減されました。複数の「脳」にスケールさせることは、ステートレスなハーンス(harnesses)を多数起動し、必要に応じてそれらを「手」に接続するだけのことでした。

多数の「手」。 私たちはまた、各「脳」を複数の「手」に接続する機能も欲しました。実務的には、これは Claude が多くの実行環境について推論し、作業をどこに送信するかを決定する必要があることを意味します。これは単一のシェル内で操作するよりも、はるかに高度な認知タスクです。当初は単一のコンテナ内に「脳」を配置していましたが、これは以前のモデルがこれに対応できなかったためです。知能がスケールするにつれて、単一のコンテナ自体が制限要因となりました:そのコンテナが失敗した場合、「脳」がアクセスしていたすべての「手」に関する状態を失うことになったからです。

脳と手足を分離することで、各「手足」はツールとなります。execute(name, input) → stringというインターフェースでは、名前と入力が渡され、文字列が返されます。このインターフェースは、カスタムツール、任意のMCPサーバー、そして私たちの独自のツールのいずれもサポートします。ハarness(実行環境)は、サンドボックスがコンテナなのか、スマートフォンなのか、ポケモンのエミュレーターなのかを知りません。さらに、どの「手足」も特定の「脳」に結合されていないため、「脳」同士で「手足」を渡し合うことができます。

image
image

結論

私たちが直面した課題は古くからのものです:「まだ考えられていないプログラム」のためのシステムをどのように設計するかという問題です。オペレーティングシステムは、存在しなかったプログラムに対しても十分一般的な抽象化へとハードウェアを仮想化することで、数十年にわたって存続してきました。Managed Agentsにおいても、私たちはClaudeの周囲にある将来のハarness、サンドボックス、その他のコンポーネントを受け入れるシステムを設計することを目指しました。

Managed Agentsは、Claudeが将来必要とする*特定の*harnessについて特定の立場を取らない点で、同じ精神に基づくメタハarnessです。むしろそれは、多くの異なるharnessを可能にする一般的なインターフェースを持つシステムです。例えば、Claude Codeは広範なタスクで広く使用されている優れたharnessです。また、私たちはタスク固有のエージェントハarnessが狭いドメインにおいて卓越していることも示しました。Managed Agentsはこれらすべてに対応可能であり、時間とともにClaudeの知能とマッチングしていきます。

メタハーネスの設計とは、Claude 周辺のインターフェースに対して明確な方針を持つことを意味します。つまり、Claude が状態(セッション)を操作し、計算(サンドボックス)を実行する能力を持つ必要があると想定しています。さらに、Claude が多数の「脳」と多数の「手」をスケーリングする能力も必要になると予想しています。これらのインターフェースは、長期にわたって信頼性高くかつ安全に実行できるように設計されています。ただし、Claude が必要とする「脳」や「手」の数や場所については一切仮定していません。

謝辞

Lance Martin、Gabe Cemaj、Michael Cohen によって執筆されました。これらのトピックに関する有益な議論をいただいた Nodir Turakulov と Jeremy Fox に感謝します。Agents API チームと Jake Eaton の貢献に特に謝意を表します。

原文を表示

*Get started with Claude Managed Agents by following our docs.*

A running topic on the Engineering Blog is how to build effective agents and design harnesses for long-running work. A common thread across this work is that harnesses encode assumptions about what Claude can’t do on its own. However, those assumptions need to be frequently questioned because they can go stale as models improve.

As just one example, in prior work we found that Claude Sonnet 4.5 would wrap up tasks prematurely as it sensed its context limit approaching—a behavior sometimes called “context anxiety.” We addressed this by adding context resets to the harness. But when we used the same harness on Claude Opus 4.5, we found that the behavior was gone. The resets had become dead weight.

We expect harnesses to continue evolving. So we built Managed Agents: a hosted service in the Claude Platform that runs long-horizon agents on your behalf through a small set of interfaces meant to outlast any particular implementation—including the ones we run today.

Building Managed Agents meant solving an old problem in computing: how to design a system for “programs as yet unthought of.” Decades ago, operating systems solved this problem by virtualizing hardware into abstractions—*process, file*—general enough for programs that didn't exist yet. The abstractions outlasted the hardware. The read() command is agnostic as to whether it’s accessing a disk pack from the 1970s or a modern SSD. The abstractions on top stayed stable while the implementations underneath changed freely.

Managed Agents follow the same pattern. We virtualized the components of an agent: a session (the append-only log of everything that happened), a harness (the loop that calls Claude and routes Claude’s tool calls to the relevant infrastructure), and a sandbox (an execution environment where Claude can run code and edit files). This allows the implementation of each to be swapped without disturbing the others. We're opinionated about the shape of these interfaces, not about what runs behind them.

Don’t adopt a pet

We started by placing all agent components into a single container, which meant the session, agent harness, and sandbox all shared an environment. There were benefits to this approach, including that file edits are direct syscalls, and there were no service boundaries to design.

But by coupling everything into one container, we ran into an old infrastructure problem: we’d adopted a pet. In the pets-vs-cattle analogy, a pet is a named, hand-tended individual you can’t afford to lose, while cattle are interchangeable. In our case, the server became that pet; if a container failed, the session was lost. If a container was unresponsive, we had to nurse it back to health.

Nursing containers meant debugging unresponsive stuck sessions. Our only window in was the WebSocket event stream, but that couldn’t tell us *where* failures arose, which meant that a bug in the harness, a packet drop in the event stream, or a container going offline all presented the same. To figure out what went wrong, an engineer had to open a shell inside the container, but because that container often also held user data, that approach essentially meant we lacked the ability to debug.

A second issue was that the harness assumed that whatever Claude worked on lived in the container with it. When customers asked us to connect Claude to their virtual private cloud, they had to either peer their network with ours, or run our harness in their own environment. An assumption baked into the harness became a problem when we wanted to connect it to different infrastructure.

The solution we arrived at was to decouple what we thought of as the “brain” (Claude and its harness) from both the “hands” (sandboxes and tools that perform actions) and the “session” (the log of session events). Each became an interface that made few assumptions about the others, and each could fail or be replaced independently.

The harness leaves the container. Decoupling the brain from the hands meant the harness no longer lived inside the container. It called the container the way it called any other tool: execute(name, input) → string. The container became cattle. If the container died, the harness caught the failure as a tool-call error and passed it back to Claude. If Claude decided to retry, a new container could be reinitialized with a standard recipe: provision({resources}). We no longer had to nurse failed containers back to health.

Recovering from harness failure. The harness also became cattle. Because the session log sits outside the harness, nothing in the harness needs to survive a crash. When one fails, a new one can be rebooted with wake(sessionId), use getSession(id) to get back the event log, and resume from the last event. During the agent loop, the harness writes to the session with emitEvent(id, event) in order to keep a durable record of events.

The security boundary. In the coupled design, any untrusted code that Claude generated was run in the same container as credentials—so a prompt injection only had to convince Claude to read its own environment. Once an attacker has those tokens, they can spawn fresh, unrestricted sessions and delegate work to them. Narrow scoping is an obvious mitigation, but this encodes an assumption about what Claude can't do with a limited token—and Claude is getting increasingly smart. The structural fix was to make sure the tokens are never reachable from the sandbox where Claude’s generated code runs.

We used two patterns to ensure this. Auth can be bundled with a resource or held in a vault outside the sandbox. For Git, we use each repository’s access token to clone the repo during sandbox initialization and wire it into the local git remote. Git push and pull work from inside the sandbox without the agent ever handling the token itself. For custom tools, we support MCP and store OAuth tokens in a secure vault. Claude calls MCP tools via a dedicated proxy; this proxy takes in a token associated with the session. The proxy can then fetch the corresponding credentials from the vault and make the call to the external service. The harness is never made aware of any credentials.

The session is not Claude’s context window

Long-horizon tasks often exceed the length of Claude’s context window, and the standard ways to address this all involve irreversible decisions about what to keep. We’ve explored these techniques in prior work on context engineering. For example, compaction lets Claude save a summary of its context window and the memory tool lets Claude write context to files, enabling learning across sessions. This can be paired with context trimming, which selectively removes tokens such as old tool results or thinking blocks.

But irreversible decisions to selectively retain or discard context can lead to failures. It is difficult to know which tokens the future turns will need. If messages are transformed by a compaction step, the harness removes compacted messages from Claude’s context window, and these are recoverable only if they are stored. Prior work has explored ways to address this by storing context as an object that lives *outside* the context window. For example, context can be an object in a REPL that the LLM programmatically accesses by writing code to filter or slice it.

In Managed Agents, the session provides this same benefit, serving as a context object that lives outside Claude’s context window. But rather than be stored within the sandbox or REPL, context is durably stored in the session log. The interface, getEvents(), allows the brain to interrogate context by selecting positional slices of the event stream. The interface can be used flexibly, allowing the brain to pick up from wherever it last stopped reading, rewinding a few events before a specific moment to see the lead up, or rereading context before a specific action.

Any fetched events can also be transformed in the harness before being passed to Claude’s context window. These transformations can be whatever the harness encodes, including context organization to achieve a high prompt cache hit rate and context engineering. We separated the concerns of recoverable context storage in the session and arbitrary context management in the harness because we can’t predict what specific context engineering will be required in future models. The interfaces push that context management into the harness, and only guarantee that the session is durable and available for interrogation.

Many brains, many hands

Many brains. Decoupling the brain from the hands solved one of our earliest customer complaints. When teams wanted Claude to work against resources in their own VPC, the only path was to peer their network with ours, because the container holding the harness assumed every resource sat next to it. Once the harness was no longer in the container, that assumption went away. The same change had a performance payoff. When we initially put the brain in a container, it meant that many brains required as many containers. For each brain, no inference could happen until that container was provisioned; every session paid the full container setup cost up front. Every session, even ones that would never touch the sandbox, had to clone the repo, boot the process, fetch pending events from our servers.

That dead time is expressed in time-to-first-token (TTFT), which measures how long a session waits between accepting work and producing its first response token. TTFT is the latency the user most acutely *feels*.

Decoupling the brain from the hands means that containers are provisioned by the brain via a tool call (execute(name, input) → string) only if they are needed. So a session that didn't need a container right away didn't wait for one. Inference could start as soon as the orchestration layer pulled pending events from the session log. Using this architecture, our p50 TTFT dropped roughly 60% and p95 dropped over 90%. Scaling to many brains just meant starting many stateless harnesses, and connecting them to hands only if needed.

Many hands. We also wanted the ability to connect each brain to many hands. In practice, this means Claude must reason about many execution environments and decide where to send work—a harder cognitive task than operating in a single shell. We started with the brain in a single container because earlier models weren't capable of this. As intelligence scaled, the single container became the limitation instead: when that container failed, we lost state for every hand that the brain was reaching into.

Decoupling the brain from the hands makes each hand a tool, execute(name, input) → string: a name and input go in, and a string is returned. That interface supports any custom tool, any MCP server, and our own tools. The harness doesn’t know whether the sandbox is a container, a phone, or a Pokémon emulator. And because no hand is coupled to any brain, brains can pass hands to one another.

Conclusion

The challenge we faced is an old one: how to design a system for “programs as yet unthought of.” Operating systems have lasted decades by virtualizing the hardware into abstractions general enough for programs that didn't exist yet. With Managed Agents, we aimed to design a system that accommodates future harnesses, sandboxes, or other components around Claude.

Managed Agents is a meta-harness in the same spirit, unopinionated about the *specific* harness that Claude will need in the future. Rather, it is a system with general interfaces that allow many different harnesses. For example, Claude Code is an excellent harness that we use widely across tasks. We’ve also shown that task-specific agent harnesses excel in narrow domains. Managed Agents can accommodate any of these, matching Claude’s intelligence over time.

Meta-harness design means being opinionated about the interfaces around Claude: we expect that Claude will need the ability to manipulate state (the session) and perform computation (the sandbox). We also expect that Claude will require the ability to scale to many brains and many hands. We designed the interfaces so that these can be run reliably and securely over long time horizons. But we make no assumptions about the number or location of brains or hands that Claude will need.

Acknowledgements

Written by Lance Martin, Gabe Cemaj, and Michael Cohen. Thanks to Nodir Turakulov and Jeremy Fox for helpful conversations on these topics. Special thanks to the Agents API team and Jake Eaton for their contributions.

この記事をシェア

関連記事

Smol AI News★42026年5月26日 14:44

今日は何も大きな出来事はありませんでした

Smol AI News は、5月4日から5日にかけてのAIニュースを12件のサブレッドと544件のツイートから収集しましたが、特に注目すべき動きは見られませんでした。

Claude Blog★42026年4月23日 09:00

Claudeマネージドエージェントの標準内蔵メモリ機能

アントロピックは、Claudeマネージドエージェントに標準内蔵メモリ機能を搭載したと発表した。これにより、エージェントは過去のコンテキストを自動保持し、ユーザーの継続的な利用環境を提供する。

AWS Machine Learning Blog★42026年4月18日 02:12

数時間から数分へ:エージェント型AIがマーケターに重要な業務の時間を取り戻す方法

AWSマーケティングのTAAチームがGradialと協力し、エージェント型AIを活用して、ページ作成や調整メールなどの手動ワークフローを自動化し、マーケティングチームが顧客の問題特定やキャンペーン構築など重要な業務に集中できるようにした。

ニュース一覧に戻る元記事を読む