45395 - シコウサクゴ -

MEMORY.md自動注入は止められない:196行から69行へ73%スリム化した運用設計

2026-04-26
AI駆動開発
AI駆動開発
Claude Code
MEMORY.md
運用設計
確証バイアス
Last updated:2026-05-07
8 Minutes
1493 Words

Claude Code の MEMORY.md会話開始時に自動でシステムプロンプトに注入されます。便利な機能ですが、運用していると気づきます。

MEMORY.md は止められない。Claude Code 本体の機能だから。

settings.json の hook で止めようとしても無理。代わりに 「自動注入される量を絞る」 という運用設計に切り替えたところ、196行→69行(73%削減)でAIの確証バイアスが大きく改善しました。

発端:MEMORY.md が確証バイアスの温床になった

ある日、AIに過去の似た施策を尋ねたところ、明らかに 古い記憶に引きずられた回答 が返ってきました。

1
ユーザー: 新規施策のターゲット市場を再検討したい
2
AI: 過去のヒアリングログ(2026-04-14)から、化粧品系が最有力です

しかし実際は、その後のヒアリング2件目(2026-04-18)で 食品系の方が刺さる ことが判明していました。MEMORY.md には両方記録されていたのに、AIは古い結論を強く保持していました。

調査すると、MEMORY.md の 目次部分(1行サマリ) が古い結論を強調していました。本文ファイルには新情報があっても、サマリで「化粧品系最有力」と書いてあれば、AIは最初にそれを読みます。

第一の試み:hook で止める → 失敗

「MEMORY.md の自動注入を止めて、必要な時だけ読ませる」と考えました。

settings.json
1
{
2
"hooks": {
3
"SessionStart": "echo 'skip memory'"
4
}
5
}

しかし、Claude Code に SessionStart hook は存在しません

ドキュメントを掘ると、MEMORY.md の自動注入は 本体機能(システムプロンプトの # auto memory セクション) で行われており、設定で無効化する方法がありませんでした。

Claude Code の MEMORY.md 自動注入は、設定ファイルやhookで制御できない。本体機能だから。

これは重要な発見でした。

第二の試み:明示的な /recall skill → 過剰設計

次に「自動注入をやめて、明示的な /recall skill で読み込ませる」案を考えました。

しかし、これも問題があります。

  • ユーザーが毎回 /recall を打つのは現実的でない
  • AI自身が「いつ recall すべきか」を判断するのは困難
  • 結局、自動注入の利便性を失う

過剰設計でした。

第三の試み:自動注入を受け入れて、量を絞る → 成功

「止められないなら、注入される量を最小化する」に切り替えました。具体的には以下のルール。

ルール1: MEMORY.md は索引のみ、本体ファイルに分割

1
<!-- MEMORY.md(index only) -->
2
- [User Profile](user_profile.md) — 47歳エンジニア
3
- [Project A](project_a.md) — 新規プロジェクト、進行中
4
- [Feedback X](feedback_x.md) — テストはモックしない

各エントリは ~150文字以内 の1行サマリ。本体は別ファイルに置きます。

ルール2: アクティブ判定で自動退避

以下の判定基準で、古いエントリを archive/ に退避してMEMORY.mdから削除します。

  • 直近7日以内に更新あり → アクティブ(残す)
  • 完了 or 8日以上未更新 → archive 退避

ルール3: 200行 truncate を意識

調査で判明したのですが、MEMORY.md の自動注入は 200行で truncate されます。それ以上書いても読まれません。意図して200行以内に収めるべきです。

実装:196行→69行への圧縮

実際の数字です。

指標BeforeAfter削減率
MEMORY.md 行数1966965%
MEMORY.md ファイルサイズ18.2KB5.0KB73%
索引リンク数1553975%

削減プロセス

  1. archive/ ディレクトリを作成: ~/.claude/.../memory/archive/
  2. mtime ベースで自動退避スクリプトを実装:
    Terminal window
    1
    # 8日以上更新がないファイルを archive へ
    2
    find . -maxdepth 1 -name "*.md" -mtime +8 -exec mv {} archive/ \;
  3. MEMORY.md の該当行を削除: archive 対象になったエントリは索引からも削除
  4. 「完了」マーカー導入: 完了済み施策は frontmatter に status: completed を追加し、即archive対象に

確証バイアスは「自動読込」より「索引肥大」が主因だった

スリム化前後でAIの挙動を比較したところ、興味深い発見がありました。

確証バイアスの主因は、自動注入そのものではなく、索引が肥大して古い結論を目立たせることでした。

  • 196行の索引: 「化粧品系最有力」が3行目に書かれている → AI が最初に読む → 強く保持
  • 69行の索引: 同じエントリは archive 済 → AI は本体ファイルを読みに行く → 最新情報も統合する

つまり、MEMORY.md は「最新の話題のヘッドライン」 であるべきで、過去の結論を残すべきではありません。

運用ルール3原則

  1. MEMORY.md は索引のみ:本体は別ファイル
  2. 8日経過 or 完了 → archive:自動退避
  3. 200行を上限:超えたら統合・削除

このルールでまわすようになって1週間、確証バイアスを感じる場面はゼロになりました。

副次効果:プロダクト設計への学び

この経験は、開発中のプロダクトのUI設計にも転用できました。

  • ダッシュボードの「最新インサイト」枠は7日以内のみ表示
  • 過去の分析結果は archive に退避し、検索でのみアクセス可能
  • 「ヘッドライン」と「履歴」を構造的に分離

AIの記憶設計の悩みと、人間ダッシュボードのUI設計の悩みは、同じ構造をしています。

まとめ

  • Claude Code の MEMORY.md 自動注入は hook では止められない(本体機能)
  • 量を絞る運用に切り替え:196行→69行(73%削減)
  • 確証バイアスの主因は「自動読込」より「索引肥大」
  • 8日経過 or 完了 → archive のルールでまわす

「止められない機能」は止めようとせず、与える情報量を設計する。これが現代AIエージェント運用の基本だと感じます。

Article title:MEMORY.md自動注入は止められない:196行から69行へ73%スリム化した運用設計
Article author:45395
Release time:2026-04-26

記事へのご質問・ご感想をお聞かせください

フィードバックを送る