自律型AIエージェントが、わずか20分ほどで完全なRetrieval-Augmented Generation (RAG) スタックを構築し、人間によるコードを一行も書くことなくドラフトプルリクエストを作成しました。

なぜ「ループ」が重要なのか

RAGスタックの構築には、通常、検索エンジン、埋め込みモデル、言語モデル、そしてそれらを繋ぐグルーコード(glue code)を組み合わせる作業が伴います。開発者はHelmチャートの微調整や認証の不具合修正、モデル名の不一致の追跡などに何時間も費やします。今回のテストでは、自律型エージェントが5段階のループに従いました。このループは、コードが書き込まれる前に人間とエージェントの間で合意形成を強制するものです。

フェーズ 内容
提案 エージェントがプロンプトを読み取り、具体的な計画を策定しますが、まだコードは生成しません。
合意 ユーザーが計画を確認し、承認または変更を要求します。
実装 エージェントが新しいブランチ上で機能を構築します。
ドラフト・ゲート エージェントが独自のリンターとテストスイートを実行し、発見したエラーを修正します。
ドラフトPR コードがプッシュされ、最終的な人間のレビューのためにプルリクエストが作成されます。

ほとんどのAI支援コーディングツールは、いきなり実装へと進んでしまい、的外れなコードを生成することがよくあります。明示的な合意ステップを挿入することで、このループは盲目的な実行を阻止し、コミットが反映される前にユーザーがプロジェクトを制御できるようにします。

実現されたスタック

エージェントは20分間で、本番環境で使用可能なRAGパイプラインを組み立てました。

  • OpenSearch 3.7:ハイブリッド検索(ベクトル + キーワード)用に設定。
  • Local Ollama LLM:検索拡張回答のための生成エンジンとして機能。
  • FastMCP server:言語モデルに対して4つのカスタムツールを公開。
  • Skaffold and Helm スクリプト:コンテナビルド、Kubernetesマニフェスト、およびサービスデプロイを自動化。

パイプラインには30件の記事が投入され、エンドツーエンドの検索と生成を即座にテストできるようになっています。通常、開発者が各コンポーネントを設定するには丸一日かかりますが、そのスピードには驚かされます。

システムを停止させかけたバグ

エージェントの信頼性は、人間が行うデプロイメントであれば通常停止してしまうような、5つの異なる失敗によって試されました。

  1. OpenSearchの認証エラー – エージェントが誤ったシークレットキーを提供したため、クラスターが接続を拒否しました。
  2. URL内の正規表現のタイポ – 1文字の入力ミスにより、有効なエンドポイントが無効なリンクとなり、データローダーが破損しました。
  3. モデル名の不一致 – コネクタが異なるOllamaモデル識別子を期待していたため、「model not found」エラーが発生しました。
  4. JVMのメモリ制限 – 一括インデックス作成によってJavaヒープが枯渇し、メモリ不足(out-of-memory)によるクラッシュが発生しました。
  5. モデルチャンクの誤削除 – クリーンアップスクリプトが必須ファイルを重複ファイルと誤認して削除したため、パイプライン全体が危機にさらされました。

エージェントが行き詰まったとき、「loop-police」が介入した

loop-police と呼ばれる監視用ウォッチドッグが、ループの健全性をモニタリングします。削除バグの発生中にエージェントが終了しないサイクルに陥った際、loop-policeは停滞を検知し、現在のブランチを中断して、強制的に「合意(Agreement)」フェーズへと引き戻しました。その後、エージェントはミスを認識して破損した状態をクリアし、パイプラインをゼロから再構築しました。この自己修復サイクルは、最初の