公開テスト96.64%でも完全成功47.90%。SWE-bench Scienceが暴いた科学コード修復の落とし穴

公開テストと科学的な意味検証を二段階で通過するコードの概念図
公開テストの通過と、科学的な意味の検証を分ける考え方をAICompanyが再構成

公開テスト96.64%でも完全成功47.90%。SWE-bench Scienceが暴いた科学コード修復の落とし穴

AIコーディングエージェントが、公開テストでは96.64%という高い点を取った。ところが、隠された検証項目を一つ残らず通す完全成功率は47.90%だった。

同じエージェントの、同じ119課題での結果です。

ドライブレコーダーもAIにお任せ

普通のアプリなら、テストをほぼ通ったのだから「あと少し」と感じるかもしれません。しかし、科学ソフトでは、その少しが研究結果そのものを壊します。単位を取り違えた計算、座標変換の符号ミス、境界条件の欠落、保存則を破る補間。プログラムは動いても、科学的には誤っていることがあるからです。

今回取り上げる論文は、科学ソフトの実リポジトリを対象にした新しい評価基盤「SWE-bench Science」を提案しました。119課題、98のGitHubリポジトリ、20の科学分野を収録し、8つのモデルと実行基盤の組み合わせを比較しています。

結果は、AIがコードを書けるかどうかだけを問う段階が終わりつつあることを示します。これから重要なのは、AIが「その分野で正しいコード」を書けたかを、どう検証するかです。

先に線引きをしておきます。SWE-bench Scienceは、科学者の代わりに発見を行うAIを評価した研究ではありません。既存の科学ソフトを修復し、科学上の意味を保てるかを調べた研究です。また、AICompanyは全119課題を再実行していません。論文、公開コード、データ構造、固定された実行手順を確認した範囲で読み解きます。

普通のコード修復では見えない「科学上の契約」

一般的なコード修復ベンチでは、課題文を読み、リポジトリを調べ、パッチを書き、テストを通せるかを測ります。これは実務に近い優れた方法です。

ただし、科学ソフトにはテストコードだけでは表しきれない約束があります。論文では、これを科学上の契約として扱っています。

たとえば、次のようなものです。

  • 入力と出力の単位が一致している
  • 座標系を変えても物理量の意味が保たれる
  • 境界値で数式の性質が崩れない
  • ファイル形式の変換後も科学メタデータが残る
  • 数値計算の近似が許容範囲に収まる
  • 見えていない条件でも同じ科学原理が成り立つ

プログラムがクラッシュしないことと、正しい科学計算をすることは別です。

たとえば、太陽観測の座標を変換する関数が、典型的な入力では正しい値を返したとします。それでも、時刻、観測地点、座標軸の向きが変わったときに符号が反転するなら、その修復は不完全です。公開された一例だけを直しても、原理を直したことにはなりません。

SWE-bench Scienceが測るのは、この違いです。

119課題を三つの仕事に分けた

ベンチマークは、科学ソフトの修復を三つの型に分けています。

Issue-driven

GitHub Issueや既存の修正履歴に基づく課題です。利用者から報告された不具合を、実際のリポジトリで直します。通常のSWE-benchに最も近い型です。

Expert-exploratory

専門家が科学上の不整合を調べ、問題を特定した課題です。目に見える例外だけではなく、数式、データ形式、分野知識をたどる必要があります。

Engineering-integration

複数のモジュールや処理段階をまたぐ統合課題です。一つの関数だけ直しても足りず、データの流れ、互換性、共有される不変条件まで保つ必要があります。

対象分野は、化学、材料科学、生物学、医学、物理学、天文学、地球科学、気象、海洋、統計、数学、土木など20分野です。課題はPythonだけではなく、C、C++、Fortran、MATLAB、Octave、複数言語の構成を含みます。

各課題には、エージェントが作業する環境と、完成したパッチを判定する検証環境が別々に用意されています。環境イメージと検証イメージはDockerのdigestで固定され、検証側には非公開テストと採点器が入ります。

ここが大切です。エージェントは公開情報を使って修復できますが、最終判定の答え合わせを見ながら調整することはできません。

公開テスト、科学上の契約、完成状態の再検証を分ける流れ
表面のテスト、科学上の契約、完成状態の再検証を分ける流れをAICompanyが再構成

8構成を比べると、首位は指標ごとに変わった

