説明
オープンソースのコントリビューターエージェントアーキテクチャであるOscarは、プロジェクトメンテナンスのための自動化エージェントを作成することで、オープンソースソフトウェア開発の強化に焦点を当てたプロジェクトです。その中核的な考え方は、大小を問わずオープンソースプロジェクトのメンテナンスにおける多大な負担を軽減できるということです。大規模言語モデル(LLM)は、イシューレポートやメンテナーの指示などの自然言語のセマンティック分析を通じて、エージェントが人々とスムーズに対話したり、自然言語の指示をプログラムコードに変換したりするための新しい可能性を提供します。LLMは重要なコンポーネントですが、エージェントのアクションの大部分は、標準的で決定論的なコードの実行に関わることになります。開発に焦点を当てた多くのLLMの用途とは異なり、Oscarはコード作成プロセスを拡張したり置き換えたりすることを目指していません。その代わりに、受信したイシューの処理、既存のドキュメントへの質問のマッチング、および同様のタスクといった、あまり魅力的でないメンテナンスの側面に焦点を当てています。
Oscarは基本的に実験であり、その将来の方向性と学習内容はまだ完全に決定されていません。最初のプロトタイプである@gabyhelpボットは、Goのイシュー追跡システム内で数多くの成功した対話を示しています。現在Goプロジェクトの下で開発されているOscarは、将来的に別のプロジェクトとしてスピンオフされる可能性があります。プロジェクトの具体的な目標には、イシューや変更リスト(CL/プルリクエスト)の解決におけるメンテナーの労力の削減、フォーラムの質問に対応するために必要な労力の減少、そしてより多くの個人が生産的なメンテナーになれるようにすることが含まれます。重要な非目標はコーディングの自動化であり、焦点はメンテナンスのメンテナーの負担の自動化にあります。
アプローチは、どのソフトウェアプロジェクトでもカスタマイズされたエージェントを作成するために適応できる、再利用可能で拡張性の高いアーキテクチャを構築することを中心に展開しています。Oscarは、Goプロジェクトに固有のものではないメンテナーの負担に対処することを目指しています。特定された主要な機能には、コントリビューターとの対話中に、関連するプロジェクトコンテキストをインデックス化して提示すること、自然言語を使用して決定論的なツールを制御すること、そしてイシューレポート、CL/PR、グループディスカッションを分析してリアルタイムで改善し、適切にラベル付けしてルーティングすることが含まれます。LLMは、自然言語処理におけるその強みから、これらの機能に不可欠ですが、決定論的なコードが実行を処理します。このプロジェクトは、セマンティック分析と自然言語からプログラムへの変換にLLMを使用することに重点を置き、残りは決定論的なコードに依存しています。
重要な機能の1つは、関連するプロジェクトコンテキストのインデックス化と提示です。ソフトウェアプロジェクトは複雑であり、メンテナーは常にすべての関連詳細を記憶しているわけではありません。OscarはLLM埋め込みを使用してプロジェクト検索エンジンを作成し、ドキュメント、イシュー、ディスカッションをインデックス化します。新しいイシューが発生すると、エージェントはこのインデックスを使用して、過去の類似イシューや関連ドキュメントなどの関連コンテキストを見つけ、リンク付きで返信できます。これは、重複するイシューを提示したり、コントリビューターにコンテキストを提供したり、関連する過去のディスカッションやバグレポートに誘導することでメンテナーの時間を節約したりするなどの利点を示しています。レポートが提出された直後のエージェントの対話も、レポーターがまだ利用可能で関与している間に、レポーターを引き付ける上で重要です。
もう1つの重要な機能は、自然言語を使用して決定論的なツールを制御することです。プロジェクトが成長するにつれて、ツールの数が増加し、それらを追跡して使用することが困難になります。Oscarは、自然言語のリクエストに基づいて、イシューコメントの編集、ラベルの追加、または担当者の割り当てを行うための機能を提供します。LLMは、自然言語の意図を実行可能な形式(ツールの呼び出しなど)に変換することに長けています。Geminiとの予備的な実験は、ツールの選択と呼び出しにおいて有望な結果を示しています。このアプローチは、LLMを使用して自然言語を決定論的なツール使用に変換するものであり、決定論的な実行と検証の容易さを可能にするため、純粋なLLMの「魔法の杖」アプローチよりも効果的であると考えられています。
3番目に重要な機能は、イシューレポートとCL/PRの分析です。関連するイシューをリンクすることに加えて、Oscarはセマンティック分析を組み込むことを計画しています。例えば、イシューの主要なトピックを特定して適切なラベル付け(例:「パフォーマンス」)を行うなどです。また、レポートが有用であるためにさらに情報が必要かどうかを判断することも目指しています。例えば、再現プログラムへのリンクを要求したり、コードをインライン化したりするなどです。エージェントは、サンドボックス化された実行ツールを実行してバグを含むリリースを特定したり、git bisectを使用してバグを導入したコミットを特定したりする可能性があります。これらの分析は、レポートが提出された直後に実行される場合に最も効果的であり、エージェントの24時間年中無休の可用性を活用します。
最初のプロトタイプであるGaby(「Go AI bot」)は、Goのイシュー追跡システム内で動作し、@gabyhelpとして投稿します。そのソースコードはinternal/gabyにあります。Gabyは、Goのイシュー、Goのドキュメント、Gerritのコードレビュー、およびGoプロジェクト/golang-nutsのディスカッションからコンテンツをインデックス化し、関連リンク付きで新しいイシューに応答できるようにします。Gabyのアーキテクチャは柔軟性を考慮して設計されており、さまざまなホスティングサービスで実行したり、異なるLLM、ストレージレイヤー、ベクトルデータベースを使用したりできます。現在のプロトタイプは、GoogleのGemini LLMとGoogle Cloud Firestoreを使用してGCP Cloud Runで実行されています。このプロジェクトは、Goプロジェクトで長年使用されている決定論的なエージェントである@gopherbotの存在も認識しており、最終的には@gabyhelpを@gopherbotにマージすることを目指しています。これは、自然言語を使用したより軽量な構成方法を模索しながら、@gopherbotをOscarエージェントとして再構築することによって行われます。
Oscarの主要機能
オープンソースメンテナンスのための自動化エージェント
イシューとリクエストを処理することでメンテナーの負担を軽減
LLMを活用した自然言語理解とセマンティック分析
決定論的なコードを使用した信頼性の高いタスク実行
関連するプロジェクトコンテキスト(ドキュメント、イシュー、ディスカッション)のインデックス化と提示
自然言語による決定論的なツールの制御を可能にする
イシューレポートと変更リストを分析してルーティングとラベリングを改善
Goのイシュー追跡システムでアクティブなプロトタイプエージェント@gabyhelp
カスタムエージェント開発のための拡張可能なアーキテクチャ
さまざまなLLM、ストレージレイヤー、ベクトルデータベースとの統合をサポート
オープンソースメンテナンスの非コーディング側面を自動化することを目指す
即時応答によるコントリビューターエンゲージメントの迅速化を促進
Oscarの使い方は?
設定:エージェントの機能定義とプロジェクトデータソースへの接続
デプロイ:適切なプラットフォーム(例:クラウドサービス)にエージェントをホスト
統合:プロジェクトリポジトリとコミュニケーションチャネル(例:GitHub Webhook)への接続
トレーニング/インデックス化:エージェントがLLMを使用してプロジェクトコンテキストを処理およびインデックス化できるようにする
監視:イシュー追跡システムとフォーラムでのエージェントの対話とパフォーマンスを観察
拡張:新しいエージェントの動作を開発し、カスタム決定論的なツールを統合する
最適化:プロジェクトのニーズとフィードバックに基づいてエージェントの応答と分析を調整する
Oscarの使用例
- イシュー分類自動化
- ドキュメント支援
- 重複イシュー検出
- メンテナー負担軽減
- コントリビューターサポート
- 変更リスト分析
- コンテキスト提示
- ツール統合






