# AIエージェントをソフトウェアに組み込むプラクティス
# メモリ書込ゲート
🎯 LLMの推測がそのまま長期メモリに入り、次のセッションで「事実」として参照される。メモリ汚染は沈黙のうちに蓄積します。
長期メモリへの書込にバリデーションを設けるのは、DBへの入力検証と同じ原則です。
🔥 解決する課題
長期メモリへの書込は「一度入ったら長く残る」不可逆に近い操作です。書込ゲートがなければ3つの問題が連鎖します。エージェントが生成した誤情報がそのまま保存されハルシネーションが自己強化する。外部入力に埋め込まれた悪意ある指示がメモリに書き込まれ、将来のセッションまで攻撃が持続する。同じ事実が微妙に異なる表現で何度も保存され、検索時に矛盾が返って応答品質が劣化する。メモリ汚染はログにエラーを残さないため、発見が特に遅れます。
💡 提案パターン
長期メモリへの書込を無条件に許可せず、信頼度スコアリング・重複検出・PII/機微情報フィルタ・ソース検証のゲートを設けます。ユーザが直接述べた事実は自動書込、推測や未検証情報は隔離領域に留め置き、人間または上位エージェントの承認を待ちます。重複検出ではコサイン類似度0.90〜0.95を閾値とし、同一エンティティ×同一属性なら上書きします。input_trustが低いほど信頼度閾値を上げ、failure_costが高い領域ではさらに厳格にします。
✅ 選定条件
使うとき:
- セッションを跨いで持続する長期メモリを持つ
- エンドユーザの自由入力や外部ドキュメントからメモリ候補を抽出する
- 誤った記憶が金銭的判断・医療助言・法的回答など後続の意思決定に影響する
使わないとき:
- メモリがセッション内スクラッチパッドのみで、セッション終了時に破棄される場合
- メモリが完全に管理者管理でエージェントは読取専用の場合
⚠️ 落とし穴
- 隔離領域は承認フローが回らないと肥大化します。TTL(7〜30日)を設け未承認は自動破棄してください
- エンベディングの類似度だけでは「同じ人物の異なる属性」と「同一属性の更新」を区別できません。構造化メタデータを併用しましょう
- メモリストアへの直接書込パスが残っていると、ゲートが完全に無意味になります
🔧 実装方針
- 書込ゲートを重複検出→信頼度スコアリング→PII/機微情報フィルタの3段パイプラインとして構成し、全書込を必ずこのゲートを経由させます
- 信頼度スコアリングではソース(ユーザ直接/エージェント推論/外部文書)とグラウンディング(引用あり/なし)の組み合わせで分類し、閾値未満は隔離領域に留め置きます
- 重複検出ではコサイン類似度に加えてエンティティID×属性キーの構造化メタデータを併用し、更新と新規を正確に区別します
- 隔離領域にはTTLを設けて未承認エントリを自動破棄し、メモリストアへの直接書込APIはアーキテクチャ制約として禁止します
#
AIエージェント# #
ソフトウェアアーキテクチャ#