Zenn Dev Answer Philo Articles 2410b4271ee46e
Claude Codeに「昨日の続き」を覚えさせる — 人間の記憶構造をMarkdown+BM25で実装した話
- URL: https://zenn.dev/answer_philo/articles/2410b4271ee46e
- 日付: 2026-06-24
- Tier: Tier 3
- 要旨: Claude Code との半年の運用で「昨日の続き」を忘れない仕組みをMarkdown + BM25 検索で実装。セッションをまたいだ長期記憶を、frontmatter のメタデータで層(意味記憶・手続き記憶・エピソード記憶)に分類し、ファイル単位で保持。起動時に今日・昨日の日常記憶を自動注入するフック設定で、記憶喪失を構造的に回避。
詳細
記憶を設計する際に「昨日の昼飯」と「人生の決断」を同じログに混ぜないことを出発点に、answer-diary/ を daily/(流れる記憶)と impressions/(一生残る少数の瞬間)に二分。frontmatter で type(user/feedback/project/reference)を指定し、これを Semantic・Procedural・Episodic・Knowledge の4層にマッピング。検索時に層ごとの絞り込みが可能。ベクトル DB でなく BM25(キーワードベース古典的スコアリング)を採用した理由は、API・GPU・常駐プロセス不要(その場スキャンで一瞬)で、スコア算出の根拠を人間が追える(埋め込みのブラックボックス回避)。memory_search.py で frontmatter を読みつつ全ファイルスキャン。sessionstart フック(settings.json)で daily_recall.py を自動実行し、今日・昨日の daily/ を意志ではなく構造でコンテキストに強制注入。書き込みルール「1ファイル1事実・frontmatter 必須・なぜ/どう適用まで書く」が検索後の実用性を左右。