【要約】LLM が自分の記憶を汚し続けるので、機能ごと諦めた話 ── C3 v2.11.0 / v2.12.0 [Zenn_Python] | Summary by TechDistill
> Source: Zenn_Python
Execute Primary Source
// Problem
開発者がAIエージェントフレームワーク「C3」の長期記憶機能を運用した際、LLMの出力が自己汚染を繰り返す問題に直面した。設計上の欠陥により、以下の課題が発生した。
- ・LLMが要約時に思考プロセスを書き込み、それが次回のコンテキストとして再注入される。
- ・汚染が自己増幅し、サニタイザによる対症療法では追いつかない。
- ・Windows環境では、C拡張ライブラリが日本語パスを正しく解釈できず、ファイル操作に失敗する。
- ・AI Reviewerが些末な指摘を繰り返し、開発サイクルが無限ループに陥る。
// Approach
開発者はLLMの非決定論的な挙動を排除し、システムの堅牢性と開発効率を高める設計変更を行った。具体的には以下の手法を採用した。
- ・LLMによる要約機能を廃止し、決定論的なPython処理による意味検索へ集約した。
- ・Windowsのパス問題に対し、ASCIIテンポラリパスを経由してファイルを移動する回避策を導入した。
- ・ディレクトリ構造をタクソノミーに基づき整理し、役割の不明確なファイルを移動・削除した。
- ・AI Reviewerに対し、実害のあるリスクのみを指摘するようプロンプトでスコープを制限した。
// Result
これらの修正により、C3は環境に依存しない安定した動作と、効率的な開発サイクルを実現した。
- ・LLMの幻覚に左右されない、信頼性の高い長期記憶基盤が確立された。
- ・Windowsの日本語フォルダ環境でも、エラーなくインデックス構築が可能となった。
- ・AIレビューの指摘が実用的な範囲に収まり、13サイクルで指摘ゼロを達成した。
- ・プロジェクトのタクソノミーが整理され、コードの保守性が向上した。
Senior Engineer Insight
> LLMの出力をLLMで洗浄する設計は、構造的に極めて脆弱である。非決定論的な要素をサニタイズ層に置くと、イタチごっこに陥る。実務では、LLMの出力を決定論的なスキーマ検証や正規表現で制御すべきだ。また、AIレビューをCIに組み込む際は、主観性を制御するスコープ指示が不可欠である。これなしでは、些末な改善提案による開発の停滞を招く。設計の境界を明確に引くことが、AIシステムの安定稼働の鍵となる。