Learn Claude Code
s09

記憶システム

システム強化

セッションを越えて残るものだけ保存する|414 LOC|5 ツール

現在の作業空間から再導出できない、セッションを越えて有効な知識だけが memory に入る価値があります。

s00 > s01 > s02 > s03 > s04 > s05 > s06 > s07 > s08 > [ s09 ] > s10 > s11 > s12 > s13 > s14 > s15 > s16 > s17 > s18 > s19

memory は会話の全部を保存する場所ではない。次のセッションでも残すべき事実だけを小さく持つ場所である。

この章が解決する問題

memory がなければ、新しいセッションは毎回ゼロから始まります。

その結果、agent は何度も同じことを忘れます。

  • ユーザーの好み
  • すでに何度も訂正された注意点
  • コードだけでは分かりにくいプロジェクト事情
  • 外部参照の場所

そこで必要になるのが memory です。

最初に立てるべき境界

この章で最も大事なのは:

何でも memory に入れない

ことです。

memory に入れるべきなのは:

  • セッションをまたいでも価値がある
  • 現在のリポジトリを読み直すだけでは分かりにくい

こうした情報だけです。

主線とどう併読するか

  • memory を「長い context の置き場」だと思ってしまうなら、s06-context-compact.md に戻って compact と durable memory を分けます。
  • messages[]、summary block、memory store が頭の中で混ざってきたら、data-structures.md を見ながら読みます。
  • このあと s10 へ進むなら、s10a-message-prompt-pipeline.md を横に置くと、memory が次の入力へどう戻るかをつかみやすくなります。

初学者向けの 4 分類

1. user

安定したユーザーの好み。

例:

  • pnpm を好む
  • 回答は短めがよい

2. feedback

ユーザーが明示的に直した点。

例:

  • 生成ファイルは勝手に触らない
  • テストの更新前に確認する

3. project

コードを見ただけでは分かりにくい持続的事情。

4. reference

外部資料や外部ボードへの参照先。

入れてはいけないもの

入れないもの理由
ディレクトリ構造コードを読めば分かる
関数名やシグネチャソースが真実だから
現在タスクの進捗task / plan の責務
一時的なブランチ名すぐ古くなる
秘密情報危険

最小の心智モデル

conversation
   |
   | 長期的に残すべき事実が出る
   v
save_memory
   |
   v
.memory/
  ├── MEMORY.md
  ├── prefer_pnpm.md
  └── ask_before_codegen.md
   |
   v
次回セッション開始時に再読込

重要なデータ構造

1. 1 メモリ = 1 ファイル

---
name: prefer_pnpm
description: User prefers pnpm over npm
type: user
---
The user explicitly prefers pnpm for package management commands.

2. 小さな索引

# Memory Index

- prefer_pnpm [user]
- ask_before_codegen [feedback]

索引は内容そのものではなく、「何があるか」を素早く知るための地図です。

最小実装

MEMORY_TYPES = ("user", "feedback", "project", "reference")
def save_memory(name, description, mem_type, content):
    path = memory_dir / f"{slugify(name)}.md"
    path.write_text(render_frontmatter(name, description, mem_type) + content)
    rebuild_index()

次に、セッション開始時に読み込みます。

memories = memory_store.load_all()

そして s10 で prompt 組み立てに入れます。

近い概念との違い

memory

次回以降も役立つ事実。

task

いま何を完了したいか。

plan

このターンでどう進めるか。

CLAUDE.md

より安定した指示文書や standing rules。

初学者がよくやる間違い

1. コードを読めば分かることまで保存する

それは memory ではなく、重複です。

2. 現在の作業状況を memory に入れる

それは task / plan の責務です。

3. memory を絶対真実のように扱う

memory は古くなり得ます。

安全な原則は:

memory は方向を与え、現在観測は真実を与える。

Try It

cd learn-claude-code
python agents/s09_memory_system.py