ultra-memory 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/SKILL.md +384 -383
  2. package/package.json +1 -1
package/SKILL.md CHANGED
@@ -1,383 +1,384 @@
1
- ---
2
- name: ultra-memory
3
- description: >
4
- 给 AI Agent 提供超长会话记忆能力,5层记忆架构:操作日志 → 摘要 → 语义 → 实体索引 → 向量语义,做到不遗忘、可检索、跨会话持久化。零外部依赖,支持所有 LLM 平台(Claude Code、OpenClaw、GPT-4、Gemini、Qwen等)。
5
- 【中文触发词】当用户提到"记住我说的""别忘了""上次我们做了什么""帮我回忆""会话记录""记忆""不要忘记""记录一下""跨会话""继续昨天""还有印象吗"时,必须触发。
6
- 【英文触发词】当用户说 "remember this"、"don't forget"、"what did we do"、"recall"、"session memory"、"keep track"、"log this"、"what was that"、"remind me"、"memory"、"context lost"、"continue from yesterday" 时,必须触发。
7
- 【隐式触发场景】以下情况即使用户未明确提及记忆,也应主动触发:(1) 用户说"继续昨天的任务"/"接着上次做";(2) 对话操作数超过30条,context 使用率逼近阈值;(3) 任务被描述为跨天/跨周期的长期工程;(4) 用户提到"我们上次讨论过"但当前 context 中找不到相关内容。
8
- 【不触发场景】以下情况不应触发,避免过度干扰:(1) 单次简短问答("帮我写个正则");(2) 用户已在当前 context 内能找到所需信息;(3) 用户明确说"不用记录""just this once";(4) 纯代码补全、文件格式转换等无状态任务。
9
- 本 skill 自动初始化5层记忆架构并管理整个记忆生命周期。
10
- 适用于:长编码任务、写长篇小说、跨天继续工作、AI数据标注流水线、项目管理型对话等需要持久记忆的场景。
11
- ---
12
-
13
- # Ultra Memory — 超长会话记忆 Skill
14
-
15
- ## 设计目标
16
-
17
- 解决目前市面上记忆方案的核心缺陷:
18
- - **claude-mem**:只记录压缩摘要,丢失操作细节
19
- - **memory-lancedb-pro**:跨会话检索好,但会话内实时追踪弱
20
- - **全量上下文法**:精度高但延迟 10s+,token 爆炸
21
- - **本 Skill 的差异化**:三层架构 + 操作日志层,既记得住,又检索得快
22
-
23
- ---
24
-
25
- ## 架构总览:三层记忆模型
26
-
27
- ```
28
- ┌─────────────────────────────────────────────────┐
29
- │ Layer 3: 跨会话语义层 (Semantic Store) │
30
- 向量检索 · 用户偏好 · 项目知识 · 持久化 KV
31
- ├─────────────────────────────────────────────────┤
32
- │ Layer 2: 会话摘要层 (Session Summary) │
33
- 阶段性压缩 · 里程碑快照 · 决策记录
34
- ├─────────────────────────────────────────────────┤
35
- │ Layer 1: 操作日志层 (Operation Log) ← 核心差异化│
36
- 每步工具调用 · 文件变更 · 命令执行 · 推理链 │
37
- └─────────────────────────────────────────────────┘
38
- ```
39
-
40
- 每层的文件存储位置:
41
- - Layer 1: `~/.ultra-memory/sessions/<session_id>/ops.jsonl`
42
- - Layer 2: `~/.ultra-memory/sessions/<session_id>/summary.md`
43
- - Layer 3: `~/.ultra-memory/semantic/` (KV + embeddings index)
44
-
45
- ---
46
-
47
- ## 初始化流程
48
-
49
- 在会话开始或用户首次触发时,执行:
50
-
51
- ```bash
52
- python3 ~/.openclaw/workspace/skills/ultra-memory/scripts/init.py
53
- # 或(Claude Code 环境)
54
- python3 <skill_dir>/scripts/init.py
55
- ```
56
-
57
- 这会:
58
- 1. 创建本次会话的目录结构
59
- 2. 生成唯一 `session_id`(时间戳 + hash)
60
- 3. Layer 3 加载相关历史上下文到当前 context
61
- 4. 输出 `MEMORY_READY` 确认信号
62
-
63
- ---
64
-
65
- ## Layer 1:操作日志层(最重要)
66
-
67
- ### 记录时机
68
-
69
- **每次**以下操作发生后,立即追加写入 `ops.jsonl`:
70
-
71
- | 操作类型 | 触发场景 | 记录内容 |
72
- |---------|---------|---------|
73
- | `tool_call` | 调用任何 MCP 工具 | 工具名、入参、出参摘要、耗时 |
74
- | `file_write` | 创建/修改文件 | 文件路径、变更类型、内容摘要 |
75
- | `file_read` | 读取文件 | 文件路径、读取目的 |
76
- | `bash_exec` | 执行 shell 命令 | 命令内容、stdout 前200字符、exit code |
77
- | `reasoning` | 重要推理节点 | 推理摘要(50字内)、置信度、备选方案 |
78
- | `user_instruction` | 用户给出新指令 | 指令原文、解析意图 |
79
- | `decision` | 做出重要决策 | 决策内容、依据、放弃的方案 |
80
- | `error` | 发生错误或回退 | 错误信息、处理方式 |
81
-
82
- ### 日志格式(ops.jsonl 每行一条)
83
-
84
- ```json
85
- {
86
- "ts": "2026-04-02T14:23:01Z",
87
- "seq": 42,
88
- "type": "tool_call",
89
- "tool": "bash_tool",
90
- "summary": "执行 pip install pandas,安装成功",
91
- "detail": {
92
- "cmd": "pip install pandas --break-system-packages",
93
- "exit_code": 0,
94
- "stdout_preview": "Successfully installed pandas-2.2.0"
95
- },
96
- "tags": ["setup", "python", "dependency"]
97
- }
98
- ```
99
-
100
- ### 写入方式
101
-
102
- 使用追加写入(append-only),永远不覆盖,保证操作历史完整性。
103
-
104
- ```bash
105
- # Claude 在每次操作后调用
106
- python3 ~/.openclaw/workspace/skills/ultra-memory/scripts/log_op.py \
107
- --session <session_id> \
108
- --type tool_call \
109
- --summary "执行了bash命令" \
110
- --detail '{"cmd": "...", "exit_code": 0}'
111
- ```
112
-
113
- ---
114
-
115
- ## Layer 2:会话摘要层
116
-
117
- ### 压缩时机
118
-
119
- 满足以下**任一条件**时触发摘要压缩:
120
-
121
- 1. 操作日志达到 **50 条**
122
- 2. 距上次压缩超过 **30 分钟**
123
- 3. 用户明确说"总结一下目前进展"
124
- 4. 当前 context 占用超过 **60%**
125
-
126
- ### 摘要内容结构(summary.md)
127
-
128
- ```markdown
129
- # 会话摘要 — <session_id>
130
- 更新时间: 2026-04-02 14:30
131
-
132
- ## 目标
133
- 用户希望完成: <当前任务总目标>
134
-
135
- ## 已完成里程碑
136
- - [✅ 14:10] 初始化项目结构,创建了 src/ 和 tests/ 目录
137
- - [✅ 14:18] 安装依赖 pandas/numpy,配置 venv
138
- - [✅ 14:25] 实现数据清洗函数 clean_df(),通过单元测试
139
-
140
- ## 当前进行中
141
- - [ ] 实现评分函数 score_quality(),已完成60%
142
- - [ ] 待处理: 边界情况处理(空值、超长文本)
143
-
144
- ## 关键决策记录
145
- - 选用 LanceDB 而非 Chroma:原因是本地部署更稳定
146
- - 评分维度采用 ZL/GN 双维度:对齐用户现有工作流程
147
-
148
- ## 用户偏好(本次会话观察到)
149
- - 倾向简洁代码,不喜欢过度注释
150
- - 喜欢在实现前先确认方案
151
-
152
- ## 错误与回退
153
- - 14:22 bash 命令权限不足,已加 sudo 重试成功
154
-
155
- ## 操作日志范围
156
- ops.jsonl 第 1-50 条(已压缩)
157
- ```
158
-
159
- ### 压缩后处理
160
-
161
- 压缩完成后:
162
- - 将 summary.md 最新版本置入 context 开头
163
- - 将 ops.jsonl 中已压缩的条目标记 `compressed: true`(不删除)
164
- - Layer 3 异步写入本次会话新增的语义知识
165
-
166
- ---
167
-
168
- ## Layer 3:跨会话语义层
169
-
170
- ### 存储内容
171
-
172
- ```
173
- ~/.ultra-memory/semantic/
174
- ├── user_profile.json # 用户偏好、工作方式、常用技术栈
175
- ├── project_registry.json # 已知项目列表及核心信息
176
- ├── knowledge_base.jsonl # 语义知识条目(可向量化检索)
177
- └── session_index.json # 历史会话索引,按主题分类
178
- ```
179
-
180
- ### user_profile.json 格式
181
-
182
- ```json
183
- {
184
- "last_updated": "2026-04-02",
185
- "tech_stack": ["Python", "Vue3", "TypeScript"],
186
- "work_style": {
187
- "prefers_concise_code": true,
188
- "confirm_before_implement": true,
189
- "scoring_framework": "ZL/GN"
190
- },
191
- "projects": ["ai-data-qa", "FusionUI", "ultra-memory"],
192
- "language": "zh-CN",
193
- "observed_patterns": [
194
- "倾向在实现前讨论方案",
195
- "喜欢类比解释复杂概念"
196
- ]
197
- }
198
- ```
199
-
200
- ### 会话开始时的上下文注入
201
-
202
- ```markdown
203
- <!-- ULTRA-MEMORY CONTEXT INJECTION -->
204
- **已知背景(来自记忆层):**
205
- - 用户技术栈: Python / Vue3 / TypeScript
206
- - 当前活跃项目: ai-data-qa, FusionUI
207
- - 上次会话(2026-04-01): 完成了数据清洗模块,遗留问题是边界值处理
208
- - 用户偏好: 简洁代码风格,倾向先确认方案再实现
209
- <!-- END INJECTION -->
210
- ```
211
-
212
- ---
213
-
214
- ## 检索接口
215
-
216
- ### 自然语言查询
217
-
218
- 当用户问"之前我们做了什么""上次那个函数叫什么名字"时,按以下优先级检索:
219
-
220
- 1. **当前会话 ops.jsonl**(精确匹配,最近50条)
221
- 2. **当前会话 summary.md**(摘要快速定位)
222
- 3. **Layer 3 semantic search**(跨会话模糊检索)
223
-
224
- ```bash
225
- python3 ~/.openclaw/workspace/skills/ultra-memory/scripts/recall.py \
226
- --query "数据清洗函数" \
227
- --session <session_id> \
228
- --top-k 5
229
- ```
230
-
231
- ### 检索结果格式
232
-
233
- ```
234
- [RECALL] 找到 3 条相关记录:
235
-
236
- [ops #23 · 14:18] 创建了 clean_df() 函数,位于 src/cleaner.py,
237
- 实现了空值填充和文本截断逻辑
238
-
239
- [summary · 里程碑] ✅ 数据清洗模块完成,通过 3 个单元测试
240
-
241
- [跨会话 · 2026-03-28] 上上次会话中也有类似函数 preprocess_text(),
242
- 当时放在 utils/ 目录
243
- ```
244
-
245
- ---
246
-
247
- ## 防遗忘机制
248
-
249
- ### Context 压力检测
250
-
251
- 每隔 10 次操作检查一次 context 使用率:
252
-
253
- ```
254
- context 使用率 < 40% → 无操作
255
- context 使用率 40-60% 提示用户,询问是否压缩
256
- context 使用率 > 60% 自动触发 Layer 2 压缩
257
- context 使用率 > 80% → 紧急压缩 + 警告,保留最近 20 条 ops
258
- ```
259
-
260
- ### 会话恢复
261
-
262
- 当检测到用户重启会话(新 context)时,自动:
263
-
264
- 1. 读取上次 `summary.md` + 最近 10 条 `ops.jsonl`
265
- 2. 生成恢复提示注入 context 开头
266
- 3. 告知用户:"我记得上次我们在做 X,当时的状态是..."
267
-
268
- ```bash
269
- python3 ~/.openclaw/workspace/skills/ultra-memory/scripts/restore.py \
270
- --project <project_name>
271
- ```
272
-
273
- ---
274
-
275
- ## 与现有方案的对比
276
-
277
- | 能力 | claude-mem | lancedb-pro | **ultra-memory** |
278
- |-----|-----------|-------------|-----------------|
279
- | 操作级日志 | ❌ | ❌ | ✅ 每步追踪 |
280
- | 摘要压缩 | | ⚠️ 基础 | ✅ 结构化 |
281
- | 跨会话持久化 | ⚠️ 依赖文件 | 向量DB | ✅ KV + 索引 |
282
- | 会话恢复 | | ⚠️ 手动 | ✅ 自动注入 |
283
- | 检索接口 | ❌ | 9个工具 | ✅ 统一recall |
284
- | Context 压力管理 | ❌ | | ✅ 自动压缩 |
285
- | 用户画像积累 | ❌ | ❌ | ✅ profile更新 |
286
- | 轻量部署(无向量DB)| | ❌ 需LanceDB | ✅ 可降级 |
287
-
288
- ---
289
-
290
- ## 部署模式
291
-
292
- ### 模式A:轻量模式(纯文件,无依赖)
293
-
294
- 适合个人使用,零配置:
295
- - Layer 1: JSONL 文件
296
- - Layer 2: Markdown 文件
297
- - Layer 3: JSON 文件 + 简单关键词检索
298
-
299
- ```bash
300
- # 安装(OpenClaw)
301
- cp -r ultra-memory ~/.openclaw/workspace/skills/
302
- ```
303
-
304
- ### 模式B:增强模式(LanceDB 向量检索)
305
-
306
- 适合重度使用 / 商业场景:
307
-
308
- ```bash
309
- pip install lancedb sentence-transformers --break-system-packages
310
- # 配置后 Layer 3 自动升级为向量检索
311
- python3 scripts/setup_vector.py
312
- ```
313
-
314
- ### 模式C:MCP 服务模式
315
-
316
- 将 ultra-memory 封装为 MCP Server,供 Claude Code / OpenClaw 通过标准协议调用:
317
-
318
- ```bash
319
- node scripts/mcp-server.js --port 3100
320
- ```
321
-
322
- 提供以下 MCP 工具:
323
- - `memory_log` — 记录操作
324
- - `memory_recall` — 检索记忆
325
- - `memory_summarize` — 触发压缩
326
- - `memory_restore` — 会话恢复
327
- - `memory_profile` — 读写用户画像
328
-
329
- ---
330
-
331
- ## 使用示例
332
-
333
- ### 场景1:长编码任务不丢失上下文
334
-
335
- ```
336
- 用户: 帮我开发一个 Python 数据清洗工具
337
- Claude: [ultra-memory 初始化] 会话 sess_20260402_abc 已创建,开始记录...
338
- 我注意到你之前做过 ai-data-qa 项目,可以复用那里的评分逻辑...
339
- [每次操作后自动写入 ops.jsonl]
340
- ...(50条操作后)...
341
- Claude: [自动摘要] 已完成里程碑: 数据加载、清洗函数、单元测试。
342
- 当前进行中: 导出模块。context 已优化,继续...
343
- ```
344
-
345
- ### 场景2:跨天继续任务
346
-
347
- ```
348
- 用户(第二天): 继续昨天的工作
349
- Claude: [自动恢复] 我记得昨天(2026-04-01)我们在开发数据清洗工具:
350
- 已完成: 加载模块、clean_df()、基础测试
351
- 🔄 进行中: 导出模块,写到一半
352
- 下一步建议: 继续 export.py 的 to_csv() 方法
353
- 要从这里继续吗?
354
- ```
355
-
356
- ### 场景3:精确回忆操作细节
357
-
358
- ```
359
- 用户: 我们之前那个处理空值的逻辑是怎么写的?
360
- Claude: [检索 ops #23] 在 src/cleaner.py 的 clean_df() 中,
361
- 空值处理是:字符串列填充 "",数值列填充 0,
362
- 代码在 line 45-52。要我展示吗?
363
- ```
364
-
365
- ---
366
-
367
- ## 进阶配置
368
-
369
- 详见 `references/advanced-config.md`(原 `advanced-config.md`),包含:
370
- - 自定义记录过滤规则(排除敏感内容)
371
- - 团队共享记忆配置(多人协作)
372
- - 记忆衰减策略(老旧记忆降权)
373
- - 与 n8n / LangGraph 集成方案
374
- - 商业部署安全注意事项
375
-
376
- ---
377
-
378
- ## 注意事项
379
-
380
- 1. **隐私**:ops.jsonl 可能包含代码和命令,注意不要记录密码/API Key。`log_op.py` 内置了敏感词过滤。
381
- 2. **存储**:轻量模式下每个会话约 50-200KB,建议定期清理 30 天前的会话。
382
- 3. **性能**:写入操作为异步追加,不阻塞主流程。
383
- 4. **降级**:如果脚本不可用,Claude 应退化为在 CLAUDE.md 中手动维护摘要。
1
+ ---
2
+ name: ultra-memory
3
+ description: 给 AI Agent 提供超长会话记忆能力,5层记忆架构(操作日志/摘要/语义/实体索引/向量语义),零外部依赖,支持 Claude Code、OpenClaw、GPT-4、Gemini、Qwen 等所有 LLM 平台。自动初始化记忆架构,管理全生命周期。适用于长编码任务、跨天继续工作、精确回忆操作细节等场景。
4
+ ---
5
+
6
+ # Ultra Memory 超长会话记忆 Skill
7
+
8
+ ## 触发词
9
+
10
+ **必须触发:** 用户提到"记住"、"别忘了"、"上次我们做了什么"、"回忆"、"记忆"、"不要忘记"、"记录"、"跨会话"、"继续昨天"、"don't forget"、"remember this"、"what did we do"、"recall"、"context lost" 等。
11
+
12
+ **隐式触发:** (1) 用户说"继续昨天的任务"/"接着上次做";(2) 对话操作数超过30条;(3) 任务被描述为跨天/跨周期的长期工程;(4) 用户提到"我们上次讨论过"但 context 中找不到。
13
+
14
+ **不触发:** (1) 单次简短问答("帮我写个正则");(2) 用户已在 context 内能找到信息;(3) 用户明确说"不用记录";(4) 纯代码补全、文件格式转换等无状态任务。
15
+
16
+ ## 设计目标
17
+
18
+ 解决目前市面上记忆方案的核心缺陷:
19
+ - **claude-mem**:只记录压缩摘要,丢失操作细节
20
+ - **memory-lancedb-pro**:跨会话检索好,但会话内实时追踪弱
21
+ - **全量上下文法**:精度高但延迟 10s+,token 爆炸
22
+ - **本 Skill 的差异化**:三层架构 + 操作日志层,既记得住,又检索得快
23
+
24
+ ---
25
+
26
+ ## 架构总览:三层记忆模型
27
+
28
+ ```
29
+ ┌─────────────────────────────────────────────────┐
30
+ Layer 3: 跨会话语义层 (Semantic Store)
31
+ │ 向量检索 · 用户偏好 · 项目知识 · 持久化 KV │
32
+ ├─────────────────────────────────────────────────┤
33
+ Layer 2: 会话摘要层 (Session Summary)
34
+ │ 阶段性压缩 · 里程碑快照 · 决策记录 │
35
+ ├─────────────────────────────────────────────────┤
36
+ Layer 1: 操作日志层 (Operation Log) ← 核心差异化│
37
+ │ 每步工具调用 · 文件变更 · 命令执行 · 推理链 │
38
+ └─────────────────────────────────────────────────┘
39
+ ```
40
+
41
+ 每层的文件存储位置:
42
+ - Layer 1: `~/.ultra-memory/sessions/<session_id>/ops.jsonl`
43
+ - Layer 2: `~/.ultra-memory/sessions/<session_id>/summary.md`
44
+ - Layer 3: `~/.ultra-memory/semantic/` (KV + embeddings index)
45
+
46
+ ---
47
+
48
+ ## 初始化流程
49
+
50
+ 在会话开始或用户首次触发时,执行:
51
+
52
+ ```bash
53
+ python3 ~/.openclaw/workspace/skills/ultra-memory/scripts/init.py
54
+ # 或(Claude Code 环境)
55
+ python3 <skill_dir>/scripts/init.py
56
+ ```
57
+
58
+ 这会:
59
+ 1. 创建本次会话的目录结构
60
+ 2. 生成唯一 `session_id`(时间戳 + hash)
61
+ 3. Layer 3 加载相关历史上下文到当前 context
62
+ 4. 输出 `MEMORY_READY` 确认信号
63
+
64
+ ---
65
+
66
+ ## Layer 1:操作日志层(最重要)
67
+
68
+ ### 记录时机
69
+
70
+ **每次**以下操作发生后,立即追加写入 `ops.jsonl`:
71
+
72
+ | 操作类型 | 触发场景 | 记录内容 |
73
+ |---------|---------|---------|
74
+ | `tool_call` | 调用任何 MCP 工具 | 工具名、入参、出参摘要、耗时 |
75
+ | `file_write` | 创建/修改文件 | 文件路径、变更类型、内容摘要 |
76
+ | `file_read` | 读取文件 | 文件路径、读取目的 |
77
+ | `bash_exec` | 执行 shell 命令 | 命令内容、stdout 前200字符、exit code |
78
+ | `reasoning` | 重要推理节点 | 推理摘要(50字内)、置信度、备选方案 |
79
+ | `user_instruction` | 用户给出新指令 | 指令原文、解析意图 |
80
+ | `decision` | 做出重要决策 | 决策内容、依据、放弃的方案 |
81
+ | `error` | 发生错误或回退 | 错误信息、处理方式 |
82
+
83
+ ### 日志格式(ops.jsonl 每行一条)
84
+
85
+ ```json
86
+ {
87
+ "ts": "2026-04-02T14:23:01Z",
88
+ "seq": 42,
89
+ "type": "tool_call",
90
+ "tool": "bash_tool",
91
+ "summary": "执行 pip install pandas,安装成功",
92
+ "detail": {
93
+ "cmd": "pip install pandas --break-system-packages",
94
+ "exit_code": 0,
95
+ "stdout_preview": "Successfully installed pandas-2.2.0"
96
+ },
97
+ "tags": ["setup", "python", "dependency"]
98
+ }
99
+ ```
100
+
101
+ ### 写入方式
102
+
103
+ 使用追加写入(append-only),永远不覆盖,保证操作历史完整性。
104
+
105
+ ```bash
106
+ # Claude 在每次操作后调用
107
+ python3 ~/.openclaw/workspace/skills/ultra-memory/scripts/log_op.py \
108
+ --session <session_id> \
109
+ --type tool_call \
110
+ --summary "执行了bash命令" \
111
+ --detail '{"cmd": "...", "exit_code": 0}'
112
+ ```
113
+
114
+ ---
115
+
116
+ ## Layer 2:会话摘要层
117
+
118
+ ### 压缩时机
119
+
120
+ 满足以下**任一条件**时触发摘要压缩:
121
+
122
+ 1. 操作日志达到 **50 条**
123
+ 2. 距上次压缩超过 **30 分钟**
124
+ 3. 用户明确说"总结一下目前进展"
125
+ 4. 当前 context 占用超过 **60%**
126
+
127
+ ### 摘要内容结构(summary.md)
128
+
129
+ ```markdown
130
+ # 会话摘要 — <session_id>
131
+ 更新时间: 2026-04-02 14:30
132
+
133
+ ## 目标
134
+ 用户希望完成: <当前任务总目标>
135
+
136
+ ## 已完成里程碑
137
+ - [✅ 14:10] 初始化项目结构,创建了 src/ 和 tests/ 目录
138
+ - [✅ 14:18] 安装依赖 pandas/numpy,配置 venv
139
+ - [✅ 14:25] 实现数据清洗函数 clean_df(),通过单元测试
140
+
141
+ ## 当前进行中
142
+ - [ ] 实现评分函数 score_quality(),已完成60%
143
+ - [ ] 待处理: 边界情况处理(空值、超长文本)
144
+
145
+ ## 关键决策记录
146
+ - 选用 LanceDB 而非 Chroma:原因是本地部署更稳定
147
+ - 评分维度采用 ZL/GN 双维度:对齐用户现有工作流程
148
+
149
+ ## 用户偏好(本次会话观察到)
150
+ - 倾向简洁代码,不喜欢过度注释
151
+ - 喜欢在实现前先确认方案
152
+
153
+ ## 错误与回退
154
+ - 14:22 bash 命令权限不足,已加 sudo 重试成功
155
+
156
+ ## 操作日志范围
157
+ ops.jsonl 第 1-50 条(已压缩)
158
+ ```
159
+
160
+ ### 压缩后处理
161
+
162
+ 压缩完成后:
163
+ - 将 summary.md 最新版本置入 context 开头
164
+ - ops.jsonl 中已压缩的条目标记 `compressed: true`(不删除)
165
+ - 向 Layer 3 异步写入本次会话新增的语义知识
166
+
167
+ ---
168
+
169
+ ## Layer 3:跨会话语义层
170
+
171
+ ### 存储内容
172
+
173
+ ```
174
+ ~/.ultra-memory/semantic/
175
+ ├── user_profile.json # 用户偏好、工作方式、常用技术栈
176
+ ├── project_registry.json # 已知项目列表及核心信息
177
+ ├── knowledge_base.jsonl # 语义知识条目(可向量化检索)
178
+ └── session_index.json # 历史会话索引,按主题分类
179
+ ```
180
+
181
+ ### user_profile.json 格式
182
+
183
+ ```json
184
+ {
185
+ "last_updated": "2026-04-02",
186
+ "tech_stack": ["Python", "Vue3", "TypeScript"],
187
+ "work_style": {
188
+ "prefers_concise_code": true,
189
+ "confirm_before_implement": true,
190
+ "scoring_framework": "ZL/GN"
191
+ },
192
+ "projects": ["ai-data-qa", "FusionUI", "ultra-memory"],
193
+ "language": "zh-CN",
194
+ "observed_patterns": [
195
+ "倾向在实现前讨论方案",
196
+ "喜欢类比解释复杂概念"
197
+ ]
198
+ }
199
+ ```
200
+
201
+ ### 会话开始时的上下文注入
202
+
203
+ ```markdown
204
+ <!-- ULTRA-MEMORY CONTEXT INJECTION -->
205
+ **已知背景(来自记忆层):**
206
+ - 用户技术栈: Python / Vue3 / TypeScript
207
+ - 当前活跃项目: ai-data-qa, FusionUI
208
+ - 上次会话(2026-04-01): 完成了数据清洗模块,遗留问题是边界值处理
209
+ - 用户偏好: 简洁代码风格,倾向先确认方案再实现
210
+ <!-- END INJECTION -->
211
+ ```
212
+
213
+ ---
214
+
215
+ ## 检索接口
216
+
217
+ ### 自然语言查询
218
+
219
+ 当用户问"之前我们做了什么""上次那个函数叫什么名字"时,按以下优先级检索:
220
+
221
+ 1. **当前会话 ops.jsonl**(精确匹配,最近50条)
222
+ 2. **当前会话 summary.md**(摘要快速定位)
223
+ 3. **Layer 3 semantic search**(跨会话模糊检索)
224
+
225
+ ```bash
226
+ python3 ~/.openclaw/workspace/skills/ultra-memory/scripts/recall.py \
227
+ --query "数据清洗函数" \
228
+ --session <session_id> \
229
+ --top-k 5
230
+ ```
231
+
232
+ ### 检索结果格式
233
+
234
+ ```
235
+ [RECALL] 找到 3 条相关记录:
236
+
237
+ [ops #23 · 14:18] 创建了 clean_df() 函数,位于 src/cleaner.py,
238
+ 实现了空值填充和文本截断逻辑
239
+
240
+ [summary · 里程碑] ✅ 数据清洗模块完成,通过 3 个单元测试
241
+
242
+ [跨会话 · 2026-03-28] 上上次会话中也有类似函数 preprocess_text(),
243
+ 当时放在 utils/ 目录
244
+ ```
245
+
246
+ ---
247
+
248
+ ## 防遗忘机制
249
+
250
+ ### Context 压力检测
251
+
252
+ 每隔 10 次操作检查一次 context 使用率:
253
+
254
+ ```
255
+ context 使用率 < 40% 无操作
256
+ context 使用率 40-60% 提示用户,询问是否压缩
257
+ context 使用率 > 60% → 自动触发 Layer 2 压缩
258
+ context 使用率 > 80% → 紧急压缩 + 警告,保留最近 20 条 ops
259
+ ```
260
+
261
+ ### 会话恢复
262
+
263
+ 当检测到用户重启会话(新 context)时,自动:
264
+
265
+ 1. 读取上次 `summary.md` + 最近 10 条 `ops.jsonl`
266
+ 2. 生成恢复提示注入 context 开头
267
+ 3. 告知用户:"我记得上次我们在做 X,当时的状态是..."
268
+
269
+ ```bash
270
+ python3 ~/.openclaw/workspace/skills/ultra-memory/scripts/restore.py \
271
+ --project <project_name>
272
+ ```
273
+
274
+ ---
275
+
276
+ ## 与现有方案的对比
277
+
278
+ | 能力 | claude-mem | lancedb-pro | **ultra-memory** |
279
+ |-----|-----------|-------------|-----------------|
280
+ | 操作级日志 | | | ✅ 每步追踪 |
281
+ | 摘要压缩 | | ⚠️ 基础 | ✅ 结构化 |
282
+ | 跨会话持久化 | ⚠️ 依赖文件 | 向量DB | ✅ KV + 索引 |
283
+ | 会话恢复 | ❌ | ⚠️ 手动 | ✅ 自动注入 |
284
+ | 检索接口 | ❌ | 9个工具 | ✅ 统一recall |
285
+ | Context 压力管理 | ❌ | ❌ | ✅ 自动压缩 |
286
+ | 用户画像积累 | | ❌ | ✅ profile更新 |
287
+ | 轻量部署(无向量DB)| ✅ | ❌ 需LanceDB | ✅ 可降级 |
288
+
289
+ ---
290
+
291
+ ## 部署模式
292
+
293
+ ### 模式A:轻量模式(纯文件,无依赖)
294
+
295
+ 适合个人使用,零配置:
296
+ - Layer 1: JSONL 文件
297
+ - Layer 2: Markdown 文件
298
+ - Layer 3: JSON 文件 + 简单关键词检索
299
+
300
+ ```bash
301
+ # 安装(OpenClaw)
302
+ cp -r ultra-memory ~/.openclaw/workspace/skills/
303
+ ```
304
+
305
+ ### 模式B:增强模式(LanceDB 向量检索)
306
+
307
+ 适合重度使用 / 商业场景:
308
+
309
+ ```bash
310
+ pip install lancedb sentence-transformers --break-system-packages
311
+ # 配置后 Layer 3 自动升级为向量检索
312
+ python3 scripts/setup_vector.py
313
+ ```
314
+
315
+ ### 模式C:MCP 服务模式
316
+
317
+ 将 ultra-memory 封装为 MCP Server,供 Claude Code / OpenClaw 通过标准协议调用:
318
+
319
+ ```bash
320
+ node scripts/mcp-server.js --port 3100
321
+ ```
322
+
323
+ 提供以下 MCP 工具:
324
+ - `memory_log` — 记录操作
325
+ - `memory_recall` — 检索记忆
326
+ - `memory_summarize` — 触发压缩
327
+ - `memory_restore` — 会话恢复
328
+ - `memory_profile` — 读写用户画像
329
+
330
+ ---
331
+
332
+ ## 使用示例
333
+
334
+ ### 场景1:长编码任务不丢失上下文
335
+
336
+ ```
337
+ 用户: 帮我开发一个 Python 数据清洗工具
338
+ Claude: [ultra-memory 初始化] 会话 sess_20260402_abc 已创建,开始记录...
339
+ 我注意到你之前做过 ai-data-qa 项目,可以复用那里的评分逻辑...
340
+ [每次操作后自动写入 ops.jsonl]
341
+ ...(50条操作后)...
342
+ Claude: [自动摘要] 已完成里程碑: 数据加载、清洗函数、单元测试。
343
+ 当前进行中: 导出模块。context 已优化,继续...
344
+ ```
345
+
346
+ ### 场景2:跨天继续任务
347
+
348
+ ```
349
+ 用户(第二天): 继续昨天的工作
350
+ Claude: [自动恢复] 我记得昨天(2026-04-01)我们在开发数据清洗工具:
351
+ 已完成: 加载模块、clean_df()、基础测试
352
+ 🔄 进行中: 导出模块,写到一半
353
+ 下一步建议: 继续 export.py 的 to_csv() 方法
354
+ 要从这里继续吗?
355
+ ```
356
+
357
+ ### 场景3:精确回忆操作细节
358
+
359
+ ```
360
+ 用户: 我们之前那个处理空值的逻辑是怎么写的?
361
+ Claude: [检索 ops #23] 在 src/cleaner.py 的 clean_df() 中,
362
+ 空值处理是:字符串列填充 "",数值列填充 0,
363
+ 代码在 line 45-52。要我展示吗?
364
+ ```
365
+
366
+ ---
367
+
368
+ ## 进阶配置
369
+
370
+ 详见 `references/advanced-config.md`(原 `advanced-config.md`),包含:
371
+ - 自定义记录过滤规则(排除敏感内容)
372
+ - 团队共享记忆配置(多人协作)
373
+ - 记忆衰减策略(老旧记忆降权)
374
+ - 与 n8n / LangGraph 集成方案
375
+ - 商业部署安全注意事项
376
+
377
+ ---
378
+
379
+ ## 注意事项
380
+
381
+ 1. **隐私**:ops.jsonl 可能包含代码和命令,注意不要记录密码/API Key。`log_op.py` 内置了敏感词过滤。
382
+ 2. **存储**:轻量模式下每个会话约 50-200KB,建议定期清理 30 天前的会话。
383
+ 3. **性能**:写入操作为异步追加,不阻塞主流程。
384
+ 4. **降级**:如果脚本不可用,Claude 应退化为在 CLAUDE.md 中手动维护摘要。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ultra-memory",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "超长会话记忆系统 — 5层记忆架构,零外部依赖,支持所有LLM平台(Claude/GPT/Gemini/Qwen等)",
5
5
  "keywords": [
6
6
  "ai",