Claude CodeのMEMORY.md|勝手に覚えるルールの正体

Claude Codeには、あなたが書く指示(CLAUDE.md)とは別に、Claudeが自分で書きためるメモがあります。それがMEMORY.mdです(画面ではAuto-memoryと表示されます)。
CLAUDE.mdがあなたのルールブックなら、MEMORY.mdはClaudeがプロジェクトについて覚えたことを自動でためる長期メモ。毎回言うほどではないけれど、次も覚えていてほしいことが、ここにたまっていきます。

この記事では、そのMEMORY.mdを、実際に「覚えて」のように記録に関連する指示を出し動作検証を進めます。CLAUDE.mdとの違い、保存される場所、/memoryでの確認方法までを順に追います。

この記事は連載「AIにコードを書かせる前に知っておきたい設定ファイル」の第4回です。
第1回(CLAUDE.mdとは?)・第2回(settings.jsonって何?)・第3回(Claude Codeのrulesとは?)も公開しています。

目次

CLAUDE.mdとMEMORY.mdは別物

Claude Codeの記憶は大きく2種類あります(公式ドキュメント)。

CLAUDE.mdMEMORY.md
誰が書くあなたClaude(自動で追記)
中身ルール・手順・プロジェクト方針作業中に学んだこと・好み
共有Gitに含めればチームで共有マシンローカル(共有されない)
読み込みセッション開始時に全文(長いと文脈を食う)セッション開始時に読まれる

CLAUDE.mdが「最初から決めておくルール」なら、MEMORY.mdは作業中にClaudeが「次も使えそう」と判断したことだけを残す場所です。毎セッション保存されるわけではありません。

実際に「覚えて」と頼んでみます。

「覚えて」と頼むと何が起きるか

準備

mkdir claude-memory-demo
cd claude-memory-demo
git init
code .   # VSCodeで開き、Claude Codeパネルを起動

セッション内で/memoryを開きます。Auto-memory: onになっていればOKです。

図1:/memoryの画面。Auto-memory: onと、User memory・Project memory・Open auto-memory folderの3項目が並ぶ

図1:/memoryではAuto-memoryの状態(on)と、1. User memory(~/.claude/CLAUDE.md)・2. Project memory(./CLAUDE.md)・3. Open auto-memory folder(MEMORY.md)が確認できる。

① 実験前の状態を見る

MEMORY.mdの実体は、リポジトリ直下ではなくClaudeのデータディレクトリにあります。場所は/memoryのOpen auto-memory folderから開けます。

~/.claude/projects/<リポジトリ識別子>/memory/MEMORY.md

まだ何も指示していない新規プロジェクトでは、memoryフォルダ自体がまだ無いか、空のことが多いです。

図2:実験前。プロジェクトのフォルダにはセッションログだけで、memoryフォルダがまだ無い

図2:指示前はmemoryフォルダがまだ作られていない。

② 「覚えて」と指示する

次のように指示します。

このプロジェクトではパッケージマネージャに pnpm を使う。覚えておいて。
図3:覚えてと指示したチャット画面

図3:「覚えて」と頼んだプロンプト。

③ Claudeが書いた内容を確認する

Claudeが以下2つのファイルを作成しています。MEMORY.mdの方には、package-manager-pnpm.mdへのリンクが1行あるだけでした。実際のメモ(このプロジェクトはpnpmを使う、npmやyarnは使わない、という内容)は、もう一方のpackage-manager-pnpm.mdに書かれています。

図4:Claudeがmemory/MEMORY.mdと別ファイルへ自動で書き込み、覚えましたと返した

図4:指示直後のClaudeの応答。

図5:MEMORY.mdの中身。短い一行だけ書かれている

図5:MEMORY.mdはこの短い一行だけ。

図6:別ファイルpackage-manager-pnpm.mdの中身

図6:別ファイル(package-manager-pnpm.md)の中身。

④ セッションを開き直して思い出すか確認

新しいセッションを開き、以下の指示を出します。

このプロジェクトのパッケージマネージャは何を使う想定?

新しいセッションなので本来は会話履歴は残っていないはずだが、pnpmと回答しているため、MEMORY.mdの内容を参照しているようです。

図7:新セッションでの想起。履歴が無いのにpackage-manager-pnpm.mdを参照してpnpmと回答

図7:別セッションでもMEMORY.md経由で文脈が引き継がれる。

公式ドキュメントによると、Claudeは毎回保存するわけではなく、「次の会話でも役立つか」で判断して書くとされています。残るのは、あなたの修正や好み、よく使うコマンド、デバッグで分かったことなど。今回のように「覚えて」と頼めば、記録されるようです。

MEMORY.mdの保存場所

MEMORY.mdの実体は~/.claude/projects/…/memory/にあり、リポジトリ直下ではありません。Gitリポジトリごとに、Claudeのデータディレクトリへ1フォルダ割り当てられます。

~/.claude/projects/<リポジトリ識別子>/memory/
├── MEMORY.md                 # 短い文章の一覧(毎セッション先頭で読まれる)
├── package-manager-pnpm.md   # 中身を書く別ファイル(必要時だけ Claude が Read)
└── ...
図8:~/.claude/projects/配下のmemoryフォルダ。リポジトリ直下ではなくClaudeのデータ領域に保存される

図8:MEMORY.mdの実体は~/.claude/projects/…/memory/にある。リポジトリ直下ではない。

  • 作業ツリー直下ではなく、Claudeのデータ領域に置かれる
  • Gitリポジトリ単位で1フォルダ割り当てられる

なお、セッション開始時に読み込まれるのはMEMORY.mdの先頭200行(または25KB)まで、と公式ドキュメントに書かれています。それを超えた分は起動時には読まれないため、MEMORY.mdは短い文章の一覧とし、その詳細は別ファイルにしているようです。(CLAUDE.mdの方は長さに関係なく全文が読まれます)。

settings.jsonでの設定

auto memoryまわりは、プロジェクトの.claude/settings.jsonで設定できます。保存先を変えたいときはautoMemoryDirectoryにパス(絶対パスか~/で始まるパス)を、自動記録を止めたいときはautoMemoryEnabledをfalseにします。必要なものだけ書けばOKです。

{
  "autoMemoryDirectory": "~/my-memory-dir",
  "autoMemoryEnabled": false
}

いつCLAUDE.mdに書き、いつMEMORY.mdに任せるか

状況向いている方
チーム全員に守らせたいコーディング規約./CLAUDE.mdまたは.claude/rules/
自分だけの好みを全プロジェクトに~/.claude/CLAUDE.md
作業中に判明した「このrepoだけの癖」MEMORY.md(気に入ったら手動でCLAUDE.mdに昇格)
毎回必ず守らせたい(曖昧さゼロ)CLAUDE.mdに明文化。hookで強制する手もある

MEMORY.mdは文脈として読まれるだけで、permissionsのように強制はされません。譲れないルールはCLAUDE.mdに書き、覚えさせたい補足はMEMORY.mdに任せます。

まとめ

  • MEMORY.mdはClaudeが自動でためる長期メモ。実体は~/.claude/projects/<識別子>/memory/にあり、リポジトリごと・マシンローカル
  • ~/.claude/CLAUDE.mdはあなたが書くユーザー共通指示で、MEMORYとは別物
  • 覚えさせたい補足はMEMORY.md、譲れないルールはCLAUDE.md。/memoryで確認・編集

次のステップ

手元で/memoryを開き、自分のプロジェクトにMEMORY.mdがすでにあるか確認してみてください。中身は普通のMarkdownなので、古いメモはそのまま編集・削除できます。

連載ナビ

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次