Hippocampus:讓 AI 代理人從經驗中學習
踩過的坑寫進 notes/,mem build 編譯進索引,下次同類任務開始前先查到上次怎麼栽的。CLI 叫 mem。
記憶根目錄 $MEM_HOME(預設 ~/.claude/memory)。全部是純文字,mem build 從 notes/ 生成其餘三層。
何時使用
- 開始一個非平凡任務前:查這件事以前有沒有做過、有沒有決策或坑。
- 使用者提到「上次」「之前說過」「按老規矩」時。
- 派 subagent 前:把相關記憶寫進 spec。
- 完成一個可複用的結果、解決一個反覆出現的問題、被使用者糾正一次之後:寫一篇 note。
四層模型
| 層 | 檔案 | 內容 | 誰寫 |
|---|---|---|---|
| Tier-0 | MEMORY.md | 路由表:讀寫協定、pack 列表、最近 12 篇;有位元組預算(預設 12000) | mem build |
| Tier-1 | packs/<id>.md | 每個領域一頁,每篇 note 一行 description + 路徑 | mem build |
| Tier-2 | catalog.tsv | 每篇 note 一行:pack date type name title bytes gist | mem build |
| Tier-3 | notes/*.md | 原文,帶 YAML front-matter | mem add 建檔案,你填內容 |
分類規則在 $MEM_HOME/.memorypack/packs.json:front-matter 裡 metadata.pack 寫了合法 id 就用它,否則按關鍵字打分(strong +3,keywords +1),零分進 misc。
讀路徑(按順序,夠用就停)
- 讀
MEMORY.md全文(它很小,就是為了被整篇讀)。 - 按「什麼時候讀」列找到領域 →
mem pack <id>掃讀該領域。 - 需要定位具體條目 →
mem find <關鍵字> [--pack <id>] [--limit N],只回傳 catalog 行。 - 只對命中的 1-3 篇 →
mem show <name>讀原文。
記憶與現場證據(程式碼、日誌、命令輸出)衝突時,以現場為準,並告訴使用者哪篇記憶過期了。
寫路徑(只有這一條)
mem add <slug> --type project|feedback|reference [--pack <id>] [--title "標題"]
# 打開打印出的路徑,填 description 一行 + FACT / 決策 / 坑 / 相關
mem build
description是唯一會出現在上三層的內容,寫成「這是什麼 + 什麼時候要用」的一句話。- 改已有 note:直接編輯
notes/裡那一篇,然後mem build。 - 寫完可以跑
mem doctor檢查預算、斷鏈、缺 description。
禁令
- 不手改
MEMORY.md、packs/*、catalog.tsv:它們是生成物,下次 build 會被覆蓋。 - 不批量讀
notes/(cat notes/*、ls後逐篇讀、對整個目錄 grep 原文):用mem find。 - 不刪除 note,除非使用者明確要求;過期就在原文標註並更新 description。
- 不把 secret、token、密碼、私鑰、個人身份資訊寫進 note。
- 不另開第二個記憶庫;其他工具的舊路徑用 symlink 指向
$MEM_HOME。
參考
- 日常維護:
prompts/maintain.md - 對話末復盤與主動建設:
prompts/proactive-build.md - 可貼進 AGENTS.md / CLAUDE.md 的規則段:
prompts/agents-snippet.md - hooks 範例:
prompts/hooks/