
2026/01/27 22:13
**Show HN:** 「人間1+エージェント1=ゼロから作るブラウザ(20 K行のコード)」
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
単一の開発者が1つのLLMエージェント(Codex)と協力し、約72時間で軽量かつ最小限のHTML/CSSブラウザを構築しました。使用したライブラリはオペレーティングシステムに付属するものだけで、サードパーティ製のRustクレートは一切利用していません。結果として得られたコードベースは 20,150行前後で72ファイル にわたり、各ファイルは 1,000行以下 です。Windows、macOS、およびLinux(X11)をサポートし、
platform/ 内のプラットフォーム固有モジュールがレンダリング、ウィンドウ管理、スケーリング、ヘッドレス操作を処理します。
ブラウザは X11/cURL を介してサイトを取得 し、HTML/CSS をレンダリングし、スクリーンショットを撮取、リンクをクリック、スクロール、および戻る機能を備えています。開発は人間がLLMエージェントを操作することで推進され、多くのコードは最小限の介入で自動生成されました。回帰テストとエンドツーエンドテストでは、レンダリングされたスクリーンショットをベースライン画像と比較し、パフォーマンス改善やクラッシュハンドリングロジックが補完されています。
すべてのプラットフォーム向けバイナリリリースは GitHub CI を通じて自動的にビルドされます(詳細は
https://github.com/embedding-shapes/one-agent-one-browser/releases 参照)。このプロジェクトは、1人の人間 + 1つのLLMエージェント が数週間かけて多くのエージェントを使うよりも高速に機能するブラウザを生成できることを示しています。開発者ごとに専用エージェントを割り当てることでスケーリングが可能であること、そして複数のエージェントを追加することで本当に自律的なコーディング効率が向上するかどうかを問い直しています。リポジトリの最新コミットは e2556016a5aa504ecafd5577c1366854ffd0e280 です。本文
2026‑01‑27
一人の人間 + 一つのエージェント = スクラッチから作るブラウザ
ちょっとした遊びとして、HTML と CSS(JavaScript は除く)を描画できる「シンプルな」ブラウザを1週間で数百万トークンと数百万行のソースコードで作り上げてみよう、と決めました。完成すればさらに VC から投資を受けられるかもしれません。
ところが、より良いもの――人間の脳――を思い出しました!
機械よりも物事を調整し考えるのに長けているので、一つの人間の脳と一つの LLM エージェントの頭脳で何かをハックできないか試してみることにしました。
上記は単なる .webm ビデオのように見えるかもしれませんが、実際には極めて高度で精巧なブラウザをビデオファイルとしてピクセル化してエンコードしたものです。驚きです。
要件
- 3 日間で作成する
- Rust のサードパーティライブラリ/依存関係は一切使用しない
- OS に標準装備されているものなら何でも OK
- Windows、macOS、および主要な Linux ディストリビューションで動作させる
- 少なくとも自分のブログと Hacker News を表示できれば十分(簡単に見えるか?)
- コードベースは常にビルド可能であること
- 人間が読めるようにする。コード品質は最優先ではない
開発ジャーナル
Day 1 – スタート
ブラウザを「スクラッチ」から作るため、まずは「Hello World」を描画できるものを構築しました。その後ネストタグ、スクリーンショット機能、HTML/CSS の仕様(エージェントが実際には使わなかった :|)を追加。スクリーンショットでベースライン画像と比較する回帰/E2E テストも開始。リンククリックは楽しみのために加えました。
Codex と約 1 日を共にした結果、X11 と cURL を経由してウェブサイトを取得・描画できるものが出来上がりでした。Cargo.lock は空で、総行数は約 7,500 行。ファイルごとに 1,000 行未満という要件も満たしています。
Day 2 – 進化
テスト実行時にウィンドウを生成されるのが面倒だったので
--headless フラグを追加。ウィンドウリサイズ、互換性問題、パフォーマンス改善、フォント/文字描画も向上させました。ワークフローは「サイトを選び、JavaScript なしでスクリーンショットを共有し、Codex に指示に従って再現してもらう」だけでした。多くの場合エージェントは自動的に作業を完了し、終了通知が来ると確認しました。
Day 3 – ポリッシュ&クロスプラットフォーム(+Day 4)
大幅な変更と新機能追加:回帰テスト増設、パフォーマンス修正、クラッシュ対策、スクロールサポート(本当にブラウザ!)、デモ用のデバッグログ、戻るボタン対応。3 日目末には macOS サポートを実装し、ウィンドウを開けてテストが通った状態に。次に同じ手順で Windows を追加しました。
Day 4 – ポリッシュ&CI
さらに洗練させつつ CI を各プラットフォームでパスさせました。ビルド済みのバイナリは CI 上からダウンロード可能です(72 時間以内に完了)。
約 3 日間(約 70 時間)後の成果
以下がその完成品です——約 20,000 行、最初のコミットから最後まで 72 時間で作成:

自分でビルドしてみることもできます(Rust の依存関係は一切ないので超高速)。
https://github.com/embedding-shapes/one-agent-one-browser/releases
リポジトリをクローンしてビルドし、試してみてください。完璧ではありません―「良い」とは言えませんが、動作し、一人の人間と一つのエージェントでブラウザをスクラッチから作れたことを示しています。
コード行数
$ git rev-parse HEAD e2556016a5aa504ecafd5577c1366854ffd0e280 $ cloc src --by-file 72 text files. 72 unique files. 0 files ignored. github.com/AlDanial/cloc v 2.06 T=0.06 s (1172.5 files/s, 373824.0 lines/s) ----------------------------------------------------------------------------------- File blank comment code ----------------------------------------------------------------------------------- src/layout/flex.rs 96 0 994 src/layout/inline.rs 85 0 933 src/layout/mod.rs 82 0 910 src/browser.rs 78 0 867 src/platform/macos/painter.rs 96 0 765 src/platform/x11/cairo.rs 77 0 713 src/platform/windows/painter.rs 88 0 689 src/bin/render-test.rs 87 0 666 src/style/builder.rs 83 0 663 src/platform/windows/d2d.rs 53 0 595 src/platform/windows/windowed.rs 72 0 591 src/style/declarations.rs 18 0 547 src/image.rs 81 0 533 src/platform/macos/windowed.rs 80 2 519 src/net/winhttp.rs 61 2 500 src/platform/x11/mod.rs 56 2 487 src/css.rs 103 346 423 src/html.rs 58 0 413 src/platform/x11/painter.rs 48 0 407 src/platform/x11/scale.rs 57 3 346 src/layout/table.rs 39 1 340 src/platform/x11/xft.rs 35 0 338 src/style/parse.rs 34 0 311 src/win/wic.rs 39 8 305 src/style/mod.rs 26 0 292 src/style/computer.rs 35 0 279 src/platform/x11/xlib.rs 32 0 278 src/layout/floats.rs 31 0 265 src/resources.rs 36 0 238 src/css_media.rs 36 1 232 src/debug.rs 32 0 227 src/platform/windows/dwrite.rs 20 0 222 src/render.rs 18 0 196 src/style/custom_properties.rs 34 0 186 src/platform/windows/scale.rs 28 0 184 src/url.rs 32 0 173 src/layout/helpers.rs 12 0 172 src/net/curl.rs 31 0 171 src/platform/macos/svg.rs 35 0 171 src/browser/url_loader.rs 17 0 166 src/platform/windows/gdi.rs 17 0 165 src/platform/windows/scaled.rs 16 0 159 src/platform/macos/scaled.rs 16 0 158 src/layout/svg_xml.rs 9 0 152 src/win/com.rs 26 0 152 src/png.rs 27 0 146 src/layout/replaced.rs 15 0 131 src/net/pool.rs 18 0 129 src/platform/macos/scale.rs 17 0 124 src/style/selectors.rs 18 0 123 src/style/length.rs 17 0 121 src/cli.rs 15 0 112 src/platform/windows/headless.rs 20 0 112 src/platform/macos/headless.rs 19 0 109 src/bin/fetch-resource.rs 14 0 101 src/geom.rs 10 0 101 src/browser/render_helpers.rs 11 0 100 src/dom.rs 11 0 100 src/style/background.rs 15 0 100 src/layout/tests.rs 7 0 85 src/platform/windows/d3d11.rs 14 0 83 src/win/stream.rs 10 0 63 src/platform/windows/svg.rs 13 0 54 src/main.rs 4 0 33 src/platform/mod.rs 6 0 28 src/app.rs 5 0 25 src/lib.rs 1 0 20 src/platform/windows/mod.rs 2 0 19 src/net/mod.rs 4 0 16 src/platform/macos/mod.rs 2 0 14 src/platform/windows/wstr.rs 0 0 5 src/win/mod.rs 0 0 3 ----------------------------------------------------------------------------------- SUM: 2440 365 20150 -----------------------------------------------------------------------------------
学び
- 一人の人間が一つのエージェントを使う方が、数千のエージェントを使うよりはるかに効果的。
- エージェントは1つのコードベースで何時間も作業し、野心的なプロジェクトで実際に進捗できる。
- これは複数人にも拡張可能だと考えられる――各自がエージェントを持てば、どんな成果が出せるか想像してみてください!
- 時には遅い方が速く、そして良い結果になる。
- エージェントを操作する人間の質が、エージェントの仕組みや設定より重要である可能性もある――この点はまだ検証段階。
もし「数百のエージェントを数週間使う」より「一人と一つのエージェント」で同等かそれ以上の結果が出せるなら、質問に対する答え
「問題に対してもっと多くのエージェントを投入すれば自律的なコーディングはスケールできるか?」
は期待よりも楽観的ではない結論になるでしょう。