Skip to content
AI-Daily-Builder

2026-09-09 — views

ExecCritic: テストと修復エージェントを分離してコーディング性能を向上させる

読む理由 テスト生成とコード修復を分離することで、エラーの一致や過信を防ぎ、エージェントの信頼性を大幅に向上させる。

ExecCriticは、SWE-bench Verifiedにおけるコーディングエージェントの成功率を向上させるため、テスト生成とコード修復の役割を分離したエージェントを強化学習で活用する。

結合軌道の問題

実行フィードバックは、コーディングエージェントを正しいリポジトリ修復へと導く強力なツールである。しかし、このガイダンスが有効なのは、テストがイシューで要求された動作を正確に捉えている場合に限られる。エージェントが生成したテストが不完全または不正確な動作目標をエンコードしている場合、重大な課題が生じる。同じ軌道でパッチとテストの両方を書き込むと、それらのエラーが一致し、危険な誤った自信を生み出す。この一致は根本的な問題を隠蔽し、エージェントは問題を解決したと信じてしまうが、実際にはそうではない。

ExecCriticのスケルトン

この課題に対処するため、研究者はExecCriticを導入した。これは、テスト検証修正のスケルトンと、役割固有の強化学習レシピを組み合わせたフレームワークである。中核的な革新は、テスト構築とソースコード修復の分離である。このアーキテクチャは、Qwen-3.5-35B-A3Bをバックボーンとして使用し、別々に訓練された2つの異なるエージェントを採用している。

1つ目の役割はTestエージェントであり、リポジトリネイティブなテストを独立して生成する。これらのテストは、合格基準を満たし凍結させるためのfail-closedハーネスを通過する。2つ目の役割はRepairエージェントであり、凍結されたテストからの実行フィードバックに基づいてソースコードを修正する。重要なのは、Repairエージェントがテストを変更しないため、修復プロセス中も評価基準が安定していることである。

訓練と結果

このフレームワークは2つの異なる訓練フェーズを利用する。Learn to Testフェーズでは、Testエージェントは正しいパッチと間違ったパッチを効果的に区別できる、動作上有効なテストを生成することを学ぶ。Test to Improveフェーズでは、Repairエージェントは直接タスクの解決とフィードバックに基づく修正の両方を学ぶ。

SWE-bench Verifiedでの評価は、テスト品質の重要性を浮き彫りにする。ベースのRepairエージェントを固定した状態で、ベースのTestエージェントからのテストを使用すると、テストなしのベースラインである61.2%から57.3%へと解決率が低下した。一方、GPT-5.6-solによって生成されたテストは、解決率を65.3%まで引き上げた。これは、テスト品質が低いとパフォーマンスを積極的に損なう可能性があることを示している。

役割固有の訓練後処理により、大幅な改善が得られた。訓練後のQwen Testエージェントは、Base-to-Goldの成功率を22.2%から62.2%に引き上げた。2つの訓練済みQwenエージェントを組み合わせると、システムは72.6%の成功率に達した。これは、評価時により強力なモデルやOracleフィードバックを使用することなく、元のテストなしベースラインに対して11.4ポイントの向上を実現したものである。ExecCriticのコードはGitHubで公開されている。

実装ノート

開発者は、エージェントワークフローにおいてテスト生成とコード修復を分離し、エラーの一致を防ぐことを検討すべきである。高品質で動作上有効なテストへの投資は重要である。なぜなら、テストが不十分だと、パフォーマンスを向上させるのではなく、積極的に低下させる可能性があるからである。


ソース

タグ

チップ