ultra-memory 3.0.0 → 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.
- package/SKILL.md +175 -280
- package/package.json +1 -1
package/SKILL.md
CHANGED
|
@@ -1,383 +1,278 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ultra-memory
|
|
3
3
|
description: >
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
本 skill 自动初始化5层记忆架构并管理整个记忆生命周期。
|
|
10
|
-
适用于:长编码任务、写长篇小说、跨天继续工作、AI数据标注流水线、项目管理型对话等需要持久记忆的场景。
|
|
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"
|
|
11
9
|
---
|
|
12
10
|
|
|
13
|
-
# Ultra Memory — 超长会话记忆
|
|
11
|
+
# Ultra Memory — 超长会话记忆
|
|
14
12
|
|
|
15
|
-
|
|
13
|
+
AI Agent 的操作记忆系统,每次操作后记录,跨会话持久化,可检索可进化。
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
- **claude-mem**:只记录压缩摘要,丢失操作细节
|
|
19
|
-
- **memory-lancedb-pro**:跨会话检索好,但会话内实时追踪弱
|
|
20
|
-
- **全量上下文法**:精度高但延迟 10s+,token 爆炸
|
|
21
|
-
- **本 Skill 的差异化**:三层架构 + 操作日志层,既记得住,又检索得快
|
|
15
|
+
## 前置说明
|
|
22
16
|
|
|
23
|
-
|
|
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
24
|
|
|
25
|
-
|
|
25
|
+
存储根目录:`~/.ultra-memory/`(可配置环境变量 `ULTRA_MEMORY_HOME`)
|
|
26
|
+
不需要理解内部架构,只需按步骤调用脚本。
|
|
26
27
|
|
|
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
|
-
```
|
|
28
|
+
---
|
|
39
29
|
|
|
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)
|
|
30
|
+
## 步骤一:会话初始化
|
|
44
31
|
|
|
45
|
-
|
|
32
|
+
### 触发时机
|
|
46
33
|
|
|
47
|
-
|
|
34
|
+
首次与用户对话时,或用户提到记忆相关触发词时,立即执行。
|
|
48
35
|
|
|
49
|
-
|
|
36
|
+
### 执行命令
|
|
50
37
|
|
|
51
38
|
```bash
|
|
52
|
-
python3
|
|
53
|
-
# 或(Claude Code 环境)
|
|
54
|
-
python3 <skill_dir>/scripts/init.py
|
|
39
|
+
python3 <skill_dir>/scripts/init.py --project <项目名>
|
|
55
40
|
```
|
|
56
41
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
2. 生成唯一 `session_id`(时间戳 + hash)
|
|
60
|
-
3. 从 Layer 3 加载相关历史上下文到当前 context
|
|
61
|
-
4. 输出 `MEMORY_READY` 确认信号
|
|
42
|
+
**参数说明:**
|
|
43
|
+
- `--project`:项目名称,用于跨会话分组。不填默认为 `default`。
|
|
62
44
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
## Layer 1:操作日志层(最重要)
|
|
45
|
+
### 期望输出
|
|
66
46
|
|
|
67
|
-
|
|
47
|
+
输出包含 `MEMORY_READY` 字样,表示会话初始化成功。同时输出 `session_id:`,记录该会话 ID。
|
|
68
48
|
|
|
69
|
-
|
|
49
|
+
### 告知用户
|
|
70
50
|
|
|
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` | 发生错误或回退 | 错误信息、处理方式 |
|
|
51
|
+
初始化成功后,立即告知用户:
|
|
52
|
+
> "记忆系统已就绪(session_id: xxx),开始记录本次操作。"
|
|
81
53
|
|
|
82
|
-
|
|
54
|
+
---
|
|
83
55
|
|
|
84
|
-
|
|
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
|
-
```
|
|
56
|
+
## 步骤二:操作记录
|
|
99
57
|
|
|
100
|
-
|
|
58
|
+
**每次**以下任意事件发生时,立即调用 `log_op.py` 追加写入 ops.jsonl。
|
|
101
59
|
|
|
102
|
-
|
|
60
|
+
### 操作类型与命令对照表
|
|
103
61
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
python3
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
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 "数据清洗模块完成"` |
|
|
112
72
|
|
|
113
|
-
|
|
73
|
+
### 成功标志
|
|
114
74
|
|
|
115
|
-
|
|
75
|
+
命令返回 exit code 0 即为成功,输出形如:
|
|
76
|
+
> `[ultra-memory] [1] bash_exec: 执行了 pip install pandas,安装成功`
|
|
116
77
|
|
|
117
|
-
###
|
|
78
|
+
### 自动标签
|
|
118
79
|
|
|
119
|
-
|
|
80
|
+
`log_op.py` 会根据操作类型和内容自动追加标签(如 `setup`、`dependency`、`code`、`test` 等),无需手动指定 `--tags`。
|
|
120
81
|
|
|
121
|
-
|
|
122
|
-
2. 距上次压缩超过 **30 分钟**
|
|
123
|
-
3. 用户明确说"总结一下目前进展"
|
|
124
|
-
4. 当前 context 占用超过 **60%**
|
|
82
|
+
---
|
|
125
83
|
|
|
126
|
-
|
|
84
|
+
## 步骤三:记忆检索
|
|
127
85
|
|
|
128
|
-
|
|
129
|
-
# 会话摘要 — <session_id>
|
|
130
|
-
更新时间: 2026-04-02 14:30
|
|
86
|
+
### 触发时机
|
|
131
87
|
|
|
132
|
-
|
|
133
|
-
用户希望完成: <当前任务总目标>
|
|
88
|
+
用户问及"之前做了什么"、"上次那个函数在哪里"、"之前遇到过这个问题吗"等记忆相关问题时执行。
|
|
134
89
|
|
|
135
|
-
|
|
136
|
-
- [✅ 14:10] 初始化项目结构,创建了 src/ 和 tests/ 目录
|
|
137
|
-
- [✅ 14:18] 安装依赖 pandas/numpy,配置 venv
|
|
138
|
-
- [✅ 14:25] 实现数据清洗函数 clean_df(),通过单元测试
|
|
90
|
+
### 执行命令
|
|
139
91
|
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
92
|
+
```bash
|
|
93
|
+
python3 <skill_dir>/scripts/recall.py --session <session_id> --query "<用户问题的关键词>" --top-k 5
|
|
94
|
+
```
|
|
143
95
|
|
|
144
|
-
|
|
145
|
-
- 选用 LanceDB 而非 Chroma:原因是本地部署更稳定
|
|
146
|
-
- 评分维度采用 ZL/GN 双维度:对齐用户现有工作流程
|
|
96
|
+
### 检索范围
|
|
147
97
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
98
|
+
按以下优先级检索:
|
|
99
|
+
1. 当前会话 `ops.jsonl`(精确匹配)
|
|
100
|
+
2. 当前会话 `summary.md`(摘要快速定位)
|
|
101
|
+
3. 跨会话 `knowledge_base.jsonl`(语义相似)
|
|
102
|
+
4. 跨会话 `user_profile.json`(偏好匹配)
|
|
151
103
|
|
|
152
|
-
|
|
153
|
-
- 14:22 bash 命令权限不足,已加 sudo 重试成功
|
|
104
|
+
### 结果展示
|
|
154
105
|
|
|
155
|
-
|
|
156
|
-
ops.jsonl 第 1-50 条(已压缩)
|
|
106
|
+
将检索结果直接展示给用户,格式如下:
|
|
157
107
|
```
|
|
108
|
+
[RECALL] 找到 N 条相关记录:
|
|
158
109
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
- 将 ops.jsonl 中已压缩的条目标记 `compressed: true`(不删除)
|
|
164
|
-
- 向 Layer 3 异步写入本次会话新增的语义知识
|
|
110
|
+
[ops #23 · 14:18] <操作摘要>
|
|
111
|
+
[summary · 里程碑] <里程碑内容>
|
|
112
|
+
[跨会话 · 日期 · 项目] <历史记录摘要>
|
|
113
|
+
```
|
|
165
114
|
|
|
166
115
|
---
|
|
167
116
|
|
|
168
|
-
##
|
|
117
|
+
## 步骤四:摘要压缩
|
|
169
118
|
|
|
170
|
-
###
|
|
119
|
+
### 触发时机
|
|
171
120
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
```
|
|
121
|
+
满足以下**任一条件**时,立即执行压缩:
|
|
122
|
+
|
|
123
|
+
1. 操作日志达到 **50 条**
|
|
124
|
+
2. 距上次压缩超过 **30 分钟**
|
|
125
|
+
3. 用户明确说"总结一下"
|
|
126
|
+
4. 当前 context 占用超过 **60%**
|
|
179
127
|
|
|
180
|
-
###
|
|
128
|
+
### 执行命令
|
|
181
129
|
|
|
182
|
-
```
|
|
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
|
-
}
|
|
130
|
+
```bash
|
|
131
|
+
python3 <skill_dir>/scripts/summarize.py --session <session_id> --force
|
|
198
132
|
```
|
|
199
133
|
|
|
200
|
-
###
|
|
134
|
+
### 期望输出
|
|
201
135
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
-
|
|
206
|
-
-
|
|
207
|
-
- 上次会话(2026-04-01): 完成了数据清洗模块,遗留问题是边界值处理
|
|
208
|
-
- 用户偏好: 简洁代码风格,倾向先确认方案再实现
|
|
209
|
-
<!-- END INJECTION -->
|
|
210
|
-
```
|
|
136
|
+
生成/更新 `~/.ultra-memory/sessions/<session_id>/summary.md`,输出包含:
|
|
137
|
+
- 已完成里程碑([✅] 标记)
|
|
138
|
+
- 当前进行中([ ] 标记)
|
|
139
|
+
- 下一步建议([💡] 标记)
|
|
140
|
+
- 操作统计([📊] 标记)
|
|
211
141
|
|
|
212
142
|
---
|
|
213
143
|
|
|
214
|
-
##
|
|
144
|
+
## 步骤五:跨会话恢复
|
|
215
145
|
|
|
216
|
-
###
|
|
146
|
+
### 触发时机
|
|
217
147
|
|
|
218
|
-
|
|
148
|
+
用户说"继续上次"、"从上次继续"、"记得昨天那个项目吗"等时执行。也在新会话开始时(检测到 session_id 变化)自动执行。
|
|
219
149
|
|
|
220
|
-
|
|
221
|
-
2. **当前会话 summary.md**(摘要快速定位)
|
|
222
|
-
3. **Layer 3 semantic search**(跨会话模糊检索)
|
|
150
|
+
### 执行命令
|
|
223
151
|
|
|
224
152
|
```bash
|
|
225
|
-
python3
|
|
226
|
-
--query "数据清洗函数" \
|
|
227
|
-
--session <session_id> \
|
|
228
|
-
--top-k 5
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
### 检索结果格式
|
|
232
|
-
|
|
153
|
+
python3 <skill_dir>/scripts/restore.py --project <项目名>
|
|
233
154
|
```
|
|
234
|
-
[RECALL] 找到 3 条相关记录:
|
|
235
155
|
|
|
236
|
-
|
|
237
|
-
实现了空值填充和文本截断逻辑
|
|
156
|
+
### 告知用户
|
|
238
157
|
|
|
239
|
-
|
|
158
|
+
恢复成功后,立即告知用户:
|
|
159
|
+
> "我找到了上次会话的记录。上次我们做到了:[里程碑摘要]。当前状态:[进行中任务]。下一步建议:[具体建议]。"
|
|
240
160
|
|
|
241
|
-
|
|
242
|
-
当时放在 utils/ 目录
|
|
243
|
-
```
|
|
161
|
+
如果找到了用户画像,也在回复中体现用户偏好。
|
|
244
162
|
|
|
245
163
|
---
|
|
246
164
|
|
|
247
|
-
##
|
|
165
|
+
## 步骤六:记忆进化
|
|
248
166
|
|
|
249
|
-
|
|
167
|
+
记忆进化在每次操作中持续进行,不打断主任务。
|
|
250
168
|
|
|
251
|
-
|
|
169
|
+
### 6.1 用户画像更新
|
|
252
170
|
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
```
|
|
171
|
+
**触发时机:**
|
|
172
|
+
- 用户纠正了 AI 的代码风格或实现方式
|
|
173
|
+
- 用户选择/拒绝了某个技术方案
|
|
174
|
+
- 用户明确说出自己的技术栈或偏好
|
|
175
|
+
- 用户表示某种工作流程更顺手
|
|
259
176
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
当检测到用户重启会话(新 context)时,自动:
|
|
263
|
-
|
|
264
|
-
1. 读取上次 `summary.md` + 最近 10 条 `ops.jsonl`
|
|
265
|
-
2. 生成恢复提示注入 context 开头
|
|
266
|
-
3. 告知用户:"我记得上次我们在做 X,当时的状态是..."
|
|
177
|
+
**执行方式(二选一):**
|
|
267
178
|
|
|
179
|
+
方式 A — 使用 MCP 工具:
|
|
268
180
|
```bash
|
|
269
|
-
python3
|
|
270
|
-
--project <project_name>
|
|
181
|
+
python3 <skill_dir>/scripts/mcp-server.js # 通过 MCP 调用 memory_profile
|
|
271
182
|
```
|
|
272
183
|
|
|
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 | ✅ 可降级 |
|
|
184
|
+
方式 B — 直接读写 JSON:
|
|
185
|
+
```
|
|
186
|
+
文件路径:~/.ultra-memory/semantic/user_profile.json
|
|
187
|
+
```
|
|
287
188
|
|
|
288
|
-
|
|
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
|
+
```
|
|
289
199
|
|
|
290
|
-
|
|
200
|
+
### 6.2 知识库写入
|
|
291
201
|
|
|
292
|
-
|
|
202
|
+
**触发时机:**
|
|
203
|
+
- 解决了一个棘手的 bug(记录问题现象 + 解决方案)
|
|
204
|
+
- 做出了重要的技术选型决策(记录选了什么、为什么、放弃了什么)
|
|
205
|
+
- 发现了某个工具/库的使用技巧
|
|
206
|
+
- 完成了一个可复用的代码模式
|
|
293
207
|
|
|
294
|
-
|
|
295
|
-
-
|
|
296
|
-
- Layer 2: Markdown 文件
|
|
297
|
-
- Layer 3: JSON 文件 + 简单关键词检索
|
|
208
|
+
**执行方式:**
|
|
209
|
+
追加写入 `~/.ultra-memory/semantic/knowledge_base.jsonl`,每行一条 JSON。
|
|
298
210
|
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
211
|
+
**knowledge_base.jsonl 格式:**
|
|
212
|
+
```json
|
|
213
|
+
{"ts": "2026-04-07T10:00:00Z", "project": "项目名", "title": "简短标题", "content": "内容(200字内)", "tags": ["bug-fix", "python"]}
|
|
302
214
|
```
|
|
303
215
|
|
|
304
|
-
###
|
|
216
|
+
### 6.3 里程碑追踪
|
|
305
217
|
|
|
306
|
-
|
|
218
|
+
**触发时机:**
|
|
219
|
+
- 用户说"好了"、"完成了"、"搞定了"、"done"、"finished"
|
|
220
|
+
- 某个功能/模块通过了测试
|
|
221
|
+
- 阶段任务全部完成,用户准备切换下一个子任务
|
|
307
222
|
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
# 配置后 Layer 3 自动升级为向量检索
|
|
311
|
-
python3 scripts/setup_vector.py
|
|
312
|
-
```
|
|
223
|
+
**执行方式:**
|
|
224
|
+
使用 `op_type=milestone` 调用 `log_op.py`(见步骤二表格)。
|
|
313
225
|
|
|
314
|
-
|
|
226
|
+
**作用:** 里程碑记录在 `summary.md` 中,恢复会话时优先展示,让用户快速找回状态。
|
|
315
227
|
|
|
316
|
-
|
|
228
|
+
---
|
|
317
229
|
|
|
318
|
-
|
|
319
|
-
node scripts/mcp-server.js --port 3100
|
|
320
|
-
```
|
|
230
|
+
## 环境变量表
|
|
321
231
|
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
- `memory_restore` — 会话恢复
|
|
327
|
-
- `memory_profile` — 读写用户画像
|
|
232
|
+
| 变量 | 默认值 | 说明 |
|
|
233
|
+
|------|--------|------|
|
|
234
|
+
| `ULTRA_MEMORY_HOME` | `~/.ultra-memory/` | 存储根目录 |
|
|
235
|
+
| `ULTRA_MEMORY_SESSION` | 自动生成 | 当前会话 session_id |
|
|
328
236
|
|
|
329
237
|
---
|
|
330
238
|
|
|
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
|
-
```
|
|
239
|
+
## 异常处理表
|
|
344
240
|
|
|
345
|
-
|
|
241
|
+
| 异常情况 | 处理方式 |
|
|
242
|
+
|---------|---------|
|
|
243
|
+
| 脚本执行失败(exit code != 0) | 静默跳过,继续主任务。记忆功能失败**不阻塞**用户实际需求 |
|
|
244
|
+
| 脚本超时(>15s) | 静默跳过,不重试 |
|
|
245
|
+
| 存储目录无写入权限 | 静默跳过,尝试写入内存缓冲区,下次重试 |
|
|
246
|
+
| 脚本文件不存在 | 静默跳过,退化为在当前 context 中手动维护摘要 |
|
|
247
|
+
| 用户明确说"不用记录" | 立即停止记录,后续操作不再调用 log_op.py |
|
|
248
|
+
| 文件被占用无法追加 | 自动重试 1 次,仍失败则静默跳过 |
|
|
346
249
|
|
|
347
|
-
|
|
348
|
-
用户(第二天): 继续昨天的工作
|
|
349
|
-
Claude: [自动恢复] 我记得昨天(2026-04-01)我们在开发数据清洗工具:
|
|
350
|
-
✅ 已完成: 加载模块、clean_df()、基础测试
|
|
351
|
-
🔄 进行中: 导出模块,写到一半
|
|
352
|
-
下一步建议: 继续 export.py 的 to_csv() 方法
|
|
353
|
-
要从这里继续吗?
|
|
354
|
-
```
|
|
250
|
+
---
|
|
355
251
|
|
|
356
|
-
|
|
252
|
+
## 完整执行流程
|
|
357
253
|
|
|
358
254
|
```
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
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(记录本次操作)
|
|
363
272
|
```
|
|
364
273
|
|
|
365
274
|
---
|
|
366
275
|
|
|
367
276
|
## 进阶配置
|
|
368
277
|
|
|
369
|
-
|
|
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 中手动维护摘要。
|
|
278
|
+
详细配置项(过滤规则、LanceDB 向量检索升级、团队共享、安全注意事项等)见 `references/advanced-config.md`。
|