ultra-memory 3.0.1 → 3.0.2

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 +278 -384
  2. package/package.json +1 -1
package/SKILL.md CHANGED
@@ -1,384 +1,278 @@
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 中手动维护摘要。
1
+ ---
2
+ name: ultra-memory
3
+ description: >
4
+ ultra-memory 是 AI Agent 的超长会话记忆系统。
5
+ 【必须触发-中文】用户说:记住、别忘了、记录一下、上次我们做了什么、帮我回忆、继续上次、从上次继续、不要忘记、上次、跨会话、继续昨天、还有印象吗、我们上次讨论过、之前那个是怎么写的、还记得吗、这次不要忘、帮我追踪、帮我记着
6
+ 【必须触发-英文】用户说:remember this、don't forget、recall、what did we do、pick up where we left off、continue from last time、memory、keep track、log this、what was that、remind me、context lost、continue from yesterday、from last session
7
+ 【隐式触发】用户描述了一个持续性任务(开发某项目、处理某数据集、持续性工作),即使未说"记住"也必须初始化记忆;对话操作数超过30条;用户说"继续昨天的任务"/"接着上次做"
8
+ 【不触发】单次问答("帮我写个正则"、"查一下天气");纯代码补全、文件格式转换等无状态操作;用户已在 context 中能找到所需信息;用户明确说"不用记录"/"just this once"
9
+ ---
10
+
11
+ # Ultra Memory — 超长会话记忆
12
+
13
+ AI Agent 的操作记忆系统,每次操作后记录,跨会话持久化,可检索可进化。
14
+
15
+ ## 前置说明
16
+
17
+ 所有脚本已存在于 `~/.ultra-memory/scripts/` 或技能目录下:
18
+ - `init.py` — 初始化会话
19
+ - `log_op.py` — 记录操作
20
+ - `recall.py` — 检索记忆
21
+ - `summarize.py` 压缩摘要
22
+ - `restore.py` 恢复会话
23
+ - `extract_entities.py` — 提取实体
24
+
25
+ 存储根目录:`~/.ultra-memory/`(可配置环境变量 `ULTRA_MEMORY_HOME`)
26
+ 不需要理解内部架构,只需按步骤调用脚本。
27
+
28
+ ---
29
+
30
+ ## 步骤一:会话初始化
31
+
32
+ ### 触发时机
33
+
34
+ 首次与用户对话时,或用户提到记忆相关触发词时,立即执行。
35
+
36
+ ### 执行命令
37
+
38
+ ```bash
39
+ python3 <skill_dir>/scripts/init.py --project <项目名>
40
+ ```
41
+
42
+ **参数说明:**
43
+ - `--project`:项目名称,用于跨会话分组。不填默认为 `default`。
44
+
45
+ ### 期望输出
46
+
47
+ 输出包含 `MEMORY_READY` 字样,表示会话初始化成功。同时输出 `session_id:`,记录该会话 ID。
48
+
49
+ ### 告知用户
50
+
51
+ 初始化成功后,立即告知用户:
52
+ > "记忆系统已就绪(session_id: xxx),开始记录本次操作。"
53
+
54
+ ---
55
+
56
+ ## 步骤二:操作记录
57
+
58
+ **每次**以下任意事件发生时,立即调用 `log_op.py` 追加写入 ops.jsonl。
59
+
60
+ ### 操作类型与命令对照表
61
+
62
+ | 事件 | op_type | 命令示例 |
63
+ |------|---------|---------|
64
+ | 执行了 shell 命令 | `bash_exec` | `python3 log_op.py --session <id> --type bash_exec --summary "执行了..." --detail '{"cmd":"...","exit_code":0}'` |
65
+ | 创建或修改了文件 | `file_write` | `python3 log_op.py --session <id> --type file_write --summary "创建了..." --detail '{"path":"..."}'` |
66
+ | 读取了文件 | `file_read` | `python3 log_op.py --session <id> --type file_read --summary "读取了..." --detail '{"path":"..."}'` |
67
+ | 进行了重要推理 | `reasoning` | `python3 log_op.py --session <id> --type reasoning --summary "决定用..." --detail '{"confidence":0.9}'` |
68
+ | 做出了关键决策 | `decision` | `python3 log_op.py --session <id> --type decision --summary "选用X方案" --detail '{"rationale":"..."}'` |
69
+ | 发生了错误或回退 | `error` | `python3 log_op.py --session <id> --type error --summary "报错..." --detail '{"traceback":"..."}'` |
70
+ | 用户给了新指令 | `user_instruction` | `python3 log_op.py --session <id> --type user_instruction --summary "用户要求..."` |
71
+ | 某个目标已完成 | `milestone` | `python3 log_op.py --session <id> --type milestone --summary "数据清洗模块完成"` |
72
+
73
+ ### 成功标志
74
+
75
+ 命令返回 exit code 0 即为成功,输出形如:
76
+ > `[ultra-memory] [1] bash_exec: 执行了 pip install pandas,安装成功`
77
+
78
+ ### 自动标签
79
+
80
+ `log_op.py` 会根据操作类型和内容自动追加标签(如 `setup`、`dependency`、`code`、`test` 等),无需手动指定 `--tags`。
81
+
82
+ ---
83
+
84
+ ## 步骤三:记忆检索
85
+
86
+ ### 触发时机
87
+
88
+ 用户问及"之前做了什么"、"上次那个函数在哪里"、"之前遇到过这个问题吗"等记忆相关问题时执行。
89
+
90
+ ### 执行命令
91
+
92
+ ```bash
93
+ python3 <skill_dir>/scripts/recall.py --session <session_id> --query "<用户问题的关键词>" --top-k 5
94
+ ```
95
+
96
+ ### 检索范围
97
+
98
+ 按以下优先级检索:
99
+ 1. 当前会话 `ops.jsonl`(精确匹配)
100
+ 2. 当前会话 `summary.md`(摘要快速定位)
101
+ 3. 跨会话 `knowledge_base.jsonl`(语义相似)
102
+ 4. 跨会话 `user_profile.json`(偏好匹配)
103
+
104
+ ### 结果展示
105
+
106
+ 将检索结果直接展示给用户,格式如下:
107
+ ```
108
+ [RECALL] 找到 N 条相关记录:
109
+
110
+ [ops #23 · 14:18] <操作摘要>
111
+ [summary · 里程碑] <里程碑内容>
112
+ [跨会话 · 日期 · 项目] <历史记录摘要>
113
+ ```
114
+
115
+ ---
116
+
117
+ ## 步骤四:摘要压缩
118
+
119
+ ### 触发时机
120
+
121
+ 满足以下**任一条件**时,立即执行压缩:
122
+
123
+ 1. 操作日志达到 **50 条**
124
+ 2. 距上次压缩超过 **30 分钟**
125
+ 3. 用户明确说"总结一下"
126
+ 4. 当前 context 占用超过 **60%**
127
+
128
+ ### 执行命令
129
+
130
+ ```bash
131
+ python3 <skill_dir>/scripts/summarize.py --session <session_id> --force
132
+ ```
133
+
134
+ ### 期望输出
135
+
136
+ 生成/更新 `~/.ultra-memory/sessions/<session_id>/summary.md`,输出包含:
137
+ - 已完成里程碑([✅] 标记)
138
+ - 当前进行中([ ] 标记)
139
+ - 下一步建议([💡] 标记)
140
+ - 操作统计([📊] 标记)
141
+
142
+ ---
143
+
144
+ ## 步骤五:跨会话恢复
145
+
146
+ ### 触发时机
147
+
148
+ 用户说"继续上次"、"从上次继续"、"记得昨天那个项目吗"等时执行。也在新会话开始时(检测到 session_id 变化)自动执行。
149
+
150
+ ### 执行命令
151
+
152
+ ```bash
153
+ python3 <skill_dir>/scripts/restore.py --project <项目名>
154
+ ```
155
+
156
+ ### 告知用户
157
+
158
+ 恢复成功后,立即告知用户:
159
+ > "我找到了上次会话的记录。上次我们做到了:[里程碑摘要]。当前状态:[进行中任务]。下一步建议:[具体建议]。"
160
+
161
+ 如果找到了用户画像,也在回复中体现用户偏好。
162
+
163
+ ---
164
+
165
+ ## 步骤六:记忆进化
166
+
167
+ 记忆进化在每次操作中持续进行,不打断主任务。
168
+
169
+ ### 6.1 用户画像更新
170
+
171
+ **触发时机:**
172
+ - 用户纠正了 AI 的代码风格或实现方式
173
+ - 用户选择/拒绝了某个技术方案
174
+ - 用户明确说出自己的技术栈或偏好
175
+ - 用户表示某种工作流程更顺手
176
+
177
+ **执行方式(二选一):**
178
+
179
+ 方式 A — 使用 MCP 工具:
180
+ ```bash
181
+ python3 <skill_dir>/scripts/mcp-server.js # 通过 MCP 调用 memory_profile
182
+ ```
183
+
184
+ 方式 B — 直接读写 JSON:
185
+ ```
186
+ 文件路径:~/.ultra-memory/semantic/user_profile.json
187
+ ```
188
+
189
+ **user_profile.json 格式:**
190
+ ```json
191
+ {
192
+ "tech_stack": ["Python", "Vue3"],
193
+ "work_style": {"prefers_concise_code": true},
194
+ "projects": ["ai-data-qa"],
195
+ "language": "zh-CN",
196
+ "observed_patterns": ["倾向在实现前讨论方案"]
197
+ }
198
+ ```
199
+
200
+ ### 6.2 知识库写入
201
+
202
+ **触发时机:**
203
+ - 解决了一个棘手的 bug(记录问题现象 + 解决方案)
204
+ - 做出了重要的技术选型决策(记录选了什么、为什么、放弃了什么)
205
+ - 发现了某个工具/库的使用技巧
206
+ - 完成了一个可复用的代码模式
207
+
208
+ **执行方式:**
209
+ 追加写入 `~/.ultra-memory/semantic/knowledge_base.jsonl`,每行一条 JSON。
210
+
211
+ **knowledge_base.jsonl 格式:**
212
+ ```json
213
+ {"ts": "2026-04-07T10:00:00Z", "project": "项目名", "title": "简短标题", "content": "内容(200字内)", "tags": ["bug-fix", "python"]}
214
+ ```
215
+
216
+ ### 6.3 里程碑追踪
217
+
218
+ **触发时机:**
219
+ - 用户说"好了""完成了"、"搞定了"、"done"、"finished"
220
+ - 某个功能/模块通过了测试
221
+ - 阶段任务全部完成,用户准备切换下一个子任务
222
+
223
+ **执行方式:**
224
+ 使用 `op_type=milestone` 调用 `log_op.py`(见步骤二表格)。
225
+
226
+ **作用:** 里程碑记录在 `summary.md` 中,恢复会话时优先展示,让用户快速找回状态。
227
+
228
+ ---
229
+
230
+ ## 环境变量表
231
+
232
+ | 变量 | 默认值 | 说明 |
233
+ |------|--------|------|
234
+ | `ULTRA_MEMORY_HOME` | `~/.ultra-memory/` | 存储根目录 |
235
+ | `ULTRA_MEMORY_SESSION` | 自动生成 | 当前会话 session_id |
236
+
237
+ ---
238
+
239
+ ## 异常处理表
240
+
241
+ | 异常情况 | 处理方式 |
242
+ |---------|---------|
243
+ | 脚本执行失败(exit code != 0) | 静默跳过,继续主任务。记忆功能失败**不阻塞**用户实际需求 |
244
+ | 脚本超时(>15s) | 静默跳过,不重试 |
245
+ | 存储目录无写入权限 | 静默跳过,尝试写入内存缓冲区,下次重试 |
246
+ | 脚本文件不存在 | 静默跳过,退化为在当前 context 中手动维护摘要 |
247
+ | 用户明确说"不用记录" | 立即停止记录,后续操作不再调用 log_op.py |
248
+ | 文件被占用无法追加 | 自动重试 1 次,仍失败则静默跳过 |
249
+
250
+ ---
251
+
252
+ ## 完整执行流程
253
+
254
+ ```
255
+ 用户发起对话
256
+
257
+ ├─ 首次对话或听到记忆触发词?
258
+ │ └─ 步骤一:init.py 告知用户"记忆就绪"
259
+
260
+ ├─ 用户说记忆相关问题?
261
+ │ └─ 是 → 步骤三:recall.py → 展示检索结果
262
+
263
+ └─ 每次用户与 AI 交互后:
264
+
265
+ ├─ 操作数 % 10 == 0 context > 60%?
266
+ │ └─ 步骤四:summarize.py
267
+
268
+ ├─ 发现用户偏好 / 解决重要问题 / 完成里程碑?
269
+ │ └─ 是 → 步骤六:进化(画像/知识库/里程碑)
270
+
271
+ └─ 步骤二:log_op.py(记录本次操作)
272
+ ```
273
+
274
+ ---
275
+
276
+ ## 进阶配置
277
+
278
+ 详细配置项(过滤规则、LanceDB 向量检索升级、团队共享、安全注意事项等)见 `references/advanced-config.md`。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ultra-memory",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "超长会话记忆系统 — 5层记忆架构,零外部依赖,支持所有LLM平台(Claude/GPT/Gemini/Qwen等)",
5
5
  "keywords": [
6
6
  "ai",