前言¶
很多 Agent 把「記憶」等同於當前會話裏的上下文:對話一結束,用戶偏好、實體關係、歷史事實全部丟失。下一輪只能從零追問,或靠人工重複交代。向量 RAG、知識圖譜、時序知識圖譜等方案越來越多,但選型往往變成「先上 Mem0 / Zep / Cognee」,而不是先對齊檢索形態與持久化層級。
下面介紹 memory-systems 這一 Agent Skill。它來自 Agent Skills for Context Engineering 集合,用結構化指南覆蓋跨會話語義記憶、實體追蹤、圖/向量檢索與記憶整合,並說明與同集合裏 filesystem-context、context-compression 等技能的邊界,避免把文件草稿、會話壓縮和 token 優化誤當成「長期記憶」設計。
這是什麼¶
memory-systems 是一份面向生產 Agent 的 Memory System Design 說明(SKILL.md),不是可執行框架本身。維護方爲 Agent Skills for Context Engineering Contributors;官方路徑:
https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering/tree/main/skills/memory-systems
Skill 元數據中的定位是:在 Agent 系統中處理 持久語義記憶——跨會話知識保留、實體追蹤、時間有效性(temporal validity)、圖或向量檢索、記憶整合(consolidation),以及記憶基準(benchmark)選型。文件型 scratchpad 應交給 filesystem-context,可讀交接摘要交給 context-compression,單次軌跡內的 token 策略交給 context-optimization。
核心功能¶
何時啓用¶
在以下情況讓 Agent 加載本 Skill:
- 需要跨會話持久化知識
- 在 Mem0、Zep/Graphiti、Letta、LangMem、Cognee 等框架間選型
- 要在多輪對話中保持實體身份一致
- 要對累積知識做推理,或設計可擴展的生產記憶架構
- 要用 LoCoMo、LongMemEval、DMR 等基準評估記憶系統
- 需要自動實體/關係抽取、可自我改進的動態記憶(如 Cognee)
不要用本 Skill 處理:文件草稿與工具輸出卸載(filesystem-context)、會話壓縮與人工可讀交接(context-compression)、掩碼、前綴緩存與檢索範圍(context-optimization)、基於 RDF 的 BDI 心智狀態(bdi-mental-states)。
核心觀念:從上下文到持久層的譜系¶
記憶是從易失的 context window 到持久存儲的一條譜系。默認選 能滿足檢索需求的最淺層;資料指出,對部分記憶負載,工具複雜度不如可靠檢索重要(claim-memory-locomo-filesystem-baseline)。僅在檢索質量下降,或需要多跳推理、關係遍歷、「時間旅行」查詢時,再增加圖結構或時間有效性。
生產框架對照¶
按主導檢索模式縮小候選,再用基準數據驗證預期(無單一基準可定論):
| Framework | Architecture | Best For | Trade-off |
|---|---|---|---|
| Mem0 | Vector store + graph memory, pluggable backends | Multi-tenant systems, broad integrations | Less specialized for multi-agent |
| Zep/Graphiti | Temporal knowledge graph, bi-temporal model | Enterprise requiring relationship modeling + temporal reasoning | Advanced features cloud-locked |
| Letta | Self-editing memory with tiered storage (in-context/core/archival) | Full agent introspection, stateful services | Complexity for simple use cases |
| Cognee | Multi-layer semantic graph via customizable ECL pipeline | Evolving agent memory; multi-hop reasoning | Heavier ingest-time processing |
| LangMem | Memory tools for LangGraph workflows | Teams already on LangGraph | Tightly coupled to LangGraph |
| File-system | Plain files with naming conventions | Simple agents, prototyping | No semantic search, no relationships |
選型要點(摘自官方說明):需要雙時態(事件發生時間與寫入時間)時傾向 Zep/Graphiti;要快上線、託管基礎設施時傾向 Mem0;需要 Agent 深度自省與分層存儲時傾向 Letta;需要可定製 ECL 管道與稠密多層語義圖時傾向 Cognee。
記憶層級¶
選滿足持久化需求的 最淺層,再按需加深:
| Layer | Persistence | Implementation | When to Use |
|---|---|---|---|
| Working | Context window only | Scratchpad in system prompt | 始終存在;注意注意力友好位置 |
| Short-term | Session-scoped | File-system, in-memory cache | 中間工具結果、會話狀態 |
| Long-term | Cross-session | Key-value store → graph DB | 用戶偏好、領域知識、實體註冊表 |
| Entity | Cross-session | Entity registry + properties | 跨會話同一實體身份 |
| Temporal KG | Cross-session + history | Graph with validity intervals | 會變的事實、時點查詢、避免上下文衝突 |
檢索策略¶
按查詢形態匹配策略;準確度優先且預算允許時採用混合檢索:
| Strategy | Use When | Limitation |
|---|---|---|
| Semantic (embedding similarity) | 直接事實查詢 | 多跳推理易退化 |
| Entity-based (graph traversal) | 「關於 X 的一切」 | 需要圖結構 |
| Temporal (validity filter) | 事實隨時間變化 | 需要有效性元數據 |
| Hybrid | 綜合準確度 | 基礎設施最重 |
記憶整合與實操路徑¶
定期做 consolidation,避免記憶無限增長導致檢索變差;原則是 Invalidate but do not discard——失效要標記,歷史仍保留以供時序重建。可在記憶條數閾值、檢索質量下降或定時任務時觸發。
架構升級路徑(官方 Practical Guidance):
- 原型:文件系統 + 帶時間戳的結構化 JSON,驗證行爲後再上基礎設施。
- 擴展:需要語義檢索與多租戶隔離時,遷到 Mem0 或帶元數據的向量庫。
- 複雜推理:需要關係遍歷、時間有效性或跨會話綜合時,引入 Zep/Graphiti 或 Cognee。
- 完全自控:需要把記憶操作作爲一等 Agent 動作時,考慮 Letta 或 Cognee。
與上下文集成時:即時加載(just-in-time),勿預灌全部記憶;檢索結果放在上下文開頭或結尾等注意力友好位置。檢索失敗時按順序降級:放寬過濾 → 檢查 valid_until → 衝突時優先較新 valid_from → 寫入失敗則排隊重試且不阻塞回復。
安裝與啓用¶
本 Skill 爲通用 SKILL.md 文本指令,倉庫內無單獨安裝腳本。常見加載方式(與社區索引 awesome-agent-skills 一致,按所用 Agent 擇一):
Claude Code——將 Skill 目錄或集合倉庫加入技能列表:
/skills add https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering
若平臺支持子路徑,可指向 skills/memory-systems 目錄;具體以 Claude Code 文檔爲準。
Vercel skills CLI——搜索、安裝與管理:
npx skills find memory-systems
npx skills add muratcankoylan/Agent-Skills-for-Context-Engineering
npx skills list
Claude.ai / 其他客戶端:可將 raw SKILL.md 地址粘貼到新對話,或由 Agent 在需要時讀取該 URL(社區說明爲「描述任務即可觸發」,無額外配置項)。
Cursor:將 Skill 內容放入項目或用戶級 Skills 配置後,在構建跨會話記憶、選型框架或設計整合策略時,在對話中明確要求遵循 memory-systems 指南。
啓用後無需改代碼;Agent 在匹配「When to Activate」場景時應加載全文,並可在需要實現細節時參考同目錄 references/implementation.md(向量庫、屬性圖、時序查詢與整合邏輯)。
典型用法¶
官方在 SKILL.md 中給出三類可對照實現的示例(以下爲原文結構,需自備對應 SDK 與環境)。
示例 1:Mem0 寫入與偏好檢索
from mem0 import Memory
m = Memory()
m.add("User prefers dark mode and Python 3.12", user_id="alice")
m.add("User switched to light mode", user_id="alice")
# Retrieves current preference (light mode), not outdated one
results = m.search("What theme does the user prefer?", user_id="alice")
示例 2:帶有效期的時間點查詢
# Track entity with validity periods
graph.create_temporal_relationship(
source_id=user_node,
rel_type="LIVES_AT",
target_id=address_node,
valid_from=datetime(2024, 1, 15),
valid_until=datetime(2024, 9, 1), # moved out
)
# Query: Where did user live on March 1, 2024?
results = graph.query_at_time(
{"type": "LIVES_AT", "source_label": "User"},
query_time=datetime(2024, 3, 1)
)
示例 3:Cognee 攝入與圖檢索
import cognee
from cognee.modules.search.types import SearchType
await cognee.add("./docs/")
await cognee.add("any data")
await cognee.cognify()
await cognee.memify()
results = await cognee.search(
query_text="Any query for your memory",
query_type=SearchType.GRAPH_COMPLETION,
)
設計會話時,可先讓 Agent 按 Skill 中的 Guidelines checklist 自檢:從文件系統起步、爲可變事實記錄時間有效性、混合檢索、定期整合、檢索失敗有回退、關注隱私與保留策略、用 LoCoMo 或 LongMemEval 做變更前後對比、監控體量與延遲。
適用場景與注意¶
適合誰
- 正在設計或重構 Agent 持久化層的後端與平臺工程師
- 需要在 Mem0 / Graphiti / Cognee 等之間做技術選型的團隊
- 要解決跨會話實體一致、事實隨時間變化、多跳推理檢索的產品場景
限制與常見坑(摘自官方 Gotchas)
- 把所有記憶塞進 prompt:成本高且損害注意力;應 JIT 檢索並過濾。
- 忽略時間有效性:過期事實會污染上下文。
- 過早過度工程:部分基準上簡單文件記憶仍可能表現不差;應在實測失敗後再加深結構。
- 無整合策略:記憶無限增長會拖垮檢索。
- 讀寫使用不同 embedding 模型:向量空間不兼容,需固定模型或在變更時全量重嵌。
- 圖 schema 過 rigid:領域演化時易碎;傾向通用關係類型與靈活屬性。
- 相關但語境錯誤的記憶(如 Python 語言 vs 蟒蛇):應在條目中帶會話/領域元數據並在檢索時過濾。
與同集合技能的銜接:filesystem-context 管草稿與日誌;context-compression 管摘要交接;context-optimization 管單次軌跡內的加載與預算;multi-agent-patterns 管多 Agent 共享記憶;evaluation 管記憶質量與基準選擇。
結尾¶
跨會話記憶往往是 Agent 產品與「單次聊天機器人」的分水嶺之一。memory-systems 不提供替代框架的代碼,而是把層級、檢索形態、框架對照、整合與評測約束寫成可複用的設計清單,並明確與其他 Context Engineering Skill 的分工。落地時建議從最淺層驗證檢索質量,再按官方 escalation 路徑加深;基準數字僅作 dated evidence,產品宣稱前需重新覈對。
官方 Skill 目錄:
https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering/tree/main/skills/memory-systems
完整指令原文(raw):
https://raw.githubusercontent.com/muratcankoylan/Agent-Skills-for-Context-Engineering/main/skills/memory-systems/SKILL.md