Claude Code の「記憶」は4層ある — どこに何を書くかの判断フロー

どこに何を書けばいいかわからない

Claude Code を使っていて気づくのは、「Claudeに覚えさせる場所」が思ったより多いことだ。CLAUDE.md だけかと思っていたら、Auto Memory があり、.claude/skills/ があり、自前で作った knowledge/ フォルダもあったりする。

筆者が運用している blog-agents プロジェクトでは、いまセッション開始時に Claude が参照しうる記憶が4層に分かれている。整理するとこうなる。

場所誰が書く読込blog-agents実数値
Global User CLAUDE.md~/.claude/CLAUDE.md自分全プロジェクト44行
Project CLAUDE.md./CLAUDE.mdチームそのプロジェクト62行
Auto Memory~/.claude/projects/<project>/memory/Claude自身セッション開始時6ファイル
knowledge/(独自)~/project/blog-agents/knowledge/Auditor役割別に必要時3,021行 / 10ファイル

書き手だけ見ても、ユーザー(自分)・Claude自身・別のサブエージェント、と3者ぶら下がる。それぞれの責務を理解しないと、CLAUDE.md が膨れ上がってコンテキストを食いつぶす。

層1: Global User CLAUDE.md(44行)

~/.claude/CLAUDE.md は、すべての Claude Code セッション開始時に読まれる。書き手は自分、対象は「全プロジェクトで効かせたい癖」だ。

筆者の Global CLAUDE.md には、たとえば「常に日本語で会話する」「日付・曜日を出力するときは date -j -f コマンドで確認する」「特定の相談はジャンルを判定して /hiroshi-hayashiyama:magi スキルを起動する」といったルールが入っている。プロジェクトとは無関係に、自分の好みや作業スタイルとして毎回効かせたいもの。

逆に言えば、プロジェクト固有の話は書かない。書くと別のプロジェクトでも読み込まれてコンテキストを汚す。44行で十分まわっている。

層2: Project CLAUDE.md(62行)

./CLAUDE.md または ./.claude/CLAUDE.md は、そのプロジェクト内でセッションを開始したときに読まれる。書き手はチーム(個人運用なら自分)、対象はそのプロジェクトに固有の規約・構造・運用ルール。

blog-agents の Project CLAUDE.md には、ブログ概要・ディレクトリ構造・サブエージェントとスキル一覧・パイプラインフロー・Discord/WordPress連携・品質基準が並ぶ。テーブル形式で密度を上げて、本文よりも参照ポインタに近い構造にしてある。詳細は別ファイル(subagent定義・SKILL.md・knowledge/)に委譲する設計だ。

公式は「200行以下を目指せ」と言う。書きたいことは増え続けるので、定期的に削るか、Skill や knowledge/ に逃がす。詳しくはCLAUDE.md設計記事で62行の中身を解体してある。

層3: Auto Memory(Claudeが自分で書く)

~/.claude/projects//memory/ に置かれる。書き手は Claude 自身だ。ユーザーが「これダメ」と修正すると、Claude が「次回も気をつけよう」と判断して MEMORY.md とサブファイルに保存する。

blog-agents の Auto Memory に何が入っているかを覗くと、5つの feedback ファイルがある。

  • まとめセクションの三点列挙+時間タグを使わない
  • 「3つ」固執の三点強制を避ける
  • 段落冒頭の太字インラインヘッダーを使わない
  • Discord メンション後は必ず改行を入れる
  • WordPress テーブルは HTML で書く

特に最後の WordPress テーブルの memo は、Markdown→HTMLへ変換する Python スニペット込みで保存されている。同じ問題が複数記事で起きた後に Claude が自動的に書き残した。以降のセッションでそのまま参照される。

筆者が「これメモして」と頼んだのではなく、Claude が学習した結果として書かれている点が他の3層と違う。

層4: knowledge/(役割別の専門学習層)

ここから先は Claude Code の公式機能ではなく、blog-agents が自前で作った層になる。knowledge/ ディレクトリに、各サブエージェント別の lessons ファイルが置いてある。

合計10ファイル・3,021行。内訳は writer-lessons(feedback-log 2,402行+general 35行+avoid-patterns 15行)、tone-checker-lessons/patterns.md(340行・34+パターン)、plagiarism/auditor/researcher/seo の各 patterns.md、共通の blog-style.md と topics-queue.md だ。

書き手は Auditor エージェント。レビューを通じて「writer がやりがちなミス」「tone-checker が検出すべきパターン」を抽出し、対応する lessons ファイルに追記する。読み手は各サブエージェントで、自分の担当ファイルだけを作業前に読む。

CLAUDE.md と Auto Memory の2つでカバーしきれないのは、「役割別に異なる細かい癖」だった。Writer は記事構成のルールを、tone-checker は AI 臭の検出パターンを、それぞれ独立に育てたい。3,021行を CLAUDE.md に詰めるとコンテキストが破綻するが、knowledge/ に役割別に置けば必要なエージェントだけが読む。詳細はknowledge/詳解記事に書いた。

4層間の連携パターン

4つは独立しているように見えて、実際は連動する。

「フィードバック → Auto Memory → 次回適用」の流れが基本だ。ユーザーが修正を入れると、Claude が Auto Memory に書き残し、次のセッションで同じミスを避ける。Claude 単独で完結するので、筆者は何もしなくていい。

Auto Memory に具体例が溜まってくると、Auditor が抽象ルール化して knowledge/general.md に追記する。「タイムタグ3点列挙」「太字インラインヘッダー」は最初 Auto Memory に個別保存され、そのうち tone-checker-lessons/patterns.md に体系化された。具体例が抽象ルールに昇格していくイメージだ。

Project CLAUDE.md 自体は薄く保ち、詳細は Auto Memory・knowledge/・subagent定義へ委譲する。CLAUDE.md は「目次」で、中身は他の3層に書く、という分業がうまく機能している。

「どこに書くか」の判断フロー

書きたいことが出てきたら、まず「全プロジェクトで効かせたいか」を問う。そうなら Global CLAUDE.md に書く。プロジェクト固有の規約や構造なら Project CLAUDE.md で、200行以下を維持する意識で。

ユーザーの修正フィードバックから生まれた内容、つまり Claude が「次回も気をつけよう」と判断するものは、Auto Memory に任せる。自分で書かなくていい。役割別の専門知識、たとえば writer 用の記事構成ルールや tone-checker 用の検出パターンは knowledge/<role>-lessons/ へ。

よくあるミスは、何でも Project CLAUDE.md に書いて200行を超えるパターン。CLAUDE.md は毎セッションで全文ロードされるので、太らせるとコンテキスト圧迫の元になる。「常時読ませる必要があるか?」と問いかけて、そうでなければ他の3層に逃がす。

筆者の blog-agents は CLAUDE.md 62行・knowledge/ 3,021行という非対称な構成になっている。最初は CLAUDE.md にどんどん書いていたが、200行に近づいた段階で「これは tone-checker しか読まなくていい」「これは writer 専用だ」と切り出していった結果がこの構成だ。

CLAUDE.md を太らせそうになったら、一度立ち止まって「どの層の話か」を問い直してみてほしい。

参考リンク

コメント

タイトルとURLをコピーしました