AgileCoder は、アジャイル方法論を LLM エージェントに適用したマルチエージェントのソフトウェア開発フレームワークであり、そのリポジトリは https://github.com/FSoft-AI4Code/AgileCoder とされている。ユーザー要件が与えられると、アジャイルのロールを担うエージェントがスプリントを重ねながら段階的にソフトウェアを計画し、書き、レビューし、テストする。各スプリントの終わりには、フレームワークが納品するか次のスプリントを計画するかを決める。このフレームワークは AgileCoder:アジャイル手法に基づくソフトウェア開発のための動的協調エージェント で導入された。著者らはこれを、ウォーターフォールモデルに従っていると彼らが説明する MetaGPT や ChatDev といったマルチエージェントシステムに対する代替として提示している。

機能

Product Manager がユーザー要件を開発タスクと受け入れ基準からなるプロダクトバックログに変換し、Scrum Master がその実現可能性をレビューする。その後、各スプリントは 4 つのフェーズで進む。計画フェーズでは、タスクが選ばれてスプリントバックログに入る。開発フェーズでは、Developer が docstring 付きのコードを書き、Senior Developer がそれを 3 段階で静的にレビューする。すなわち、空のメソッドや import の欠落といった基本的な実装のチェック、スプリントバックログへの準拠、そしてバグがなく受け入れ基準を満たしていることの確認である。テストフェーズでは、Tester がそのスプリントで変更されたファイルとその祖先ファイルに対するテストスイートを書き、テスト計画に従ってファイルを実行し、バグやテストの失敗があれば Developer に報告する。レビューフェーズでは、Product Manager が蓄積されたレポートをバックログと受け入れ基準と比較して終了するかどうかを決め、終了する場合は Scrum Master がソフトウェアの実行方法とライブラリのインストール方法に関するドキュメントを書く。

Dynamic Code Graph Generator は、ノードがコードファイルで、エッジが主に import 関係を表す Code Dependency Graph を保持し、コードの変更に合わせてそれを更新する。このグラフは、どのファイルにテストが必要かを決め、トポロジカル順序を逆にすることで論理的なテスト順序を与え、実行エラーが発生した場合には、エージェントがトレースバックからさかのぼって、コードベース全体ではなく関連するファイル横断のコンテキストだけを取得できるようにする。Execution Environment がコードを実行し、トレースバックをエージェントに返す。

エージェントは、インストラクターとアシスタントによる 2 者間の対話で、制約のない自然言語を用いてやり取りし、合意に達するかやり取りの上限に達するまで続ける。メッセージストリームが対話のワーキングメモリとして機能し、グローバルメッセージプールがすべての対話の出力と各タスクの状態を保存する。各対話はそこから自分に関係する部分だけを読み取る。

採用とエコシステム

論文では、GPT-3.5 Turbo、Claude 3 Haiku、GPT-4 をバックボーンモデルとして AgileCoder を実行し、HumanEval、MBPP、そして著者らがまとめたソフトウェア開発タスクのセットである ProjectDev で評価している。著者らは、ペアプログラミング、CI/CD、カンバン、リーンといったさらなるアジャイルのプラクティスによる拡張や、ソフトウェア開発以外の領域へのこの手法の適用を提案している。