AIエージェントを優れたものにする仕事の大部分は、モデルの中では起こりません。起こるのは、ハーネスです。モデルに観測(observations)を与え、ツールを定義し、コンテキストを切り詰め、各応答をどう扱うかを決めるコードです。エージェントが失敗したときの典型的な修正は、人間がそのハーネスを編集することです。ツールの説明文を言い換えたり、メモリ格納(memory store)を追加したり、スクリーンショットがどう要約されるかを変えたりします。Gemini Plays PokémonのチームやPokeAgentベンチマークの背後にあるContinual Harnessの取り組みは、より鋭い問いを突きつけます——実行(run)がまだ続いている間に、モデル自身がハーネスを編集したらどうなるのか?
ハーネスこそが、エージェントが実際に住む場所だ
Gemini Plays Pokémonは公開デモでした。Geminiモデルが、ハーネスを通してゲームボーイの『Pokémon』タイトルを進めます。ハーネスは、そのゲームを言語モデルが推論できる何かへと変換しました。ハーネスはピクセルを、ラベル付きのスクリーンショット、現在のエリアの地図、そしてインベントリ一覧へと変換し、その後、ボタン操作や経路探索の補助(pathfinding helpers)をツールとして公開しました。モデルは生のエミュレータのメモリには決して触れません。モデルが見たのは、ハーネスが見せると決めたものだけであり、行動できるのは、ハーネスが定義したツールだけです。
この構造は、Pokémon固有ではありません。コーディングエージェントはあなたのリポジトリを見ません。検索ステップで取り込まれたファイルだけを見ます。ブラウザエージェントもウェブページを見ません。アクセシビリティツリーを、何らかの抽出コードが生成したものを見ます。ハーネスは、エージェントの感覚システム全体であり、運動システムであり、そしてメモリでもあります。モデルは、その中の一つの構成要素にすぎません。
つまり、エージェントの品質におけるレバレッジの多くは、重み(weights)ではなくハーネスにあります。長いエージェントタスクを走らせるチームは、そこに時間を費やします。ツールの説明を締め直し、リトライのロジックを追加し、コンテキストが要約される方法を変えて、長時間の実行でモデルが筋(スレッド)を見失わないようにします。これは実在するエンジニアリングの反復で、ほとんどがオフラインで行われます——人間が失敗を見て、足場(scaffolding)を編集し、改めて新しい実行を開始するのです。
人々が「エージェントが賢くなった」と言うとき、しばしば意味しているのは「ハーネスが良くなった」ということです。モデルのチェックポイントは一切動いていません。微調整(fine-tuning)の予算に手を伸ばす前に、まずそれを内面化しておく価値があります。
「continual(継続的)」な変化とは何か
Continual Harnessのパターンは、その改善ループを実行の内側へと移します。エージェントには、自分自身のハーネスの一部に対する書き込み権限が与えられます。再発する失敗にぶつかったとき——たとえば経路探索の補助が片方向タイルをモデル化していないせいで、エージェントが崖へ向かい続けてしまう——その補助に対する変更案を提案し、それを適用して、改善されたツールを手にしたまま続行できます。10時間目にある足場は、実行を始めたときの足場ではありません。
これはオンライン適応であり、開発者がすでに知っている2つのものの間に位置しています。微調整ではありません——モデルの重みは固定されたままです。一般的なインコンテキスト学習でもありません。そこではモデルが自分自身にただメモを書くに留まります。この改善は、永続するコードとして着地します——エージェントが書き換えた関数です——そのため残り続け、検査可能で、元に戻すこともできます。モデルはゲームをプレイしながら、同時にコントローラを維持しているのです。
Pokémonの配信ストリームを超えてこれが重要な理由は、手作業のハーネス調整ループがボトルネックだからです。各エージェントチームには「ツールの説明が少し間違っている」「メモリのステップが間違ったものを落としている」などの未処理(バックログ)があります。これらは人間が気づき、診断し、出荷(ship)しなければならない修正です。エージェントが、その作業の一部を自分で行える——しかも、本当にエージェントがぶつかっている失敗に対して行える——なら、このループは数日から数分へ圧縮されます。
自分自身のハーネスに書き込み権限を持つエージェントは、それを壊すこともできます。ナビゲーションツールへのまずい編集で実行が行き詰まることがあります。コンテキストの切り詰め(context-trimming)ステップへのまずい編集で、以後のあらゆる判断が静かに悪化するかもしれません。このパターンを安全にするには、バージョン管理された編集(versioned edits)、エージェントが触れられない固定のコアループ、そして変更によってフィードバックのシグナルが悪化したときの自動ロールバックが必要です。
自分のエージェントにこのパターンを持ち込む
これを使うのにゲームボーイエミュレータは必要ありません。パターンは4つの判断に還元できます。
編集可能な表面(editable surface)を分離する。 エージェントが書き換えてよいハーネスの部分——ツールラッパー、プロンプトテンプレート、リトリーバル(取得)のフィルタ——と、永久に立ち入り禁止にする部分——モデルを呼び出すループ、キルスイッチ、資格情報(credentials)や外部への書き込みに触れるもの——を明示的に決めてください。自己改善の部分は、小さく、きちんと区画された領域であるべきです。
ハーネスの編集をすべてコミットとして扱う。 自己改善は差分(diff)です。メッセージ、テスト、そしてリバート(取り消し)経路を与えてください。「エージェントが何を変えたのか、そしてそれをどう元に戻すのか」を答えられないなら、continualなハーネスではありません。エージェントがゆっくりと自分自身を壊しているだけです。
それが行動できるフィードバックシグナルを与える。 Pokémonには分かりやすいものがあります——ゲームを進めることです。エージェントには、それに相当するものが必要です。タスク成功率、評価(eval)スイート、レイテンシの予算(latency budget)といったものです。指標がなければ、エージェントは盲目的に編集してしまい、改善と退行(回帰)を見分けることができません。
狭く始める。 エージェントにツールの説明文やリトライ閾値を調整させてから、ツール実装の書き換えを許可してください。ロールバックの仕組みがうまく機能することが証明されてから、編集可能な表面を広げましょう。
自律実行(autonomous run)に配線する前に、このループの制約付きバージョンを見てみたいなら、日常的な最も近いアナロジー(類似)はAIネイティブなコードエディタです。エージェントが実コードへの編集案を提示し、あなたが各diffを承認するか却下するかを判断します。
Continual Harnessの結果は、「エージェントがPokémonゲームを最後までクリアした」ということではありません。——人間が所有し、長らく固定された足場として扱われてきたハーネスが、ライブで、モデルが編集可能な表面になり得る、ということです。何時間も走るエージェントを作っている人にとって、それは次の改善がどこからやって来るのかを言い換えるものになります。
Originally published at pickuma.com. Subscribe to the RSS or follow @pickuma.bsky.social for new reviews.




