自律型コードベースに向けて
マルチエージェント研究ハーネスの一部をプレビュー公開し、自律的なコード開発の実現を目指す取り組みを開始。
キーポイント
数千のAIエージェントを協調させ、人間の介入をほとんど必要とせずに複雑なソフトウェア(ウェブブラウザ)を開発・維持するシステムの実証実験に成功した
単一の大規模エージェントではなく、多数のエージェントをオーケストレーションするハーネス(制御システム)の構築が、自律的コーディングのスケーリングにおける重要な進展である
モデルの進化(GPT-5.1/5.2)が、長期間実行されるエージェントの指示遵守精度を向上させ、本実験の実現可能性を高めた
研究は内部プロジェクトとして始まったが、その一部をユーザーに公開し始めており、実用化への移行段階にあることを示唆している
影響分析・編集コメントを表示
影響分析
この研究は、単なるコード生成支援を超えて「自律的に進化するコードベース」という概念を実証し、ソフトウェア開発のパラダイムシフトの可能性を示した。大規模なエージェント群の協調作業を可能にするオーケストレーション技術は、複雑なシステム開発の自動化に向けた重要な基盤技術となる。
編集コメント
「AIがAIを開発する」というメタ的な自動化が現実味を帯びてきた。開発者の役割が、コーディングからエージェント群の設計・管理へと根本的に変容する可能性を示唆する重要な一歩。
自律的なコードベース構築に向けた研究の進展
ある研究チームは、長期にわたって自律的にコードを生成・修正するエージェントのスケーリングに関する研究を進め、その成果を一部公開し始めた。この研究は、現在のAIモデルの限界を探る内部プロジェクトとして始まった。チームは、数千ものAIエージェントを調整し、その行動を観察するための新しい「ハーネス」(制御フレームワーク)を開発した。
昨月までに、このシステムは1週間連続で安定して動作するようになり、研究プロジェクトであるウェブブラウザのコードへのコミットの大部分を自律的に行えるようになった。このブラウザは外部利用を想定しておらず、コードには不備があることが予想されていた。しかし、多少の欠点はあっても、数千のエージェントが人間の介入なしに、ほぼ完全に動作する成果物を協調して生み出せたことは、重要なマイルストーンと感じられた。
研究は、個人的なサイドプロジェクトとして、JavaScriptをサポートしないウェブページレンダリングエンジンの構築から始まった。当初は、最先端モデルに詳細な計画の作成と実行を促したが、タスクの規模が大きすぎて、モデルはすぐに道を見失い、複雑な実装詳細で行き詰まってしまった。しかし、モデルが小さな単位では優れたコードを書く知性を示したため、プロジェクトを細かいサブタスクに分解する必要性が明らかになった。
次の段階では、エージェントが並行して担当できる主要な作業の依存関係グラフを計画させ、タスクごとにエージェントを手動で起動した。これにより処理量は増えたが、エージェント同士が通信したりプロジェクト全体に対してフィードバックを与えたりできないため、成果は大きく改善されなかった。システムはより動的である必要があった。
一方で、GPT-5.1/5.2のような新型モデルは、指示を正確に追従する能力が高く、長期実行エージェントに適していることが判明した。これを受け、ハーネスはOpenAIのモデルを基盤とするように更新された。これにより、JavaScriptなしのシンプルなブラウザの構築には成功したが、1つのエージェントで完全なエンジンを構築するには時間がかかりすぎるという課題が残った。
そこで新たに始まった研究の焦点は、「計算リソースを10倍投入すれば、意味のある生産性を10倍得られるか」という問いだった。分散システムの複雑さを避けるため、単一の大規模なLinux仮想マシン上で、多数のリソースを活用するRustベースのシンプルなハーネスを新たに構築した。この取り組みを通じて、大規模な自律的コーディングシステムの実現可能性と、そのための基盤技術の開発が大きく前進している。
原文を表示
Blog / researchWe're excited by the reaction to our research on scaling long-running autonomous coding.
This work started as internal research to push the limits of the current models. As part of the research, we created a new agent harness to orchestrate many thousands of agents and observe their behavior. By last month, our system was stable enough to run continuously for one week, making the vast majority of the commits to our research project (a web browser). This browser was not intended to be used externally and we expected the code to have imperfections.
However, even with quirks, the fact that thousands of agents could work together to produce work that was almost entirely runnable without human intervention felt like a milestone worth sharing. Since then, we've continued our research, and we wanted to go more in-depth on how the harness was built.
We're also making part of this research available to try for some users.
Our research project started as a personal side project of mine.
A browser felt like an interesting benchmark. It was complex enough to reveal limitations with frontier models, and there are many different subsystems that needed to work together.
My initial plan was to support rendering web pages without JavaScript support. I started by prompting Opus 4.5, asking it to write a detailed plan for building a browser engine. I would repeatedly nudge it to "keep going" to see how far it would go on the plan.
This failed quickly. The model lost track of what it was doing, frequently stopped to proclaim success despite being far from it, and got stuck on complex implementation details. But it showed signs of deep knowledge and intelligence. It could write good code in small pieces.
The core issue was that the browser was too overwhelming of a task and needed to be broken down into subtasks. Next, I had the agent plan out a dependency graph of major work that agents could take up in parallel. Agents were manually spawned for tasks and nudged when they stopped. This increased the throughput, but the results weren't much better. Agents couldn't communicate with each other or provide feedback on the project as a whole. The system needed to be more dynamic.
Meanwhile, GPT-5.1 (and later GPT-5.2) began showing better results for their ability to follow instructions precisely. This seemed like a good fit for long-running agents, so we updated our harness to use OpenAI models based on these experiments.
At this point, the harness could build a simple version of the web browser without JavaScript, but building a complete browser engine with one agent would be prohibitively slow.
This started our next round of research. Could we spend 10x more on compute to get 10x more meaningful throughput?
We started a new repository with a simple Rust-based harness.
Rather than dealing with the complexity of distributed systems, we instead ran the harness on a single large Linux VM (Virtual Machine) with lots of resources. To control the harness, we would SSH into the VM and use a simple terminal interface.
We spent more time up front on proper observability into the system. We logged all agent messages, system actions, and command outputs, with timestamps so we could analyze and replay sessions. This was not only helpful for us to manually review, but also for piping back into Cursor to sift through large amounts of data and quickly find patterns.
Our first multi-agent idea was the most simple: have agents with equal roles use a shared state file to see what others are working on, decide what to work on, and update the file.
We would be the least prescriptive about what to do and instead let the agents figure out how to self-coordinate. This failed quickly.
The coordination file quickly created more problems. Agents held locks for too long, forgot to release them, tried to lock or unlock when it was illegal to, and in general didn't understand the significance of holding a lock on the coordination file. Locking is easy to get wrong and narrowly correct, and more prompting didn't help.
Locking also caused too much contention. 20 agents would slow to the throughput of 1-3 with most time spent waiting on locks. We tried giving agents a tool to explicitly wait on another agent's work, but they rarely used it. We also tried a lockless optimistic concurrency control approach, which reduced overhead but didn't eliminate confusion.
The lack of structure between agents meant no single agent took on big, complex tasks. They avoided contention and conflict, opting for smaller and safer changes versus taking responsibility for the project as a whole.
Next, we separated roles to gives the agents ownership and accountability:
A planner would first lay out the exact approach and deliverables to make progress toward the user's instructions. This would be handed to an executor, who became the sole lead agent responsible for ensuring the plan was achieved comp
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み