openclaw-cortex-memory 0.1.0-Alpha.2 → 0.1.0-Alpha.21

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 (76) hide show
  1. package/README.md +163 -203
  2. package/SKILL.md +71 -268
  3. package/dist/index.d.ts +88 -15
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +859 -1189
  6. package/dist/index.js.map +1 -1
  7. package/dist/openclaw.plugin.json +362 -14
  8. package/dist/src/dedup/three_stage_deduplicator.d.ts +25 -0
  9. package/dist/src/dedup/three_stage_deduplicator.d.ts.map +1 -0
  10. package/dist/src/dedup/three_stage_deduplicator.js +224 -0
  11. package/dist/src/dedup/three_stage_deduplicator.js.map +1 -0
  12. package/dist/src/engine/memory_engine.d.ts +2 -1
  13. package/dist/src/engine/memory_engine.d.ts.map +1 -1
  14. package/dist/src/engine/ts_engine.d.ts +126 -0
  15. package/dist/src/engine/ts_engine.d.ts.map +1 -1
  16. package/dist/src/engine/ts_engine.js +1172 -44
  17. package/dist/src/engine/ts_engine.js.map +1 -1
  18. package/dist/src/engine/types.d.ts +12 -0
  19. package/dist/src/engine/types.d.ts.map +1 -1
  20. package/dist/src/graph/ontology.d.ts +103 -0
  21. package/dist/src/graph/ontology.d.ts.map +1 -0
  22. package/dist/src/graph/ontology.js +564 -0
  23. package/dist/src/graph/ontology.js.map +1 -0
  24. package/dist/src/quality/llm_output_validator.d.ts +48 -0
  25. package/dist/src/quality/llm_output_validator.d.ts.map +1 -0
  26. package/dist/src/quality/llm_output_validator.js +404 -0
  27. package/dist/src/quality/llm_output_validator.js.map +1 -0
  28. package/dist/src/reflect/reflector.d.ts +7 -0
  29. package/dist/src/reflect/reflector.d.ts.map +1 -1
  30. package/dist/src/reflect/reflector.js +358 -8
  31. package/dist/src/reflect/reflector.js.map +1 -1
  32. package/dist/src/rules/rule_store.d.ts.map +1 -1
  33. package/dist/src/rules/rule_store.js +75 -16
  34. package/dist/src/rules/rule_store.js.map +1 -1
  35. package/dist/src/session/session_end.d.ts +33 -0
  36. package/dist/src/session/session_end.d.ts.map +1 -1
  37. package/dist/src/session/session_end.js +67 -64
  38. package/dist/src/session/session_end.js.map +1 -1
  39. package/dist/src/store/archive_store.d.ts +128 -0
  40. package/dist/src/store/archive_store.d.ts.map +1 -0
  41. package/dist/src/store/archive_store.js +481 -0
  42. package/dist/src/store/archive_store.js.map +1 -0
  43. package/dist/src/store/embedding_utils.d.ts +32 -0
  44. package/dist/src/store/embedding_utils.d.ts.map +1 -0
  45. package/dist/src/store/embedding_utils.js +173 -0
  46. package/dist/src/store/embedding_utils.js.map +1 -0
  47. package/dist/src/store/graph_memory_store.d.ts +44 -0
  48. package/dist/src/store/graph_memory_store.d.ts.map +1 -0
  49. package/dist/src/store/graph_memory_store.js +168 -0
  50. package/dist/src/store/graph_memory_store.js.map +1 -0
  51. package/dist/src/store/read_store.d.ts +86 -0
  52. package/dist/src/store/read_store.d.ts.map +1 -1
  53. package/dist/src/store/read_store.js +1681 -25
  54. package/dist/src/store/read_store.js.map +1 -1
  55. package/dist/src/store/vector_store.d.ts +44 -0
  56. package/dist/src/store/vector_store.d.ts.map +1 -0
  57. package/dist/src/store/vector_store.js +201 -0
  58. package/dist/src/store/vector_store.js.map +1 -0
  59. package/dist/src/store/write_store.d.ts +52 -0
  60. package/dist/src/store/write_store.d.ts.map +1 -1
  61. package/dist/src/store/write_store.js +245 -3
  62. package/dist/src/store/write_store.js.map +1 -1
  63. package/dist/src/sync/session_sync.d.ts +100 -2
  64. package/dist/src/sync/session_sync.d.ts.map +1 -1
  65. package/dist/src/sync/session_sync.js +673 -22
  66. package/dist/src/sync/session_sync.js.map +1 -1
  67. package/dist/src/utils/runtime_env.d.ts +4 -0
  68. package/dist/src/utils/runtime_env.d.ts.map +1 -0
  69. package/dist/src/utils/runtime_env.js +51 -0
  70. package/dist/src/utils/runtime_env.js.map +1 -0
  71. package/openclaw.plugin.json +362 -14
  72. package/package.json +23 -6
  73. package/scripts/cli.js +19 -14
  74. package/scripts/uninstall.js +22 -5
  75. package/index.ts +0 -2092
  76. package/scripts/install.js +0 -27