論文は、モデル単体ではなく、モデル、harness、reasoning effortを一体の構成として比較しています。CodexやClaude Codeのようなharnessは、ファイルの見せ方、コマンド実行、テスト、コンテキスト管理を担うため、同じモデルでも結果を変えるからです。

主要結果は次の通りです。

| 構成 | 公開スコア | 非公開スコア | Fail2Pass | Pass2Pass | Pass@1 | | — | —: | —: | —: | —: | —: | | GPT-5.6-sol + Codex | 99.16% | 78.82% | 72.30% | 97.66% | 46.22% | | Claude-Opus-5 + Claude Code | 96.64% | 75.11% | 68.60% | 97.37% | 47.90% | | DeepSeek-V4-Pro + Claude Code | 100.00% | 73.16% | 65.77% | 96.58% | 42.02% | | Kimi-K3 + Kimi Code | 98.32% | 66.34% | 57.55% | 94.94% | 35.29% | | GLM-5.2 + Codex | 94.12% | 63.61% | 53.81% | 97.53% | 31.93% |

公開スコアが最も高いのはDeepSeek-V4-Proの100.00%です。非公開スコア、失敗テストの修復率、既存成功テストの維持率ではGPT-5.6-solが首位でした。ところが、すべての非公開テストを通すPass@1ではClaude-Opus-5の47.90%が最良です。

つまり、「どれが一番強いか」は一つの数字では決まりません。

公開テストで進捗を測る能力、壊れていた箇所を直す能力、以前動いていた箇所を壊さない能力、最後まで完全に通す能力は別です。公開スコア100%でも、完全成功率は半分を下回りました。

ここから読めるのは、ベンチマークの難しさだけではありません。日常のAIコーディングでも、見えているテストを通したことと、修復が完了したことを同一視してはいけないという警告です。

失敗は四つの型に分かれた

研究チームは、失敗した修復を四つの科学的な機構へ分類しました。

1. 科学知識または抽象化の不足

数式、科学的対象、領域固有の定義を誤って理解する失敗です。変数名と型は合っていても、表している物理量を取り違えていれば、正しい修復にはなりません。

2. 表面的な探索

公開テストや目に見える症状だけを直し、独立した根拠や根本の科学契約までたどらない失敗です。いわゆる「テストに合わせた修正」がここへ入ります。

3. 修復範囲または統合の不足

一つのモジュールは直ったものの、他のモジュールとの接続、データの流れ、互換性、共有される不変条件が壊れる失敗です。

4. 科学知識の一般化失敗

観測された一例には対応できても、境界条件、同値な表現、未見の条件へ同じ原理を広げられない失敗です。

最良Pass@1だったClaude-Opus-5でも、四分類に入る失敗が58件あり、別に実行または評価経路の失敗が4件ありました。GPT-5.6-solでは、統合不足が22件、科学知識または抽象化不足が18件、一般化失敗が14件、表面的探索が10件です。

「もっと長く考えれば解ける」と単純には言えません。足りないのが分野知識なのか、探索の仕方なのか、統合確認なのか、一般化テストなのかで、必要な対策が変わるからです。

科学知識を渡せばよい、でもなかった

では、エージェントに専門知識を追加すれば解決するのでしょうか。

論文は91課題で、科学的な補助情報を渡す条件と、渡さない条件を比較しています。リポジトリ、実行環境、課題の目的、観測できる症状は同じです。違うのは、科学原理、数式、前提、専門家の診断、科学的に動機づけられた修復方針などの補助情報です。

結果はモデルごとに逆でした。

  • GPT-5.6-solのPass@1は、補助情報なし36.26%から、あり31.87%へ低下
  • DeepSeek-V4-flashのPass@1は、補助情報なし16.48%から、あり23.08%へ上昇

GPT-5.6-solは補助情報があると入力と出力のトークン量が減りましたが、完全成功した課題も減りました。DeepSeek-V4-flashは成功率が上がる一方、入力と出力のトークン量が増えています。

論文は、この差が統計的に有意だとも、科学情報が原因だとも結論していません。2構成の記述比較にすぎないと明記しています。

それでも、実務上の示唆はあります。知識は多ければよいのではありません。よく整理された情報は探索を狭めますが、ずれた説明はエージェントを早い段階で固定し、独立検証を省かせることがあります。

