一覧へ
1 分で読めます

OpenAIがエージェントだけで100万行のコードを作った秘密、ハーネスエンジニアリング5つの原則

OpenAI Codexチームがエージェントだけで100万行のコードベースを構築する過程で発見した、ハーネスエンジニアリングの5つの核心原則を解説します。

最近、「ハーネス」という言葉を頻繁に目にするようになりました。OpenAIが公開したブログ記事が、この概念を明確に定義してくれました。エージェント時代にエンジニアが実際に何をすべきなのか、整理します。

ハーネス(Harness)は、AIエージェントが現実世界に影響を与えるためのツールの外殻です。推論モデルが脳だとすれば、ハーネスは手足です。ファイルを読み、コードを修正し、テストを実行し、デプロイまで行う, すべての行為がハーネスの中で起こります。

OpenAIの社内チームは2025年8月末に空のリポジトリからスタートし、100万行の新製品をCodexエージェントだけで構築しました。人間が直接コードを書かないという条件でした。手作業の10分の1の時間で完成したと発表しています。この過程で得られた原則が以下の5つです。

エージェントが見えない知識は存在しないのと同じ

Codexにとって、実行中にアクセスできない情報は存在しない情報と同義です。Google Docsにある企画書も、Slackで合意したアーキテクチャの方針も、誰かの頭の中だけにある暗黙知も、すべて見えません。3ヶ月後に入社する新人に見えないのと同じ状況です。

そこでチームは、あらゆる決定をリポジトリ内のマークダウン、スキーマ、実行計画書(ExecPlan)に落とし込みました。

  • ExecPlanはPLANS.mdに定義された自己完結型の設計ドキュメント
  • 初心者が読んで最後まで実装できなければ合格基準を満たさない
  • Codexが単一プロンプトで7時間以上連続作業した事例も存在
  • matkladのARCHITECTURE.mdの概念をエージェント向けに拡張した構造

「もっと頑張れ」ではなく「何の能力が足りないか」を問え

初期段階でエージェントの速度が期待より遅かったそうです。原因はモデルの性能ではなく、環境が十分に整っていなかったことでした。失敗するたびに「どの能力が欠けていて、どうすればエージェントが読み取り検証できるようになるか」を問いました。

  • 外部ライブラリの代わりに自作の並行処理ヘルパーでOpenTelemetryと100%連携
  • 業界でよく言われる「退屈な技術」がエージェントに有利(API安定性とトレーニングデータの表現度が高いため)

ドキュメントではなく機械的な強制がコードの一貫性を守る

ドキュメントだけでは、エージェントが生成したコードベースの一貫性が崩壊しました。そこでチームは、実装を細かく指示する代わりに不変のルールだけを機械的に強制する方式を選びました。データ境界でのパースを必須としつつ、どのライブラリを使うかはエージェントに委ねました。アーキテクチャも階層型ドメイン構造に固定し、依存関係の方向をリンターで検証しています。

  • ビジネスドメインごとにProviders → Service → Runtime → UIの固定レイヤー
  • Types、Config、Repoが下位で共有される横断的関心事の構造
  • カスタムリンターと構造テストが違反時にビルドを即座に失敗させる
  • リンター自体もCodexが作成

エージェントに目を与えれば6時間でも一人で働く

Chrome DevTools Protocolをエージェントのランタイムに接続し、DOMスナップショット、スクリーンショット、ナビゲーション機能をCodexに提供しました。作業前後のスナップショットを比較し、ランタイムイベントを観察した後、修正をクリーンになるまで繰り返すループ構造です。

オブザーバビリティツールも同じ方式で接続しました。git worktreeごとに一時的なオブザーバビリティスタックが起動し、作業完了後に消えます。

  • Victoria Logs(LogQL)とVictoria Metrics(PromQL)でエージェントが直接ログとメトリクスを照会
  • 「サービスの起動を800ms以内に終わらせろ」というプロンプトが実行可能に
  • 単一Codex実行が6時間以上ひとつのタスクに集中するケースも定期的に観測

地図は渡せ、ただし1,000ページのマニュアルは渡すな

コンテキスト管理がエージェントの効果を左右します。最初は巨大なAGENTS.mdひとつにすべてを詰め込む方式を試みましたが失敗しました。matkladが2021年に書いたARCHITECTURE.mdの概念がここで真価を発揮しました。プロジェクト全体の構造を短く俯瞰し、めったに変わらないものだけを載せるという原則です。エージェントにも同様に適用されます。

  • ARCHITECTURE.mdはコードマップであり、コード地図帳ではない
  • アーキテクチャの不変ルールは「何かが存在しない」という形で表現されることが多い
  • 境界(boundary)を明示すれば、その先の実装をすべて制約する効果がある

まだ解決されていない問い

このCodexチームにも、まだ答えの出ていない問いがあります。エージェントだけで構築されたシステムが何年にもわたってアーキテクチャの一貫性を維持できるかは、誰にもわかりません。モデルが進化し続ければ、このフレームワーク自体がどう変わるかも未知数です。

ひとつだけ確かなことがあります。コードをうまく書く時代は終わりつつあり、環境をうまく設計する時代が始まっています。

ニュースレターに登録

最新のプロジェクト、記事、AIとWeb開発の実験に関する情報をお届けします。