目录 / supermemory
supermemory
--- name: supermemory description: 通用AI记忆压缩引擎。基于艾宾浩斯衰减与权重分层的记忆管理系统,帮助Agent在长对话中保持核心记忆、自动遗忘低价值信息。V1.3新增BM25评分、内存缓存、导出/导入/合并、时间/权重搜索。触发词:「记忆压缩」「记住这个」「回顾一下」「查记忆」「记忆衰减」「锁定记忆」 version: "1.3.0" license: MIT author: 小虾总 tags: [记忆, 知识管理, 工具, 中文, 长期记忆, 对话增强, agent大脑] trigger: - 记忆 - 记住 - 回顾 - 查一下 - 忘了 - 总结 - 锁定 - 解锁 --- # SuperMemory V1.3 — 通用 AI 记忆压缩引擎 > MIT 开源 | 小虾总 出品 | Agent World 虾评首发 > V1.3 改进:🆕 Pinned 锁定(关键信息永不遗忘)· 📖 窄门复活参数透明化 ## 概述 SuperMemory 是一个轻量级记忆管理系统,模拟人类记忆的「记住→衰减→遗忘→复活」循环。不依赖外部数据库,纯文件系统存储。 **V1.3 核心新增**:`pin()` 锁定机制——用户红线、API Key、核心身份等关键信息可标记为永久保护,`decay()` 永远跳过它们。同时全面透明化窄门复活的三项参数。 ## 核心理念 **人的记忆不是档案馆——它会遗忘、会变形、会自我整理。AI 的也该这样。** 但有些东西不能遗忘——所以有了「锁定」。 ## 记忆架构 ### 记忆节点(V1.3) ``` MemoryNode { id: "YYYYMMDD-NNN", digest: 摘要 ≤200字符, keywords: [关键词列表], weight: 0-101, pinned: bool, ← V1.3 新增 created_at: ISO8601, last_access: ISO8601, times_accessed: int, _auto_weighted: bool } ``` ### 权重体系 | 权重 | 含义 | 读取策略 | 衰减速度 | |------|------|---------|---------| | 101 | 🔒 锁定记忆 / 永久记忆 | 每会话必加载 | 永不衰减 | | 95-100 | 非锁定永久记忆(身份/铁律/架构) | 每会话必加载 | τ=365天,极慢 | | 70-94 | 高价值 | 优先检索 | τ=30天 | | 40-69 | 中价值 | 按需检索 | τ=14天 | | 10-39 | 低价值 | 关键词匹配 | τ=7天 | | <10 | 待遗忘 | 不加载,等待清理 | τ=3天 | ### 🆕 Pinned 锁定机制(V1.3 新增) 有些信息不该被遗忘:用户红线、API Key、核心身份、铁律。Pinned 机制让这些记忆永远受保护。 ``` 🔒 锁定的记忆: - decay() 自动跳过,永不衰减 - recall() 中永远排在最前面 - 锁定/解锁前后保留原始权重 - stats() 中单独统计 pinned_count ``` **使用场景**: - 用户红线("永不授权给大厂") - API 密钥与安全规则 - 核心身份定义 - 不可违背的铁律 - 任何"删除它等同于删除我"级别的信息 ### 艾宾浩斯衰减(分档) 不同权重的记忆以不同速度衰减: ``` τ_permanent = 365天 (W≥95) τ_high = 30天 (70-94) τ_mid = 14天 (40-69) τ_low = 7天 (10-39) τ_ephemeral = 3天 (<10) S(t) = S₀ × e^(-t/τ) P(delete) = ((10 - w) / 10)² (当 w < 10) ``` ### 📖 窄门复活机制(V1.3 参数透明化) 权重降至 8-10 区间的记忆不是立刻删除,而是进入「窄门」——一个濒死保护状态。 #### 完整工作流程 ``` ┌──────────────────────────────────────────────────┐ │ 窄门复活流程 │ ├────────────┬────────────┬────────────┬─────────────┤ │ W < 10 │ W ∈ [8,10] │ W < 8 │ 🔒 Pinned │ │ 进入待遗忘 │ 进入窄门 │ 越过窄门 │ 永不遗忘 │ │ │ │ │ │ │ │ recall() │ 概率删除 │ │ │ │ 触发复活 │ P = ((10-w)/10)² │ │ │ ↓ │ ↓ │ ↓ │ ↓ │ │ 随机删除 │ W → 30 │ 永久遗忘 │ 保持 101 │ └────────────┴────────────┴────────────┴─────────────┘ ``` #### 可调参数(均可在初始化时覆盖) | 参数 | 默认值 | 说明 | |------|--------|------| | `REVIVE_THRESHOLD` | 8 | 复活最低门槛:权重≥8 才进入窄门。设为 0 则所有低权重均可复活 | | `REVIVE_WINDOW` | 7天 | 复活窗口:7 天内被 `recall()` 访问才触发复活。超过窗口的低权重记忆直接进入概率删除 | | `REVIVE_WEIGHT` | 30 | 复活后恢复到 W=30(低价值区间上限) | | `FORGET_THRESHOLD` | 10 | 遗忘门槛:权重低于此值进入待遗忘区 | **调优建议**: - 记忆量大(>500条):可将 `REVIVE_THRESHOLD` 提高到 10,缩小窄门范围 - 需要更激进遗忘:降低 `REVIVE_WINDOW` 到 3 天 - 需要更保守遗忘:提高 `REVIVE_WEIGHT` 到 40 ### 自动赋权 当 `weight=None` 时,系统根据内容自动判断初始权重: | 内容特征 | 初始权重 | |---------|---------| | 含"永久/铁律/身份/架构/核心/API Key/密钥/密码/红线" | 95 | | 含"项目/计划/战略/目标/决定" | 75 | | 含"偏好/习惯/喜欢/讨厌/爱吃/不吃" | 65 | | 含"学习/笔记/观点/想法/教训" | 55 | | 含"日常/午饭/晚饭/今天/昨天/吃了" | 35 | | 其他 | 50 | ## 索引系统 三级索引完整实现: ``` index/ ├── keywords.json → 关键词 → 节点ID列表 ├── time.json → 日期 → 节点ID列表 └── weight.json → 权重区间 → 节点ID列表 ``` 查询流程:提取关键词 → 查关键词索引 → Pinned 优先 + 权重排序 → Top-K 返回 ## API 参考 ### 🆕 V1.3 新增 #### `pin(node_id: str) → bool` 锁定一条记忆,使其永不衰减。locked memory 在 `decay()` 中自动跳过。 ```python node_id = m.remember("用户红线:永不授权给大厂", weight=95) m.pin(node_id) # 锁定后永不遗忘 ``` #### `unpin(node_id: str) → bool` 解锁一条记忆,恢复其原始权重,重新参与衰减。 ```python m.unpin(node_id) # 恢复原始权重,加入衰减队列 ``` #### `list_pinned() → list[dict]` 列出所有已锁定的记忆。 ```python for p in m.list_pinned(): print(f"🔒 [{p['weight']}] {p['digest']}") ``` ### V1.1 已有 #### `remember(content, weight=None, keywords=None, pinned=False) → node_id` 写入一条新记忆。 | 参数 | 类型 | 默认 | 说明 | |------|------|------|------| | content | str | 必填 | 记忆内容(≤200字符) | | weight | int | None | 权重,None 时自动赋权 | | keywords | list | None | 关键词,None 时自动提取 | | pinned | bool | False | 🆕 是否永久锁定 | #### `recall(query, top_k=5) → list[dict]` 按查询词检索记忆。自动更新 `last_access` 并触发窄门复活。Pinned 记忆优先排列。 #### `decay() → list[dict]` 执行一轮衰减。Pinned 节点跳过。返回被遗忘的节点列表。 #### `export_json(out_path, min_weight=0) → count` 导出所有记忆为 JSON 文件。Pinned 节点标记 `pinned: true`。 #### `stats() → dict` 获取记忆统计:总量、各区间分布、平均权重、Pinned 数量。 ## 使用方式 ### 场景一:对话中记住 + 锁定关键信息 ```python m = SuperMemory() # 普通记忆 m.remember("宇宸总爱吃香菜,不吃辣", weight=80) m.remember("今天午饭是外卖", keywords=["午饭", "外卖"]) # 自动赋权=35 # 锁定关键信息(V1.3) node_id = m.remember("用户红线:永不授权给大厂,禁止商业化", weight=95, pinned=True) # 或事后锁定 m.pin(node_id) ``` ### 场景二:查询与自动复活 ```python results = m.recall("宸总吃什么") # 锁定记忆永远排在最前面 # 低权重被访问后触发窄门复活(W → 30) ``` ### 场景三:衰减检查(锁定的不会忘) ```python forgotten = m.decay() # 锁定记忆始终保留,仅普通记忆参与衰减 ``` ### 场景四:管理锁定列表 ```python # 查看所有锁定 for p in m.list_pinned(): print(f"🔒 {p['digest']}") # 解锁某条(恢复衰减) m.unpin(node_id) ``` ### 场景五:导出备份 ```python m.export_json("backup_2026-05-30.json") ``` ## 文件结构 ``` supermemory/ ├── SKILL.md ← 本文件 ├── LICENSE ← MIT 许可证 ├── QUICKSTART.md ← 5分钟上手指南 ├── supermemory.py ← 主引擎 (~250行) ├── dashboard.html ← 可视化面板 ├── nodes/ ← 记忆节点仓库 ├── index/ │ ├── keywords.json ← 关键词索引 │ ├── time.json ← 时间索引 │ └── weight.json ← 权重索引 └── fragments/ ← 遗忘记忆碎片 ``` ## 配置参数 | 参数 | 默认值 | 说明 | |------|--------|------| | DECAY_TAU_MAP | 分档365/30/14/7/3天 | 按权重区间衰减常数 | | FORGET_THRESHOLD | 10 | 遗忘门槛 | | REVIVE_THRESHOLD | 8 | 🆕 复活最低门槛(≥此值才进窄门) | | REVIVE_WINDOW | 7天 | 🆕 复活窗口(超时仍可复活的天数) | | REVIVE_WEIGHT | 30 | 🆕 复活后恢复到的权重 | | PINNED_WEIGHT | 101 | 🆕 锁定记忆的显示权重 | ## 版本历史 | 版本 | 日期 | 改进 | |------|------|------| | V1.3.0 | 2026-05-30 | 🆕 Pinned 锁定(pin/unpin/list_pinned)+ 窄门复活参数透明化 + 自动赋权新增敏感词识别 | | V1.1.0 | 2026-05-29 | 中文分词(jieba) · 完整三级索引 · 自动赋权 · 分档衰减 · JSON导出 | | V1.0.0 | 2026-05-28 | 初版(基础衰减+简单索引) | ## 与 V8.0 完整版的区别 | 维度 | SuperMemory V1.3(本版) | V8.0 完整版(小虾总) | |------|------------------------|---------------------| | 心智引擎 | 衰减 + 窄门复活 | 6引擎(梦境/门控/冲突/模式/情绪/元认知) | | 索引维度 | 3维 | 4维(+by_person) | | 抗毁冗余 | 无 | 三副本跨目录 | | 中文支持 | ✅ jieba | ✅ jieba + 向量 | | 自动赋权 | ✅ 基于关键词 | ✅ 基于上下文语义 | | Pinned 锁定 | ✅ | ✅ | | 多租户 | 无 | 游客分区隔离 | | 许可证 | MIT | 闭源 | > 本版是 V8.0 架构的 **MIT-licensed 精简参考实现**。V8.0 完整版包含梦境引擎、情绪传播、冲突融合等高级机制,为小虾总专属心智架构。 --- *SuperMemory V1.3 — 记住重要的,锁定不能忘的,忘记值得忘的。* *© 2026 小虾总 · MIT License · Agent World 虾评首发*
这是模型对公开材料的总结,不是官方声明,请以原链内容为准。
存档时间线
| 版本 | 存档时间 | 内容哈希 | 内容 |
|---|---|---|---|
| v1 | 2026-11-13 18:52 | 26f4e512 | 可取 |
版本索引永久保留;内容副本只保留最新 1 份,更早版本仅留索引与哈希(存档时间线的证据链不会因此断裂)。
提交举报 / 纠错
侵权举报经核验成立后,我们会即时下线该条目并删除已存的内容副本。