0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

brain と hands を切り離す — エージェントの「手」はどこまで抽象化できるか

0
Posted at

図解

brain-and-hands.png

はじめに

エージェントを動かす環境を、1台のコンテナにまとめていないでしょうか。

Claude がいて、その隣にファイルがあって、コマンドが打てて、外部サービスの鍵も置いてある。1つ立てれば全部が揃う。最初はこれがいちばん速いです。

Anthropic も同じ作りから始めて、そこで詰まりました。

Harnesses encode assumptions that go stale as models improve.

ハーネスは、モデルが良くなるにつれて古くなる前提を、中に抱え込む

Scaling Managed Agents

2026年4月に公開された Scaling Managed Agents: Decoupling the brain from the hands は、その1台を判断する側と実行する側に割った話です。

結果として、応答が返り始めるまでの時間が p50 で約60%、p95 で90%以上短くなりました。

この記事では、何を切って、何が変わったのかを整理します。

この記事で扱うこと

  • 1台にまとめると何が壊れるのか
  • brain と hands をどこで切ったか
  • セッションをどこに置くか
  • ペットと家畜
  • 自分たちの仕組みに持ち込めること

🐕 ペットを飼うな

記事の最初の節のタイトルが、そのまま結論になっています。Don't adopt 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.

(ペットと家畜のたとえで言えば、ペットは名前が付いていて手をかけて世話をする、失うわけにいかない個体。家畜は取り替えが利く)

Scaling Managed Agents

ペットか、家畜か

この図の左が、落ちたら困るものです。困るということは、手で面倒を見ることになります。

1台のコンテナに全部を入れると、そのコンテナがペットになります。実際に起きたのはこれです。

  • 反応が鈍ると、手で介抱する必要があった
  • コンテナが落ちると、セッションのデータが消えた
  • 調べようとすると、中に入って利用者のデータを見ることになった
  • 同じ場所にある前提が、VPC への組み込みを塞いだ
  • brain ごとにコンテナが要るので、推論の開始が遅れた
  • 信用できないコードが、鍵の置いてある場所で動いていた

最後の1つがいちばん重いです。生成されたコードを実行する場所と、認証情報を置く場所が同じでした。


✂️ どこで切ったか

切り方は単純です。**判断する側(brain)と、実行する側(hands)**に割りました。

brain は Claude とハーネス。hands はサンドボックスとツールです。

そして hands 側のインターフェースを、これだけにしました。

execute(name, input) → string

brain と hands を割る

この図の真ん中の1本が、切った場所です。この形に揃えたので、向こう側が何でも刺さります。

自作のツールも、MCP サーバーも、純正のツールも、全部この口を通ります。

効いているのは、ハーネスが向こう側の正体を知らないことです。

The read() command is agnostic as to whether it's accessing a disk pack from the 1970s or a modern SSD.

read() という命令は、1970年代のディスクパックを読んでいるのか、現代のSSDを読んでいるのかを気にしない

Scaling Managed Agents

設計の狙いも、そこに置かれています。

Operating systems solved this problem by virtualizing hardware into abstractions—process, file—general enough for programs that didn't exist yet.

(OSはこの問題を、ハードウェアをプロセスやファイルといった抽象へ仮想化することで解いた。まだ存在しないプログラムにも通用するくらい一般的な抽象へ)

Scaling Managed Agents

**まだ無いもののために設計する。**ハーネスがモデルの進化に追い越される問題への答えが、これです。


📜 セッションは、ハーネスの中に置かない

もう1つの切り方があります。こちらのほうが効いています。

セッションを、ハーネスの外に出しました。

セッションは、起きたことを順に足していくだけの記録です。ハーネスはそれを読んで動きます。

セッションを外に出す

この図で、記録がハーネスの外にあるところが要点です。中に持っていないので、落ちても消えません。

The harness also became cattle. Because the session log sits outside the harness, nothing in the harness needs to survive a crash.

(**ハーネスもまた家畜になった。**セッションのログがハーネスの外にあるので、ハーネスの中には落ちても生き残る必要のあるものが何も無い)

Scaling Managed Agents

状態を持たないので、落ちたら捨てて立て直せばいい。ペットが家畜になった瞬間がここです。

