AIエージェントはコードのパターンを発見するのが苦手なので、成果を改善するためにセマンティックグラフを作った

Reddit r/artificial / 2026/4/14

💬 オピニオンDeveloper Stack & InfrastructureIdeas & Deep AnalysisTools & Practical Usage

要点

  • 著者は、現在のAIエージェントはコードブロック間の関係性を推論するのが難しく、その結果として、実際のコードベースをリファクタリングしたり修正したりする際に計画が最適でなくなると主張している。
  • その根拠として、Log4j 1から2への移行の具体例を挙げ、エージェントが更新が必要な呼び出し箇所54件のうち9件しか特定できなかったと述べている。
  • この課題に対処するため、著者はセマンティックなコードグラフを構築し、AIエージェントがCypherでクエリすることで、コード構造やパターンをより正確に把握できるようにした。
  • セマンティックグラフをAIエージェントに統合する(スキル経由、またはMCPを通じて公開する)ことで、精度が大幅に向上したと報告している。すなわち、54件すべての呼び出し箇所を検出でき、さらに共通の基底クラスを持つ呼び出し箇所が30件あることを見つけたことで作業量を削減できた。
  • Java向けのリファレンス実装はGitHubリポジトリで提供されており、コミュニティからのフィードバックを歓迎している。

その結果、AIエージェントはコードベース修正のための最適でない計画を立ててしまいます。たとえば log4j1 から v2 への移行を行っていた際、AIエージェントが更新を必要とするコールサイトを 9 件見つけてきたのに対し、全体は 54 件でした。

これを解決するために、私は AIエージェントが Cypher 言語を使ってクエリできるセマンティックなコードグラフを構築しました。AIエージェントにこのグラフをスキルの利用を通じて組み込むか、あるいは MCP 経由で公開することで、移行タスクにおいてAIエージェントが大幅に高い精度を出せるようになりました。これにより 54 件すべてのコールサイトの発見が可能になっただけでなく、同じ基底クラスを継承しているコールサイトが 54 件中 30 件あることを判定することで作業量も最適化できました。つまり、基底クラスを変更するだけで十分でした。

Java のリファレンス実装を公開しました:

Github: https://www.github.com/neuvem/java2graph

ぜひご意見を教えてください。また、考え・所感・フィードバックも共有していただければ幸いです

submitted by /u/_h4xr
[リンク] [コメント]