CODESKILL: Learning Self-Evolving Skills for Coding Agents
CODESKILL は、コーディングエージェントの軌跡から多粒度の手順的スキルを抽出・進化・維持するコンパクトなバンクを学習する強化学習ベースのフレームワークであり、既存のプロンプトベースまたはメモリベースのアプローチと比較して、SWE-Bench Verified などのベンチマークにおける下流タスクのパフォーマンスを大幅に向上させる。
原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む
非常に賢いロボットアシスタントに、ソフトウェアのバグを修正する方法を教えると想像してください。ロボットが問題を修正するたびに、長いプロセスを経ます:コードを確認し、コマンドを試行し、エラーを確認し、再度試行し、最終的に(願わくば)修正します。この一連の過程全体を「軌道」と呼びます。
問題は、ロボットがこれまでに行ったすべてのことを日記として記録し続けると、その日記は混乱し、圧倒的な紙の山になってしまうことです。その大部分は、次のバグには役立たない、ある特定のバグに関する具体的な詳細に過ぎません。
CODESKILL は、その混乱した紙の山を、ロボットが実際に活用できる、すっきりと整理された取扱説明書に変えるように設計された新しいシステムです。
以下に、その仕組みを簡単な概念に分解して説明します。
1. 問題:ノイズが多すぎて、信号が不足している
現在、ロボットが過去の失敗から学習する際、しばしば厳格なルールや固定されたプロンプト(「Y を見たら常に X を行え」と言う教師のようなもの)に依存しています。しかし、ソフトウェア工学は複雑です。ロボットが偶然成功することもあれば、奇妙な理由で失敗することもあります。何が再利用可能なスキル(「壊れたインターネット接続を修正する方法」など)で、何が一度きりの偶然(「このファイル内の特定のタイプミスを修正する方法」など)なのかを判断するのは困難です。
既存の方法は、本を整理せずに床に積み重ねるだけの司書のようなものです。次の読者に実際に役立つ本がどれかを知りません。
2. 解決策:「自己進化型司書」
CODESKILL は、ロボットの知識ベース(スキルバンクと呼ばれます)を管理する賢い司書として機能します。単に生の物語を保存するのではなく、以下を行います:
- スキルの抽出:ロボットの過去の軌道を読み、多くの状況に適用できる一般的なルールである「黄金のかけら」を引き出します。
- スキルの進化:ロボットがスキルを試して失敗しても、司書はそのスキルを単に捨て去るわけではありません。「ああ、このルールは機能しますが、この特定のエラーメッセージが表示される場合は除く」と、取扱説明書を更新します。
- 図書館の維持:図書館を常に点検します。2 冊の本が同じことを述べている場合は、それらを統合します。本が特定すぎて無用な場合は、それを捨てます。これにより、図書館は小さく効率的に保たれます。
3. 学習方法:「コーチとアスリート」
CODESKILL の最もユニークな点は、優れた司書になるための学習方法です。単に推測するのではなく、「凍結された」アスリート(コーディングロボット)からのフィードバックを得ます。
- アスリート:実際の問題を解決するコーディングロボットです。脳は変化せず、タスクの解決を試みるだけです。
- コーチ(CODESKILL):スキルを管理するシステムです。
- トレーニングループ:
- コーチは過去の経験に基づいて新しいルールを作成します。
- コーチはこのルールをアスリートに与えます。
- テスト:この新しいルールを使って、アスリートは問題をより速く、またはより良く解決できるでしょうか?
- 報酬:アスリートが成功すれば、コーチは高得点を得ます。アスリートが失敗すれば、コーチは低得点を得ます。
- コーチはこの得点を使って学習します:「よし、次はより良いルールを書く必要がある」。
この論文では、これを強化学習と呼んでいます。犬を訓練するのと同じです。犬に何をすべきか教えるだけでなく、正しく行えたときにご褒美を与えます。そうすることで、ご褒美を得る行動を繰り返すことを学習します。
4. 2 種類のスキル
CODESKILL は、2 つのセクションを持つ料理本のように、知識を 2 種類の指示に整理します。
- タスクレベルのスキル(全体像):これらは高レベルの戦略です。例:「Java のビルド失敗を見た場合は、まずインターネット接続を確認し、次に依存関係を確認する」。
- イベント駆動型スキル(クイック修正):これらは特定の瞬間への反応です。例:「『ファイルが見つかりません』というエラーが表示された場合は、ファイルパスにタイプミスがないかすぐに確認する」。
5. 結果:より賢く、高速なロボット
研究者たちは、コーディングロボットが現実世界のソフトウェア問題を解決する 3 つの異なる「試験室」(ベンチマーク)で CODESKILL をテストしました。
- ベースライン:取扱説明書を持たないロボット(生来の知能のみ)。
- 競合他社:過去のタスクを記憶する古い方法(単に日記を読むか、固定されたプロンプトを使用する)を使用するロボット。
- CODESKILL:自己進化型スキルライブラリを使用するロボット。
結果:
CODESKILL のロボットは、他のロボットよりもはるかに多くの問題を解決しました。
- スキルを全く持たない場合と比較して、成功率が約**9.7%**向上しました。
- 既存の最も強力な「メモリ」方法を約**4%**上回りました。
- また、より良い指示に従うことで、解決に到達するまでのステップ数が減り、問題をより速く解決しました。
結論
CODESKILL は、コーディングロボットに**「学習の仕方」を学ぶ**方法を教えるフレームワークです。起こったすべてのことを単に記憶するのではなく、それらの経験をコンパクトで進化し続けるルールの集合に凝縮することを学びます。チームが実際に試合に勝つかどうかに基づいてプレイブックを絶えず洗練させるコーチのように機能し、ロボットがゼロから再プログラムされることなく、時間とともにより良くなり、効率的になることを保証します。
自分の分野の論文に埋もれていませんか?
研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。