ベンチマーク
MirrorCode
原文:MirrorCode
長期にわたるコーディングのベンチマーク。モデルは、元のソースコードを見ずに、プログラム全体を最初から最後まで再実装する。
2026年10月1日時点のデータ。最新の得点は原文へ。
概要
MirrorCodeは、Epoch AIがMETRと共同で開発した、長期にわたるコーディングのベンチマークである。MirrorCodeの課題では、AIモデルは元のソースコードを見ずに、プログラム全体を最初から最後まで再実装するよう求められる。AIの解は、非公開のテストを含むエンドツーエンドのテストで、元のプログラムの出力と完全に一致しなければならない。MirrorCodeの25の対象プログラムは、Unixのユーティリティ、データのシリアライズとクエリのツール、バイオインフォマティクス、インタプリタ、静的解析、暗号、圧縮と、コンピューティングのさまざまな領域にわたる。
ここに示すスコアは、リーダーボード用の構成MirrorCode (ML, +Private, 2L)によるものである。MediumとLargeの区分にある15の対象プログラムを、それぞれ2つの実装言語(基本的にGoとAda)で評価するので、課題は30になる。各課題は3回実行し、1回の試行あたりの予算は100億トークンと7日間である。
詳しくは、MirrorCodeのページ、論文、またはオープンソースのリポジトリを参照。
方法論
MirrorCodeでは、コマンドラインインターフェースを持つプログラムを再実装する能力でAIエージェントを試す。元のプログラムのソースコードにもWebにもアクセスできないので、完全に再実装するには、コードを部分ごとに翻訳するだけでなく、プログラム全体の構造を考え出す必要がある。AIは元のプログラムに対して実行だけの権限を持ち、任意の引数で実行して出力を観察できるので、元のプログラムの振る舞いを探ることができる(中身の見えないオラクル)。AIはまた、プログラムを説明するドキュメントと、再実装の範囲をさらに絞り込むためのテスト入力の例も利用できる。既存のプログラム、ドキュメント、テストの例が、AIの書くソフトウェアの振る舞いを正確に定める仕様となり、その仕様をどう満たすかはAIに任される。
AIの解は、元のプログラムのテストスイート、現実のデータ、LLMの助けを借りた生成から作ったエンドツーエンドのテストで評価する。各対象プログラムには数百から数千のテストケースがある。合格するには、AIの解は参照プログラムとまったく同じ出力(標準出力と標準エラー出力のストリームへの出力)を生成しなければならない。エンドツーエンドのテストをすべて見せてしまうと、エージェントはMirrorCodeの課題を本当に解く代わりに、単に参照表を作ればよくなってしまう。これを防ぐため、テストの一部を非公開にしており、非公開のテストはベンチマーク全体の平均で34%である。MirrorCodeの課題を解けたとみなす基準は、テストの100%に合格することである。
MirrorCodeは、不正の手口をまるごと無効にするよう、根本から設計されている。AIは既存の対象プログラムをラップしたり、何らかの形で利用したりしようとするかもしれない。これを防ぐため、採点時にはエージェントのコードを、参照バイナリのない別のサンドボックスにコピーする。汎用のコードを実装する代わりに参照表を作るかもしれない。非公開のテストケースがあるので、答えをハードコードした解は失敗し、再実装の成功とみなされることはない。採点の仕組みに干渉するかもしれない。これを防ぐため、採点を開発用のサンドボックスから切り離し、記録された解の出力を、元のプログラムの出力と文字列として一致するかで評価する。また、エージェントに、通常の評価の仕組みを回避して不正で高得点を取るよう明示的に指示するレッドチーミング評価でも環境を試した。現在の足場(スキャフォールド)では、不正に成功したエージェントはなかった。
評価はすべて、InspectライブラリのReActエージェントをもとにした単純なエージェント用の足場で行っている。この足場ではシェルを使え、ファイルの読み込みと編集のためにtext_editorツールが使える。text_editorとsubmitのツールに加えて、モデルにはevaluate_testcasesツールも与える。このツールは、見えているテストに対してコードの採点を1回行うが、セッションは終了させない。コンパクション(文脈の圧縮)を使い、対応する最大のコンテキストより長く試行を続けられるようにしている。評価はすべてDockerコンテナ内のサンドボックスで行い、エージェントにはインターネットへのアクセスを与えないので、元のプログラムのソースコードを調べたり、サードパーティの依存ライブラリを使ったりすることはできない。
ここに示すスコアは、リーダーボード用の構成MirrorCode (ML, +Private, 2L)によるものである。MediumとLargeの区分にある15の対象プログラム(それらの区分にある2つの非公開プログラムを含む)を実行し、Smallの区分は外している。各対象プログラムは、2つの実装言語、つまり主流の言語1つ(基本的にGo)と学習データの少ない言語1つ(Ada)で評価するので、課題は30になる。各課題は3回実行し、1回の試行あたりの予算は100億トークンと7日間で、APIが対応していれば推論の強度(reasoning effort)を高に設定する。報告するのは、15の対象プログラムにわたる各モデルの完全解決(100%)の平均率で、誤差棒は±標準誤差を示す。これらのスコアは論文の数値とは直接比較できない。論文では、25の対象プログラムすべてを評価し、SmallとMediumの区分では6つのエージェント実装言語をすべて使い、試行の予算はLargeの対象を除いて10億トークンとし、時間の制限は設けなかった。
MirrorCodeの課題はオープンソースのプログラムの再実装なので、AIモデルは事前学習で元のコードベースを見ている可能性が高い。しかし、AIは記憶のスクリーニングを通過した対象プログラムのうちいくつかを再実装でき、スクリーニングで記憶の形跡が見られたプログラムの再実装には失敗した。このことから、結果は記憶に支配されてはいないと考えられるが、記憶がAIの性能に寄与している可能性は否定できない。詳しくは論文を参照。
足場と、MirrorCodeの25の対象プログラムのうち22(サポートしている6つのプログラミング言語にわたって合計132の課題インスタンス)をオープンソースとして公開しており、残りの3つの対象は非公開のテストセットとして保持している。