package/README.md CHANGED
@@ -1,204 +1,164 @@
1
- # OpenClaw Cortex Memory
2
-
3
- OpenClaw 长期记忆插件,提供跨会话检索、事件存储、规则反思、增量同步与运行诊断能力。
4
- 可作为 OpenClaw 的 memory slot 直接接入,支持从历史会话持续沉淀可复用记忆。
5
-
6
- ## 功能特性
7
-
8
- | 特性 | 说明 |
9
- |------|------|
10
- | 语义检索 | `search_memory` 支持 query + top_k |
11
- | 事件存储 | `store_event` 将摘要写入归档 |
12
- | 上下文注入 | `get_hot_context` / `get_auto_context` |
13
- | 增量同步 | `sync_memory` 按状态文件增量导入 |
14
- | 规则演进 | `reflect_memory` 更新 `CORTEX_RULES.md` |
15
- | 运行诊断 | `diagnostics` 检查本地存储状态 |
16
-
17
- ## 安装
18
-
19
- ### 前置要求
20
-
21
- - Node.js 22+
22
- - OpenAI API Key(或其他兼容 API)
23
-
24
- ### 安装步骤
25
-
26
- 快速安装(推荐,npm 发布版):
27
-
28
- ```bash
29
- cd ~/openclaw
30
- pnpm openclaw plugins install openclaw-cortex-memory@alpha
31
- pnpm openclaw plugins enable openclaw-cortex-memory
32
- pnpm openclaw gateway restart
33
- ```
34
-
35
- 后续更新:
36
-
37
- ```bash
38
- cd ~/openclaw
39
- pnpm openclaw plugins install openclaw-cortex-memory@alpha
40
- pnpm openclaw gateway restart
41
- ```
42
-
43
- 安装前如果 `openclaw.json` 已经提前写了 `allow/slots/entries` 指向本插件,先临时移除,安装后再加回,避免安装前校验报 `plugin not found`。
44
-
45
- ### 本地打包安装(源码模式)
46
-
47
- ```bash
48
- git clone https://github.com/deki18/openclaw-cortex-memory.git ~/openclaw-cortex-memory-src
49
- cd ~/openclaw-cortex-memory-src
50
- npm install && npm run build && npm pack
51
- cd ~/openclaw
52
- pnpm openclaw plugins install ~/openclaw-cortex-memory-src/openclaw-cortex-memory-0.1.0-Alpha.1.tgz
53
- pnpm openclaw gateway restart
54
- ```
55
-
56
- ### 本地开发模式(无安装记录)
57
-
58
- ```bash
59
- cd ~/.openclaw/extensions
60
- git clone https://github.com/deki18/openclaw-cortex-memory.git
61
- cd openclaw-cortex-memory
62
- npm install
63
- ```
64
-
65
- `npm install` 会自动执行 TypeScript 构建并生成 `dist/`,但这种方式默认不写 OpenClaw 安装记录。
66
-
67
- ## 配置
68
-
69
- 在 `openclaw.json` 中添加:
70
-
71
- ```json
72
- {
73
- "plugins": {
74
- "slots": { "memory": "openclaw-cortex-memory" },
75
- "entries": {
76
- "openclaw-cortex-memory": {
77
- "enabled": true,
78
- "config": {
79
- "engineMode": "ts",
80
- "dbPath": "<optional-memory-dir>",
81
- "autoSync": true,
82
- "autoReflect": true,
83
- "embedding": {
84
- "provider": "api",
85
- "model": "text-embedding-3-large",
86
- "apiKey": "${EMBEDDING_API_KEY}",
87
- "baseURL": "https://your-embedding-endpoint/v1",
88
- "dimensions": 3072
89
- },
90
- "llm": {
91
- "provider": "api",
92
- "model": "gpt-4",
93
- "apiKey": "${LLM_API_KEY}",
94
- "baseURL": "https://your-llm-endpoint/v1"
95
- },
96
- "reranker": {
97
- "provider": "api",
98
- "model": "BAAI/bge-reranker-v2-m3",
99
- "apiKey": "${RERANKER_API_KEY}",
100
- "baseURL": "https://your-reranker-endpoint/v1/rerank"
101
- }
102
- }
103
- }
104
- }
105
- }
106
- }
107
- ```
108
-
109
- ### 配置项说明
110
-
111
- | 配置项 | 必填 | 说明 |
112
- |--------|------|------|
113
- | `embedding.provider` | 是 | 建议使用 `api`(统一第三方接口模式) |
114
- | `embedding.model` | 是 | 嵌入模型名称 |
115
- | `embedding.dimensions` | 否 | 向量维度,需与模型匹配 |
116
- | `embedding.apiKey` | 是 | Embedding API Key(建议 `${EMBEDDING_API_KEY}`) |
117
- | `embedding.baseURL` | 是 | Embedding API 端点 |
118
- | `llm.provider` | 是 | 建议使用 `api` |
119
- | `llm.model` | 是 | LLM 模型名称 |
120
- | `llm.apiKey` | 是 | LLM API Key(建议 `${LLM_API_KEY}`) |
121
- | `llm.baseURL` | 是 | LLM API 端点 |
122
- | `reranker.provider` | 否 | 建议使用 `api` |
123
- | `reranker.model` | 是 | Reranker 模型名称 |
124
- | `reranker.apiKey` | 是 | Reranker API Key(建议 `${RERANKER_API_KEY}`) |
125
- | `reranker.baseURL` | 是 | Reranker API 端点 |
126
- | `engineMode` | | 固定 `ts` |
127
- | `dbPath` | 否 | 数据目录,默认 `<plugin-dir>/data/memory` |
128
- | `autoSync` | 否 | 会话结束时自动同步历史记录,默认 `true` |
129
- | `autoReflect` | 否 | 自动触发记忆反思,默认 `false` |
130
-
131
- ### 启动
132
-
133
- ```bash
134
- pnpm openclaw config validate
135
- pnpm openclaw gateway restart
136
- ```
137
-
138
- ### 主 Agent 注入说明
139
-
140
- 首次接入后,建议把下面这段发给主 Agent,确保其按记忆工作流执行:
141
-
142
- ```text
143
- 你已接入 Cortex Memory。请遵循以下规则:
144
- 1) 当用户询问历史对话、偏好、项目上下文时,先调用 search_memory 再回答。
145
- 2) 需要当前会话热上下文时调用 get_hot_context。
146
- 3) 需要自动召回相关记忆时调用 get_auto_context。
147
- 4) 在一件重要事情结束并形成明确结果后,再调用 store_event 记录(不要在过程进行中频繁记录)。
148
- 5) 需要实体关联关系时调用 query_graph。
149
- 6) 当任务经历“失败→调整→最终成功”时,优先用 store_event 记录失败原因与成功方案,再调用 reflect_memory 沉淀可复用规则。
150
- 7) 需要导入历史会话时调用 sync_memory。
151
- 8) 出现配置校验失败、记忆读写异常、检索结果异常或数据目录问题时,优先调用 diagnostics。
152
- 9) 同一任务内不要反复调用 store_event 或 reflect_memory;仅在关键节点或任务收尾时触发一次。
153
- 10) 不要臆造历史事实;无法确认时必须先检索。
154
- ```
155
-
156
- ## 可用工具
157
-
158
- | 工具 | 说明 |
159
- |------|------|
160
- | `search_memory` | 语义搜索记忆库,支持 top_k 参数 |
161
- | `store_event` | 存储事件,可包含实体和关系 |
162
- | `query_graph` | 查询实体关系图谱 |
163
- | `get_hot_context` | 获取热上下文(CORTEX_RULES.md + 近期会话) |
164
- | `get_auto_context` | 自动检索相关记忆 + 热上下文 |
165
- | `reflect_memory` | 触发记忆反思,将事件转化为规则 |
166
- | `sync_memory` | 同步 OpenClaw 历史会话(增量) |
167
- | `delete_memory` | 删除指定记忆 |
168
- | `diagnostics` | 系统诊断 |
169
-
170
- ## CLI 命令
171
-
172
- CLI 命令需在插件目录运行:
173
-
174
- ```bash
175
- npx cortex-memory status # 查看插件状态
176
- npx cortex-memory enable # 启用插件
177
- npx cortex-memory disable # 禁用插件(回退到内置记忆)
178
- npx cortex-memory uninstall # 卸载插件
179
- npx cortex-memory uninstall --keep-data # 卸载但保留数据
180
- npx cortex-memory help # 查看命令帮助
181
- ```
182
-
183
- ## 数据存储
184
-
185
- | 路径 | 说明 |
186
- |------|------|
187
- | `<dbPath>/MEMORY.md` | 记忆说明 |
188
- | `<dbPath>/CORTEX_RULES.md` | 规则文件 |
189
- | `<dbPath>/sessions/active/sessions.jsonl` | 活跃会话 |
190
- | `<dbPath>/sessions/archive/sessions.jsonl` | 归档事件 |
191
- | `<dbPath>/.sync_state.json` | 同步增量状态 |
192
- | `<dbPath>/.session_end_state.json` | session_end 幂等状态 |
193
- | `<dbPath>/.rule_store_state.json` | 规则去重状态 |
194
-
195
- ## 注意事项
196
-
197
- 1. **API Key 安全**:使用环境变量 `${OPENAI_API_KEY}` 而非硬编码
198
- 2. **向量维度**:必须与嵌入模型匹配,如 `text-embedding-3-large` 为 3072
199
- 3. **重排序**:可选配置 `reranker` 以提升检索精度
200
- 4. **单栈运行**:当前版本为纯 TS,无 Python 运行时依赖
201
-
202
- ## 许可证
203
-
1
+ # OpenClaw Cortex Memory
2
+
3
+ OpenClaw 长期记忆插件 - 专为 OpenClaw AI 助手设计的智能记忆系统
4
+
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)
6
+ [![Node.js: 22+](https://img.shields.io/badge/Node.js-22+-green.svg)](https://nodejs.org/)
7
+ [![OpenClaw: Plugin](https://img.shields.io/badge/OpenClaw-Plugin-orange.svg)](https://github.com/openclaw)
8
+
9
+ 面向 OpenClaw 的长期记忆插件,集成多路检索、事件归档、图谱关系、向量化与反衰减排序,支持历史增量导入、规则反思和可观测诊断,帮助 Agent 在跨会话中持续积累并稳定调用高价值记忆。
10
+
11
+ ---
12
+
13
+ ## 核心能力
14
+
15
+ ### 1) 语义检索
16
+ - 多路召回:`keyword / BM25 / vector / graph` 混合检索
17
+ - 排序融合:加权打分 + RRF + 可选 reranker
18
+ - 结果融合:可选 `readFusion`,支持权威融合返回
19
+ - 时序建模:`memoryDecay` + 命中反衰减(anti-decay)
20
+
21
+ ### 2) 事件存储
22
+ - 分层写入:`active`(会话)与 `archive`(结构化事件)
23
+ - 摘要优先:归档记录保留 `summary` 与 `source_text`
24
+ - 向量分块:支持 summary/evidence 双通道向量记录
25
+ - 增量同步:按状态文件增量导入历史会话
26
+
27
+ ### 3) 图谱关系
28
+ - 图谱独立层:`graph/memory.jsonl` 独立于 archive 文本层
29
+ - 关系追溯:每条关系可追溯 `source_event_id`
30
+ - 关系查询:`query_graph` 支持方向、关系类型、路径搜索
31
+ - 质量门禁:`graphQualityMode` 支持 `off/warn/strict`
32
+
33
+ ### 4) 规则演进
34
+ - 反思沉淀:`reflect_memory` 将事件抽象为规则
35
+ - 去重治理:规则与事件均有去重控制,避免污染
36
+ - 规则复用:规则写入 `CORTEX_RULES.md` 供后续任务复用
37
+
38
+ ### 5) 运维诊断
39
+ - `diagnostics`:模型连通、层级状态、字段对齐检查
40
+ - `backfill_embeddings`:支持 `incremental / vector_only / full`
41
+ - 完整状态文件:便于快速定位同步、回填、质量问题
42
+
43
+ ---
44
+
45
+ ## 已注册工具(与当前代码一致)
46
+
47
+ - `search_memory`
48
+ - `store_event`
49
+ - `query_graph`
50
+ - `get_hot_context`
51
+ - `get_auto_context`
52
+ - `reflect_memory`
53
+ - `sync_memory`
54
+ - `backfill_embeddings`
55
+ - `delete_memory`
56
+ - `diagnostics`
57
+
58
+ ### 工具参数速览
59
+
60
+ | 工具 | 关键参数 |
61
+ |------|------|
62
+ | `search_memory` | `query`, `top_k` |
63
+ | `store_event` | `summary`, `entities`, `entity_types`, `outcome`, `relations` |
64
+ | `query_graph` | `entity`, `rel`, `dir`, `path_to`, `max_depth` |
65
+ | `get_hot_context` | `limit` |
66
+ | `get_auto_context` | `include_hot` |
67
+ | `backfill_embeddings` | `layer`, `batch_size`, `max_retries`, `retry_failed_only`, `rebuild_mode` |
68
+ | `delete_memory` | `memory_id` |
69
+
70
+ ---
71
+
72
+ ## 快速开始
73
+
74
+ ### 安装
75
+
76
+ ```bash
77
+ cd ~/openclaw
78
+ openclaw plugins install clawhub:openclaw-cortex-memory
79
+ openclaw plugins enable openclaw-cortex-memory
80
+ openclaw gateway restart
81
+ ```
82
+
83
+ ### 最小配置(推荐先跑起来)
84
+
85
+ ```json
86
+ {
87
+ "plugins": {
88
+ "allow": ["openclaw-cortex-memory"],
89
+ "slots": { "memory": "openclaw-cortex-memory" },
90
+ "entries": {
91
+ "openclaw-cortex-memory": {
92
+ "enabled": true,
93
+ "config": {
94
+ "autoSync": true,
95
+ "autoReflect": false,
96
+ "graphQualityMode": "warn",
97
+ "embedding": {
98
+ "provider": "api",
99
+ "model": "text-embedding-3-large",
100
+ "apiKey": "${EMBEDDING_API_KEY}",
101
+ "baseURL": "https://your-embedding-endpoint/v1",
102
+ "dimensions": 3072
103
+ },
104
+ "llm": {
105
+ "provider": "api",
106
+ "model": "gpt-4",
107
+ "apiKey": "${LLM_API_KEY}",
108
+ "baseURL": "https://your-llm-endpoint/v1"
109
+ },
110
+ "reranker": {
111
+ "provider": "api",
112
+ "model": "BAAI/bge-reranker-v2-m3",
113
+ "apiKey": "${RERANKER_API_KEY}",
114
+ "baseURL": "https://your-reranker-endpoint/v1/rerank"
115
+ }
116
+ }
117
+ }
118
+ }
119
+ }
120
+ }
121
+ ```
122
+
123
+ <details>
124
+ <summary>高级配置(默认已内置,不懂可以不改)</summary>
125
+
126
+ - `readFusion`:融合候选数、通道权重、通道 TopK、最小 lexical/semantic 命中、长度归一
127
+ - `memoryDecay`:最小衰减地板、默认半衰期、事件类型半衰期、anti-decay 参数
128
+ - `vectorChunking`:分块大小、重叠、evidence 最大分块数
129
+ - `writePolicy`:archive/active 质量阈值与文本长度限制
130
+ - `readTuning`:打分权重、RRF 参数、recency 分桶、auto-context 轻量检索
131
+
132
+ </details>
133
+
134
+ ---
135
+
136
+ ## 数据目录
137
+
138
+ - `<dbPath>/MEMORY.md`
139
+ - `<dbPath>/CORTEX_RULES.md`
140
+ - `<dbPath>/sessions/active/sessions.jsonl`
141
+ - `<dbPath>/sessions/archive/sessions.jsonl`
142
+ - `<dbPath>/graph/memory.jsonl`
143
+ - `<dbPath>/graph/mutation_log.jsonl`
144
+ - `<dbPath>/vector/lancedb`
145
+ - `<dbPath>/vector/lancedb_events.jsonl`
146
+ - `<dbPath>/.sync_state.json`
147
+ - `<dbPath>/.session_end_state.json`
148
+ - `<dbPath>/.rule_store_state.json`
149
+ - `<dbPath>/.dedup_index.json`
150
+ - `<dbPath>/.read_hit_stats.json`
151
+
152
+ ---
153
+
154
+ ## 常用命令
155
+
156
+ ```bash
157
+ npm run typecheck
158
+ npm run test:graph-quality
159
+ npm run test:graph-quality-zh
160
+ ```
161
+
162
+ ---
163
+
204
164
  MIT License