AI 記憶工具規劃與實作
AI 記憶工具規劃與實作
概念摘要
Claude Code 環境下同時存在三套記憶機制,它們不是單一分層,而是各有職責、互補的系統。理解它們的邊界,才能避免重複維護或資料放錯地方。
使用情境
- 想讓 Claude Code 記住偏好或背景 → Auto-Memory
- 想讓 Hermes / Codex 也知道某件事 → Neo4j 圖譜
- 技術細節需要長期複習或深度記錄 → Obsidian 筆記
重點筆記
三套記憶機制對照
| 機制 | 位置 | 目的 | 維護方式 |
|---|---|---|---|
| File-based Auto-Memory | ~/.claude/projects/.../memory/ | Claude Code 的協作習慣、偏好、背景 | Claude Code 自動讀寫;人工說「記住」即觸發 |
| Neo4j 共享圖譜 | bolt://localhost:7687 | 實體骨架與跨 agent 關係(哪些服務存在、彼此怎麼連) | /neo4j-memory skill;三個 agent 共用 |
| Obsidian vault | ai_note/學習/工作技術/ | 深度技術筆記、學習記錄 | /tech-note skill 建立;人工策展 |
判斷原則:「其他 agent(Hermes/Codex)也需要知道嗎?」→ 是 → Neo4j;否 → Auto-Memory 或 Obsidian。
Neo4j note 節點:串接兩層的橋樑
note 節點只存骨架(指標),不複製筆記內文:
{
"name": "neo4j-intro-planning",
"type": "note",
"observations": [
"source: claude-code",
"obsidian_path: 學習/工作技術/2026-04-06 Neo4j 圖形資料庫入門與應用規劃.md",
"Neo4j 入門:Docker 部署、Cypher、Node.js 串接;IC 設計與知識管理應用",
"tags: neo4j, graph-database, docker, cypher"
]
}
可用的關係(封閉詞彙):
| 關係 | 方向 | 用途 |
|---|---|---|
ABOUT | note → topic | 筆記談的知識主題 |
DOCUMENTS | note → project/service | 筆記記錄某個專案或服務 |
RELATED_TO | note ↔ note | 對映 Obsidian [wikilink](./wikilink) |
工作流:每次 /tech-note 寫完後,用 /neo4j-memory 補建 note 節點 + 連關係。
兩種圖譜建構方向的比較
方向 A:結構化 metadata 索引(建議採用)
- 存:筆記的「骨架」,obsidian_path 作為指標
- 目的:跨 agent 導航——沿著 ABOUT/DOCUMENTS 邊找到筆記位置
- 節點數:有限、可控,噪音低
- schema:封閉 9 種 type,三個 agent 共讀不衝突
方向 B:內容萃取圖譜(不建議混入同一 Neo4j)
- 存:全文 LLM 萃取的細粒度三元組(
SIGTRAP-[CAUSED_BY]->TSM thread limit) - 問題:節點數爆炸、schema 開放難控制、污染現有結構、筆記改動要重跑 pipeline
- 替代方案:語意搜尋需求用向量資料庫(Qdrant / Chroma)更合適
內容搜尋需求:
Obsidian 全文 → embedding 向量化 → 向量 DB → semantic search
(筆記改動只需重 embed 那一篇,成本低)
當前已建立 note 節點(2026-05-27)
| note 名稱 | 對應筆記 | 關聯實體 |
|---|---|---|
neo4j-intro-planning | Neo4j 圖形資料庫入門與應用規劃 | topic: graph-database, cypher;service: neo4j |
hermes-agent-docker-setup | Hermes Agent Docker 安裝與設定 | topic: docker, ai-agent;agent: hermes |
hermes-webui-migration | hermes-webui 遷移經驗 | topic: docker;service: hermes-webui |
hermes-webui-install | hermes-webui 安裝及問題整理 | topic: docker;service: hermes-webui, hermes-gateway |
just-talk-dev-log | just-talk 開發記錄 | topic: rust, voice-ime, whisper;project: just-talk |
just-talk-pitfalls | just-talk 開發記錄與踩坑筆記 | topic: rust, voice-ime;project: just-talk |
just-talk-fixes | just-talk 修改記錄與問題排查機制 | topic: rust, voice-ime;project: just-talk |
範例
# 新筆記寫完後補建 note 節點的典型流程
# 1. 查是否有對應 topic 節點(避免重複建立)
# → /neo4j-memory skill 中用 search_memories / find_memories_by_name
# 2. 建 note 節點(不存在的 topic 一起建)
# create_entities: note + 新 topic
# 3. 建關係
# note -[ABOUT]-> topic
# note -[DOCUMENTS]-> project/service(有的話)
# note -[RELATED_TO]-> 相關 note(有的話)
參考資料
~/.hermes/memory-graph-convention.md(Neo4j 寫入唯一權威慣例)- Neo4j Browser:http://localhost:7474
待深入的問題
- 向量資料庫(Qdrant / Chroma)與現有 Neo4j 的整合方式
- Obsidian frontmatter 加
neo4j:欄位後,用腳本自動同步 note 節點的可行性 - note 節點累積到一定數量後,如何用 Cypher 查「哪些筆記跟某 project 最相關」