AIエージェントはセッションをまたいで記憶を持たない。この単純な事実が、実運用では深刻な問題を引き起こす場合がある。
dev.to に投稿されたケーススタディが示す状況は、AI駆動開発を本格運用しているチームにとって他人事ではない。あるチームが`users`テーブルに`card_token`カラムを追加したところ、PCI-DSS(カード情報を扱うシステムに適用される国際的なセキュリティ基準)への準拠問題が発覚した。PCI-DSSは、カードデータが自社データベースに触れた瞬間に適用範囲が広がる。そのためチームはカラムを削除し、Stripeが管理するPaymentMethodに移行した。
問題は約1ヶ月後に起きた。決済の失敗が再発し、新しいClaude Codeセッションで調査を開始した。エージェントは前回の経緯をまったく知らない。そして提案した解決策は、`card_token`カラムの再追加だった。コードは残り、推論は消えた。これがAIエージェント特有のコンテキスト消失問題の本質である。
なぜエージェントは「なぜ」を忘れるのか
人間の開発者はコミットメッセージ、PRコメント、Slackのスレッドなど、意図せず判断の痕跡を残す。これらは後から「なぜこうなっているのか」を追うための手がかりになる。
AIエージェントはその痕跡を残さない。プロンプトとコンテキストはセッションが閉じると消える。`git blame`を使えば「いつ・何を」変えたかはわかる。しかし「なぜそうしなかったか」、つまりリバートされた試みや却下された設計案は、どこにも記録されない。
この問題は、エージェントが生成したコードの量が増えるほど顕在化する。人間なら「あの実装はコンプライアンス上NGだった」と記憶しているが、エージェントには前回の文脈が存在しない。結果として、すでに踏んだ地雷を再び踏む。
Selvedgeが実装する「推論の永続化」
この課題に対してSelvedgeというOSSツールが提案するアプローチは、推論をリアルタイムでキャプチャすることだ。事後にdiffから推測するのではなく、変更を加えた瞬間のエージェントの判断をそのまま記録する。
SelvedgeはMCP(Model Context Protocol)サーバーとして動作する。MCPはAnthropicが策定したオープンプロトコルで、AIエージェントが外部ツールやデータソースを呼び出すための標準インターフェイスである。Claude Codeなどのエージェントは、MCPを通じてSelvedgeの機能を呼び出せる。
設定は`CLAUDE.md`に4行追加するだけで完結する。このファイルはClaude Codeが参照するプロジェクトルールファイルで、「エンティティに触れる前に過去の試みを確認する」という指示をエージェントに与える。
pip install selvedge
selvedge setupエージェントが`selvedge prior-attempts users.card_token`を実行すると、以下のような出力が返る。
users.card_token
Prior attempt 28 days ago (reverted after 2 days)
Reasoning: Added to store card tokens for one-click retries.
Outcome: REVERTED — kept card data out of our own DB to stay clear of
PCI-DSS scope; moved to Stripe-managed methods.この情報を受けたエージェントは、カラムを追加するのではなく、保存済みStripe PaymentMethodに対して`off_session`チャージを実行した。コンプライアンス違反を再度犯すことなく、決済の再試行を実現した。
データはプロジェクト直下の`.selvedge/`ディレクトリにSQLiteファイルとして保存される。アカウント登録不要、テレメトリなし、コアパスにLLM呼び出しなし、という設計になっている。推論テキストはエージェントが書いた文字列をそのまま保存する。
ツールが提供する8つのインターフェイスと相互運用性
Selvedgeが提供するツールは8種類に分類される。
- prior_attempts / blame / diff / history: 過去の記録を参照する読み取り系
- log_change: 変更と推論を記録する書き込み系
- changeset / search / stale_decisions: 蓄積されたデータを横断的に扱う分析系
v0.3.9で追加されたエクスポート機能も注目点のひとつだ。`selvedge export --format agent-trace`は、CursorとCognition AIが策定したオープン帰属フォーマット「Agent Trace v0.1.0」形式で履歴を出力する。`selvedge import`でその形式を読み戻すことも可能で、ツール間で推論の履歴を持ち運べる設計になっている。
この相互運用性は重要な方向性を示している。特定ツールへのロックインを避け、推論の記録を「コードベースのインフラ」として扱うという考え方だ。Gitがコードの変更履歴を管理するように、AIが生成したコードの「意図の履歴」を管理する層が、今後の開発ワークフローに組み込まれていく可能性がある。
AI駆動開発が普及するにつれ、「なぜこのコードがここにあるのか」を追跡する仕組みは、コードレビューやインシデント対応の精度に直結する問題になっていく。