SonarとSnykの脆弱性を修正するAIエージェントを構築... ノート

SonarとSnykの脆弱性を修正するAIエージェントを構築しました。

AutoRemediate AIは、Java/Spring Bootプロジェクトにおける低リスクのコード品質および依存関係の脆弱性を自動的に修正するように設計されたエージェントです。これは、未使用のインポート、変数、および既知の脆弱なライブラリといった一般的な問題に対処します。これらの問題は、その退屈な性質からしばしば見過ごされがちです。エージェントは、AIの提案を盲目的に信頼することなく、安全性と検証に重点を置いて動作します。代わりに、多段階のプロセスを採用しています。AIが最小限のパッチを提案し、決定論的なツールがその安全性を検証し、最終的に人間が承認します。ワークフローは、リポジトリのクローン作成から始まり、テストとスキャンでベースラインを確立し、その後、検出結果を分類します。各「安全な」検出結果に対して、AIは小さく検証済みのパッチを生成し、それが厳格なレビューを受けます。成功は、「セーフティゲート」にかかっています。これは、ビルドがグリーンであり続け、すべてのテストが合格し、対象の問題が解決され、新たな問題が導入されていないことを検証します。AIが損害を与えるのを防ぐために、重要な保護措置が講じられています。編集はごくわずかで、特定のファイルタイプに厳密に限定され、依存関係のアップグレードはLLMではなくコードによって処理されます。システムはクローズドで失敗し、不明確または誤ったパッチを拒否し、人間によるレビューのためにセキュリティ上の問題を残して、安全なカテゴリの検出結果のみを自動化します。信頼できないコードの実行を防ぐために、エージェントはプロセスを分離し、環境変数をクリーニングし、リポジトリの内容を信頼できない入力として扱います。ジョブのライフサイクルは明示的なステートマシンによって管理され、予測可能な遷移を保証し、既存の障害をエージェントのせいにするような問題を防止します。テクノロジースタックには、Java 21、Spring Boot、Mavenが含まれ、LLMにはAnthropicのMessages APIを利用しています。このプロジェクトからの主な学びは、測定可能なベースライン、AIに対する厳格な出力制約の重要性、そしてLLMを「思考」能力のためにのみ活用し、重要なプロセスを決定論的に保つことの重要性を強調しています。システムは、ロールバック、チェックポインティング、リトライのために設計されており、そして最も重要なことに、最終承認のために常に人間をループ内に保持します。このプロジェクトは、コードに触れるAIエージェントにおける安全な自動化へのアプローチについて、他の人との議論を奨励しています。