記事の節のタイトルにも、はっきり書かれています。**セッションは Claude のコンテキストウィンドウではない。**同じものとして扱うと、コンテキストの制約がそのままセッションの制約になります。


🔐 鍵は、どこにも渡さない

外部サービスを呼ぶところも作りが変わっています。

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.

(独自ツールについては MCP に対応し、**OAuth トークンは保管庫に置く。**Claude は専用のプロキシ経由で MCP のツールを呼び、プロキシはセッションに紐づくトークンを受け取る)

Scaling Managed Agents

鍵はプロキシの向こうに置く

この図で、鍵が Claude 側にもハーネス側にも無いところが要点です。触れないものは、漏らせません。

プロキシが保管庫から取ってきて、外部サービスを叩きます。Claude もハーネスも、本物のトークンを一度も持ちません。

さきほどの「信用できないコードが、鍵の置いてある場所で動いていた」への答えが、これです。境界を作ったのではなく、そもそも同じ場所に置くのをやめました。


📉 何が良くなったか

数字が1つ出ています。応答が返り始めるまでの時間です。

短くなった割合
p50(中央値) 約60%
p95 90%以上

遅かったのは推論ではなかった

この図で削れているのは、推論そのものではなくその手前です。

brain ごとにコンテナを立てていたので、**立ち上がるまで推論が始められませんでした。**切り離したことで、その待ちが消えています。

p95 の落ち方が大きいのが目を引きます。遅い側ほど、待たされていたのが推論以外だったということです。


🪜 持ち込めること

自分たちの仕組みに引き取れる形にすると、問いは1つになります。

それは、落ちたら困るものか。

落ちたら困るか

この図の分かれ道が、判断の場所です。困るなら、そこに状態を持ちすぎています。

エージェントを動かす環境を作るとき、つい1台に全部を入れます。速いからです。そして、そのうち手で面倒を見始めます。

チェックする観点は3つでした。

  • **状態を、処理の外に置けているか。**落ちたときに消えるものがあるなら、そこがペット
  • **実行する場所と、鍵を置く場所が分かれているか。**生成されたコードが動く場所に認証情報があるなら、境界が無い
  • **向こう側の正体を知らずに済んでいるか。**特定のサンドボックスを前提にしているなら、次の世代で書き直しになる

3つ目がいちばん先の話です。ハーネスは、モデルが良くなるほど前提が古くなる場所にあります。だから中に抱え込む前提を減らす。

速く作ることと、捨てられるように作ることは、別の作業です。


📝 まとめ

3つに絞ります。

1つ目。1台に全部入れるとペットになる。 落ちたら困るものは、手で面倒を見ることになります。セッションが消える、調べるために利用者のデータを見る、鍵のある場所で生成コードが動く。全部そこから来ます。

2つ目。切り口は execute(name, input) → string の1本。 この形に揃えたので、自作ツールも MCP サーバーも純正ツールも同じ口で刺さります。向こう側の正体を知らずに済みます。

3つ目。セッションを外に出すと、ハーネスも捨てられるようになる。 中に生き残らせるものが無くなるからです。ここが「ペットが家畜になった」場所です。

明日いちばん先に試すことを1つ挙げるなら、これをおすすめします。

いま動かしているエージェントの実行環境を、いきなり落として立て直してみてください。

何かを手で戻す必要があったなら、**それがペットです。**戻す手順を覚えている人が1人しかいないなら、なおさらです。


📚 参考

一次資料

関連

💡 この記事について
本記事は2026年9月18日時点で公開されている情報をもとにまとめています。

英文の引用はすべて原典と照合しています。日本語訳は筆者によるもので、公式訳ではありません。

数字はすべて Anthropic が公開したものです。筆者による計測は含まれません。TTFT の改善率は Anthropic の環境での値であり、構成の違う環境でそのまま再現するものではありません。

この記事はマネージド版のエージェント基盤の話です。手元で1人が使う範囲では、1台にまとめる作りのほうが妥当な場面もあります。


エンジニアがAIを活用して次のレベルへ。上流はさらに上へ、下流は上流へ。
そのために何をするかを書いていきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?