科学知識が探索を助ける場合と早い思い込みを生む場合の比較
科学知識が探索を助ける場合と、早い思い込みにつながる場合の違い

AICompanyなら、三層の検証へ置き換える

ここからは論文の実験結果ではなく、AICompanyとしての応用案です。

AIコーディングや記事制作の品質管理を、三層に分けます。

第1層は、見えている成功条件

コードなら公開テスト、記事なら文字数、リンク形式、禁止文字、画像の有無です。速く回せるため、作業中のフィードバックに向いています。

第2層は、独立した意味検証

コードなら単位、境界値、不変条件、回帰テスト。記事なら数値の出典、主張の範囲、一次資料との一致、反証例です。作り手が見ていたチェックだけに依存せず、別の観点から確認します。

第3層は、完成物の再実行または再読

差分だけでなく、完成した状態を最初から検証します。コードならclean buildと全テスト、記事なら公開後HTML、画像、リンク、タイトル、抜粋を同じ投稿IDで読み直します。

小さな実験なら、次の形で始められます。

  1. 直近20件のAI生成物を集める
  2. 「途中では通ったが、最終的に失敗した例」を分ける
  3. 失敗を知識、探索、統合、一般化の四つで仮分類する
  4. 各分類に一つだけ独立ゲートを追加する
  5. 正解まで落としていないかを確認する

ゲートを大量に増やす必要はありません。重要なのは、公開テストと同じ情報を別の言い方で確認するのではなく、失敗の意味に対応した別の証拠を見ることです。

公開コードは再現性を意識している

SWE-bench Scienceは、論文だけでなく、GitHubの実行ツール、Hugging Faceの課題データ、Docker Hubの環境と検証イメージ、評価ページを公開しています。

119課題のうち、標準選択は96件です。残る23件はGPL系、学術非商用、制約付き第三者データなどを含み、明示的に許可しない限り選択されません。評価基盤のライセンスはMITですが、各課題の元コードや資料にはそれぞれの条件があります。

この分離は実務でも参考になります。「公開されている」ことと、「その条件で自由に使える」ことを混同しない設計です。

一方、再現にはPython 3.11以降、Docker、データのダウンロード、モデル提供元の認証、相応の計算費用が必要です。AICompanyは今回、全119課題のモデル評価までは実行していません。コードとデータが公開されていても、論文の全数値を手元で再現したという意味ではありません。

限界。20分野でも、分野ごとの厚みはまだ薄い

論文自身が挙げる最大の限界は、各科学分野の課題数です。全体では119件ありますが、20分野へ分けると、一分野あたりの数は多くありません。化学に強い、天文学に弱い、といった細かな順位を断定するには不足します。

科学情報の使われ方も、まだ初期的な分析です。情報をどの順序で渡すべきか、説明と実行証拠をどう結びつけるべきか、どんな情報が強いモデルを逆に迷わせるのかは残っています。

さらに、モデルとharnessを一体で比較しているため、表の数字をモデル単体の能力ランキングとして読むことはできません。reasoning effort、ツール接続、コンテキストの見せ方、終了条件も結果に含まれます。

そして、非公開検証は漏洩を防ぐ一方、外部から全判定を監査しにくくします。厳しい評価には必要ですが、透明性との緊張は残ります。

結論。テストを通すAIから、意味を守るAIへ

SWE-bench Scienceの一番大きな教訓は、AIコーディングの限界が「コードを書けないこと」だけではない点です。

公開テストでは96.64%。それでも完全成功は47.90%。この差には、科学知識、探索、統合、一般化という別々の失敗が隠れていました。

見えているテストを増やすだけでは、意味上の誤りを取り逃がします。専門知識を大量に渡すだけでも、強いモデルをかえって固定することがあります。

必要なのは、コードが動くか、科学上の契約を守るか、完成状態で再現するかを分けて測ることです。

これは科学ソフトだけの話ではありません。AIが記事を書き、データを分析し、業務を実行するほど、「それらしい完成」と「本当に正しい完成」の間にある検証設計が主役になります。

AIコーディングの次の競争は、生成能力だけでは決まりません。意味を壊した瞬間を見つけられるか。SWE-bench Scienceは、その現実をかなり具体的に見せています。

一次資料

ドライブレコーダーもAIにお任せ

投稿者 AICompany

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA