openclaw-cortex-memory 0.1.0-Alpha.9 → 0.1.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 (97) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +347 -290
  3. package/SIGNATURE.md +7 -0
  4. package/SKILL.md +96 -345
  5. package/dist/index.d.ts +69 -23
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1130 -1330
  8. package/dist/index.js.map +1 -1
  9. package/dist/openclaw.plugin.json +397 -18
  10. package/dist/src/dedup/three_stage_deduplicator.d.ts.map +1 -1
  11. package/dist/src/dedup/three_stage_deduplicator.js +13 -3
  12. package/dist/src/dedup/three_stage_deduplicator.js.map +1 -1
  13. package/dist/src/engine/memory_engine.d.ts +5 -1
  14. package/dist/src/engine/memory_engine.d.ts.map +1 -1
  15. package/dist/src/engine/ts_engine.d.ts +149 -0
  16. package/dist/src/engine/ts_engine.d.ts.map +1 -1
  17. package/dist/src/engine/ts_engine.js +863 -203
  18. package/dist/src/engine/ts_engine.js.map +1 -1
  19. package/dist/src/engine/types.d.ts +20 -0
  20. package/dist/src/engine/types.d.ts.map +1 -1
  21. package/dist/src/graph/ontology.d.ts +87 -15
  22. package/dist/src/graph/ontology.d.ts.map +1 -1
  23. package/dist/src/graph/ontology.js +999 -12
  24. package/dist/src/graph/ontology.js.map +1 -1
  25. package/dist/src/net/http_post.d.ts +17 -0
  26. package/dist/src/net/http_post.d.ts.map +1 -0
  27. package/dist/src/net/http_post.js +56 -0
  28. package/dist/src/net/http_post.js.map +1 -0
  29. package/dist/src/quality/llm_output_validator.d.ts +65 -0
  30. package/dist/src/quality/llm_output_validator.d.ts.map +1 -0
  31. package/dist/src/quality/llm_output_validator.js +635 -0
  32. package/dist/src/quality/llm_output_validator.js.map +1 -0
  33. package/dist/src/reflect/reflector.d.ts.map +1 -1
  34. package/dist/src/reflect/reflector.js +296 -26
  35. package/dist/src/reflect/reflector.js.map +1 -1
  36. package/dist/src/rules/rule_store.d.ts.map +1 -1
  37. package/dist/src/rules/rule_store.js +75 -16
  38. package/dist/src/rules/rule_store.js.map +1 -1
  39. package/dist/src/session/session_end.d.ts +20 -42
  40. package/dist/src/session/session_end.d.ts.map +1 -1
  41. package/dist/src/session/session_end.js +21 -218
  42. package/dist/src/session/session_end.js.map +1 -1
  43. package/dist/src/store/archive_store.d.ts +28 -7
  44. package/dist/src/store/archive_store.d.ts.map +1 -1
  45. package/dist/src/store/archive_store.js +367 -130
  46. package/dist/src/store/archive_store.js.map +1 -1
  47. package/dist/src/store/graph_memory_store.d.ts +115 -0
  48. package/dist/src/store/graph_memory_store.d.ts.map +1 -0
  49. package/dist/src/store/graph_memory_store.js +1061 -0
  50. package/dist/src/store/graph_memory_store.js.map +1 -0
  51. package/dist/src/store/read_store.d.ts +75 -0
  52. package/dist/src/store/read_store.d.ts.map +1 -1
  53. package/dist/src/store/read_store.js +1837 -312
  54. package/dist/src/store/read_store.js.map +1 -1
  55. package/dist/src/store/vector_store.d.ts +2 -0
  56. package/dist/src/store/vector_store.d.ts.map +1 -1
  57. package/dist/src/store/vector_store.js +19 -3
  58. package/dist/src/store/vector_store.js.map +1 -1
  59. package/dist/src/store/write_store.d.ts +11 -0
  60. package/dist/src/store/write_store.d.ts.map +1 -1
  61. package/dist/src/store/write_store.js +242 -42
  62. package/dist/src/store/write_store.js.map +1 -1
  63. package/dist/src/sync/session_sync.d.ts +72 -1
  64. package/dist/src/sync/session_sync.d.ts.map +1 -1
  65. package/dist/src/sync/session_sync.js +2246 -126
  66. package/dist/src/sync/session_sync.js.map +1 -1
  67. package/dist/src/wiki/wiki_linter.d.ts +26 -0
  68. package/dist/src/wiki/wiki_linter.d.ts.map +1 -0
  69. package/dist/src/wiki/wiki_linter.js +339 -0
  70. package/dist/src/wiki/wiki_linter.js.map +1 -0
  71. package/dist/src/wiki/wiki_logger.d.ts +10 -0
  72. package/dist/src/wiki/wiki_logger.d.ts.map +1 -0
  73. package/dist/src/wiki/wiki_logger.js +78 -0
  74. package/dist/src/wiki/wiki_logger.js.map +1 -0
  75. package/dist/src/wiki/wiki_maintainer.d.ts +39 -0
  76. package/dist/src/wiki/wiki_maintainer.d.ts.map +1 -0
  77. package/dist/src/wiki/wiki_maintainer.js +38 -0
  78. package/dist/src/wiki/wiki_maintainer.js.map +1 -0
  79. package/dist/src/wiki/wiki_projector.d.ts +35 -0
  80. package/dist/src/wiki/wiki_projector.d.ts.map +1 -0
  81. package/dist/src/wiki/wiki_projector.js +1151 -0
  82. package/dist/src/wiki/wiki_projector.js.map +1 -0
  83. package/dist/src/wiki/wiki_queue.d.ts +29 -0
  84. package/dist/src/wiki/wiki_queue.d.ts.map +1 -0
  85. package/dist/src/wiki/wiki_queue.js +137 -0
  86. package/dist/src/wiki/wiki_queue.js.map +1 -0
  87. package/openclaw.plugin.json +397 -18
  88. package/package.json +51 -5
  89. package/schema/graph.schema.yaml +330 -0
  90. package/scripts/cli.js +67 -13
  91. package/scripts/repair-memory.js +321 -0
  92. package/skills/cortex-memory/SKILL.md +83 -0
  93. package/skills/cortex-memory/references/agent-manual.md +127 -0
  94. package/skills/cortex-memory/references/configuration.md +109 -0
  95. package/skills/cortex-memory/references/publish-checklist.md +45 -0
  96. package/skills/cortex-memory/references/system-prompt-template.md +27 -0
  97. package/skills/cortex-memory/references/tools.md +191 -0
package/SIGNATURE.md ADDED
@@ -0,0 +1,7 @@
1
+ # Publisher Signature
2
+
3
+ - Maintainer: deki18
4
+ - Repository: https://github.com/deki18/openclaw-cortex-memory
5
+ - npm Package: https://www.npmjs.com/package/openclaw-cortex-memory
6
+ - ClawHub ID: openclaw-cortex-memory
7
+ - Signature Intent: This repository and published artifacts are maintained and released by deki18.
package/SKILL.md CHANGED
@@ -1,345 +1,96 @@
1
- ---
2
- name: cortex-memory
3
- description: 长期记忆系统(纯 TypeScript)。适用于历史对话回溯、偏好记忆、项目上下文延续与跨会话信息复用场景。
4
- homepage: https://github.com/deki18/openclaw-cortex-memory
5
- metadata:
6
- {
7
- "openclaw": {
8
- "emoji": "🧠",
9
- "os": ["darwin", "linux", "win32"],
10
- "requires": {
11
- "env": ["EMBEDDING_API_KEY", "LLM_API_KEY", "RERANKER_API_KEY"]
12
- },
13
- "primaryEnv": "EMBEDDING_API_KEY"
14
- }
15
- }
16
- ---
17
-
18
- # Cortex Memory · 长期记忆系统
19
-
20
- OpenClaw Agent 提供稳定的跨会话记忆能力。
21
-
22
- ## 使用场景
23
-
24
- **建议使用场景(USE when):**
25
- - 用户询问过去的对话内容或决策
26
- - 需要记住用户偏好、项目信息
27
- - 跨会话保持上下文
28
- - 查询实体关系(人物、项目、技术)
29
- - 存储重要事件或里程碑
30
-
31
- **不建议使用场景(DON'T use when):**
32
- - 仅需当前会话的临时信息
33
- - 查询实时数据(天气、新闻等)
34
-
35
- ## 快速开始
36
-
37
- ### 安装
38
-
39
- 命令前缀说明:
40
- - 若你是全局安装 OpenClaw,请直接使用 `openclaw ...`
41
- - 若你使用源码安装的 OpenClaw ,请使用 `pnpm openclaw ...`
42
-
43
- 快速安装(推荐,显式来源):
44
-
45
- ```bash
46
- cd ~/openclaw
47
- openclaw plugins install clawhub:openclaw-cortex-memory
48
- openclaw plugins enable openclaw-cortex-memory
49
- openclaw gateway restart
50
- ```
51
-
52
- npm 安装方式:
53
-
54
- ```bash
55
- cd ~/openclaw
56
- openclaw plugins install openclaw-cortex-memory@alpha
57
- openclaw plugins enable openclaw-cortex-memory
58
- openclaw gateway restart
59
- ```
60
-
61
- 第三种安装方式(当 ClawHub/npm 解析受网络影响时):
62
-
63
- ```bash
64
- curl -L -o /tmp/cortex.tgz https://registry.npmjs.org/openclaw-cortex-memory/-/openclaw-cortex-memory-0.1.0-Alpha.9.tgz
65
- cd ~/openclaw
66
- openclaw plugins install /tmp/cortex.tgz
67
- openclaw plugins enable openclaw-cortex-memory
68
- openclaw gateway restart
69
- rm -f /tmp/cortex.tgz
70
- ```
71
-
72
- ### 后续更新
73
-
74
- ```bash
75
- cd ~/openclaw
76
- openclaw plugins uninstall openclaw-cortex-memory
77
- openclaw plugins install clawhub:openclaw-cortex-memory
78
- openclaw plugins enable openclaw-cortex-memory
79
- openclaw gateway restart
80
- ```
81
-
82
- 说明:
83
- - 推荐显式安装来源,减少 ClawHub-first 时代的来源歧义。
84
- - 使用 `plugins install` 的安装记录方式,避免 `loaded without install/load-path provenance`。
85
- - 保持 `plugins.allow` 显式包含 `openclaw-cortex-memory`,避免运行时把插件判定为未绑定信任源。
86
- - 若 `plugins install openclaw-cortex-memory` 在 ClawHub 解析阶段失败,可使用上述 tgz 方式直接安装。
87
-
88
- ### 本地打包安装(源码模式)
89
-
90
- ```bash
91
- git clone https://github.com/deki18/openclaw-cortex-memory.git ~/openclaw-cortex-memory-src
92
- cd ~/openclaw-cortex-memory-src
93
- npm install && npm run build && npm pack
94
- cd ~/openclaw
95
- openclaw plugins install ~/openclaw-cortex-memory-src/openclaw-cortex-memory-0.1.0-Alpha.9.tgz
96
- openclaw gateway restart
97
- ```
98
-
99
- ### 本地开发模式(无安装记录)
100
-
101
- ```bash
102
- cd ~/.openclaw/extensions
103
- git clone https://github.com/deki18/openclaw-cortex-memory.git
104
- cd openclaw-cortex-memory
105
- npm install
106
- ```
107
-
108
- ### 配置
109
-
110
- 在 `openclaw.json` 中配置插件:
111
-
112
- ```json
113
- {
114
- "plugins": {
115
- "allow": ["openclaw-cortex-memory"],
116
- "slots": { "memory": "openclaw-cortex-memory" },
117
- "entries": {
118
- "openclaw-cortex-memory": {
119
- "enabled": true,
120
- "config": {
121
- "engineMode": "ts",
122
- "dbPath": "<optional-memory-dir>",
123
- "autoSync": true,
124
- "autoReflect": false,
125
- "autoReflectIntervalMinutes": 30,
126
- "readFusion": {
127
- "enabled": true,
128
- "authoritative": true
129
- },
130
- "memoryDecay": {
131
- "enabled": true,
132
- "antiDecay": {
133
- "enabled": true
134
- }
135
- },
136
- "embedding": {
137
- "provider": "api",
138
- "model": "text-embedding-3-large",
139
- "apiKey": "${EMBEDDING_API_KEY}",
140
- "baseURL": "https://your-embedding-endpoint/v1",
141
- "dimensions": 3072
142
- },
143
- "llm": {
144
- "provider": "api",
145
- "model": "gpt-4",
146
- "apiKey": "${LLM_API_KEY}",
147
- "baseURL": "https://your-llm-endpoint/v1"
148
- },
149
- "reranker": {
150
- "provider": "api",
151
- "model": "BAAI/bge-reranker-v2-m3",
152
- "apiKey": "${RERANKER_API_KEY}",
153
- "baseURL": "https://your-reranker-endpoint/v1/rerank"
154
- }
155
- }
156
- }
157
- }
158
- }
159
- }
160
- ```
161
-
162
- 关键功能开关(建议显式配置):
163
-
164
- - `readFusion.enabled`:开启多路召回后的 LLM 融合
165
- - `readFusion.authoritative`:仅返回融合后的权威记忆包
166
- - `memoryDecay.enabled`:开启按事件类型的半衰期衰减
167
- - `memoryDecay.antiDecay.enabled`:开启命中频次反衰减
168
- - `autoReflect`:建议验证稳定后再开启(默认 false)
169
-
170
- ### 启动
171
-
172
- ```bash
173
- openclaw config validate
174
- openclaw gateway restart
175
- ```
176
-
177
- ### 主Agent注入说明
178
-
179
- 首次接入后,建议把下面这段发给主 Agent,确保其按统一记忆工作流调用工具:
180
-
181
- ```text
182
- 你已接入 Cortex Memory。请遵循以下规则:
183
- 1) 当用户询问历史对话、偏好、项目上下文时,先调用 search_memory 再回答。
184
- 2) 需要当前会话热上下文时调用 get_hot_context。
185
- 3) 需要自动召回相关记忆时调用 get_auto_context。
186
- 4) 在一件重要事情结束并形成明确结果后,再调用 store_event 记录(不要在过程进行中频繁记录)。
187
- 5) 需要实体关联关系时调用 query_graph。
188
- 6) 当任务经历“失败→调整→最终成功”时,优先用 store_event 记录失败原因与成功方案,再调用 reflect_memory 沉淀可复用规则。
189
- 7) 需要导入历史会话时调用 sync_memory。
190
- 8) 当 diagnostics 显示 active/archive 存在未向量化记录,或迁移后需要重建向量层时,调用 backfill_embeddings(按需选择 incremental/vector_only/full)。
191
- 9) 出现配置校验失败、记忆读写异常、检索结果异常或数据目录问题时,优先调用 diagnostics。
192
- 10) 同一任务内不要反复调用 store_event 或 reflect_memory;仅在关键节点或任务收尾时触发一次。
193
- 11) 不要臆造历史事实;无法确认时必须先检索。
194
- ```
195
-
196
- ## 可用工具
197
-
198
- ### search_memory
199
-
200
- 语义搜索长期记忆。
201
-
202
- **参数:**
203
- | 参数 | 类型 | 必需 | 说明 |
204
- |------|------|------|------|
205
- | query | string | 是 | 搜索查询 |
206
- | top_k | number | 否 | 返回数量,默认 3 |
207
-
208
- ### store_event
209
-
210
- 写入事件摘要到归档记忆。
211
-
212
- **参数:**
213
- | 参数 | 类型 | 必需 | 说明 |
214
- |------|------|------|------|
215
- | summary | string | 是 | 事件摘要 |
216
- | entities | array | 否 | 相关实体列表 |
217
- | outcome | string | 否 | 事件结果 |
218
- | relations | array | 否 | 实体关系 |
219
-
220
- ### query_graph
221
-
222
- 查询归档事件中的实体关系(relations 优先,共现关系回退)。
223
-
224
- **参数:**
225
- | 参数 | 类型 | 必需 | 说明 |
226
- |------|------|------|------|
227
- | entity | string | 是 | 实体名称 |
228
- | rel | string | 否 | 关系类型过滤(如 `depends_on`) |
229
- | dir | string | 否 | 方向过滤:`incoming` / `outgoing` / `both` |
230
- | path_to | string | 否 | 查询从 `entity` 到目标实体的路径 |
231
- | max_depth | number | 否 | 路径最大深度(2~4) |
232
-
233
- ### get_hot_context
234
-
235
- 获取当前热上下文(CORTEX_RULES.md + 近期会话)。
236
-
237
- **参数:**
238
- | 参数 | 类型 | 必需 | 说明 |
239
- |------|------|------|------|
240
- | limit | number | 否 | 最大条目数,默认 20 |
241
-
242
- ### get_auto_context
243
-
244
- 自动检索相关记忆(基于近期消息)。
245
-
246
- **参数:**
247
- | 参数 | 类型 | 必需 | 说明 |
248
- |------|------|------|------|
249
- | include_hot | boolean | 否 | 包含热上下文,默认 true |
250
-
251
- ### reflect_memory
252
-
253
- 将归档事件反思为规则并写入 `CORTEX_RULES.md`。
254
-
255
- ### sync_memory
256
-
257
- 增量同步会话记录,且必须经 LLM 提取判定后才写入事件/图谱记忆(无参数)。
258
-
259
- ### backfill_embeddings
260
-
261
- 按层回填或重建向量,支持全文分块向量重建。
262
-
263
- **参数:**
264
- | 参数 | 类型 | 必需 | 说明 |
265
- |------|------|------|------|
266
- | layer | string | 否 | `active` / `archive` / `all` |
267
- | batch_size | number | 否 | 每批处理数量 |
268
- | max_retries | number | 否 | 失败重试上限 |
269
- | retry_failed_only | boolean | 否 | 仅处理失败记录 |
270
- | rebuild_mode | string | 否 | `incremental` / `vector_only` / `full` |
271
-
272
- ### delete_memory
273
-
274
- 删除指定记忆。
275
-
276
- **参数:**
277
- | 参数 | 类型 | 必需 | 说明 |
278
- |------|------|------|------|
279
- | memory_id | string | 是 | 记忆 ID |
280
-
281
- ### diagnostics
282
-
283
- 运行本地系统诊断,检查数据目录、分层状态与 embedding/LLM/reranker 连通性。
284
-
285
- ## 配置选项
286
-
287
- | 选项 | 必需 | 默认值 | 说明 |
288
- |------|------|--------|------|
289
- | embedding.provider | 是 | - | `api`(推荐) |
290
- | embedding.model | 是 | - | Embedding 模型名称 |
291
- | embedding.apiKey | 是 | ${EMBEDDING_API_KEY} | Embedding API Key |
292
- | embedding.baseURL | 是 | - | Embedding API 端点 |
293
- | llm.provider | 是 | - | `api`(推荐) |
294
- | llm.model | 是 | - | LLM 模型名称 |
295
- | llm.apiKey | 是 | ${LLM_API_KEY} | LLM API Key |
296
- | llm.baseURL | 是 | - | LLM API 端点 |
297
- | reranker.provider | 否 | - | `api`(推荐) |
298
- | reranker.model | 是 | - | Reranker 模型 |
299
- | reranker.apiKey | 是 | ${RERANKER_API_KEY} | Reranker API Key |
300
- | reranker.baseURL | 是 | - | Reranker API 端点 |
301
- | dbPath | 否 | `<plugin-dir>/data/memory` | 记忆目录路径 |
302
- | engineMode | 否 | `ts` | 固定为 TS 引擎 |
303
- | autoSync | 否 | true | 会话结束自动同步 |
304
- | autoReflect | 否 | false | 自动触发反思 |
305
- | autoReflectIntervalMinutes | 否 | 30 | 自动反思扫描间隔(分钟) |
306
- | readFusion.enabled | 否 | true | 启用检索重排后的 LLM 融合 |
307
- | readFusion.authoritative | 否 | true | 仅返回融合权威记忆包 |
308
- | memoryDecay.enabled | 否 | true | 启用按事件类型半衰期衰减 |
309
- | memoryDecay.antiDecay.enabled | 否 | true | 启用命中频次反衰减 |
310
-
311
- ## 数据文件
312
-
313
- | 路径 | 说明 |
314
- |------|------|
315
- | `<dbPath>/MEMORY.md` | 记忆说明文件 |
316
- | `<dbPath>/CORTEX_RULES.md` | 规则文件 |
317
- | `<dbPath>/sessions/active/sessions.jsonl` | 活跃会话记忆 |
318
- | `<dbPath>/sessions/archive/sessions.jsonl` | 归档事件 |
319
- | `<dbPath>/vector/lancedb` | LanceDB 向量表(可用时) |
320
- | `<dbPath>/vector/lancedb_events.jsonl` | 向量回退存储(LanceDB 不可用时) |
321
- | `<dbPath>/.sync_state.json` | 同步增量状态 |
322
- | `<dbPath>/.session_end_state.json` | session_end 幂等状态 |
323
- | `<dbPath>/.rule_store_state.json` | 规则去重状态 |
324
- | `<dbPath>/.dedup_index.json` | 三阶段去重索引 |
325
- | `<dbPath>/.read_hit_stats.json` | 检索命中频次统计(反衰减) |
326
- | `<dbPath>/graph/mutation_log.jsonl` | 图谱变更审计日志 |
327
-
328
- ## 错误处理
329
-
330
- | 错误代码 | 说明 | 处理方式 |
331
- |----------|------|----------|
332
- | E203 | 重复记忆 | 相似度 > 0.95,已跳过 |
333
- | E204 | 质量评分过低 | 信息密度不足,未存储 |
334
-
335
- ## 相关文件
336
-
337
- - `index.ts` - 插件入口与工具注册
338
- - `src/engine/ts_engine.ts` - TS 引擎实现
339
- - `src/store/read_store.ts` - 读取能力
340
- - `src/store/write_store.ts` - 写入能力
341
-
342
- ## 依赖
343
-
344
- - Node.js >= 22
345
- - EMBEDDING_API_KEY、LLM_API_KEY、RERANKER_API_KEY(或兼容 API 配置)
1
+ ---
2
+ name: cortex-memory
3
+ description: OpenClaw 长期记忆系统(TypeScript)。用于跨会话上下文复用、偏好记忆、历史追溯与图谱关系检索。
4
+ homepage: https://github.com/deki18/openclaw-cortex-memory
5
+ metadata:
6
+ {
7
+ "openclaw": {
8
+ "emoji": "🧠",
9
+ "os": ["darwin", "linux", "win32"],
10
+ "requires": {
11
+ "env": ["EMBEDDING_API_KEY", "LLM_API_KEY", "RERANKER_API_KEY"]
12
+ },
13
+ "primaryEnv": "EMBEDDING_API_KEY"
14
+ }
15
+ }
16
+ ---
17
+
18
+ # Cortex Memory
19
+
20
+ ## 使用场景
21
+
22
+ 推荐使用:
23
+ - 需要跨会话记住用户偏好、项目背景、历史决策
24
+ - 需要查询实体关系(依赖、上下游、关联)
25
+ - 需要把对话沉淀成可复用规则
26
+
27
+ 不建议使用:
28
+ - 仅当前会话的一次性临时信息
29
+ - 实时互联网数据查询(天气、新闻、股价)
30
+
31
+ ## 可用工具(与代码一致)
32
+
33
+ - `search_memory`
34
+ - `store_event`
35
+ - `query_graph`
36
+ - `export_graph_view`
37
+ - `lint_memory_wiki`
38
+ - `list_graph_conflicts`
39
+ - `resolve_graph_conflict`
40
+ - `get_hot_context`
41
+ - `get_auto_context`
42
+ - `reflect_memory`
43
+ - `sync_memory`
44
+ - `backfill_embeddings`
45
+ - `delete_memory`
46
+ - `cortex_diagnostics`
47
+
48
+ ### 参数速览
49
+
50
+ | 工具 | 关键参数 |
51
+ |------|------|
52
+ | `search_memory` | `query`, `top_k`, `fusion_mode`, `track_hits` |
53
+ | `store_event` | `summary`, `entities`, `entity_types`, `outcome`, `relations` |
54
+ | `query_graph` | `entity`, `rel`, `dir`, `path_to`, `max_depth` |
55
+ | `export_graph_view` | `write_snapshot` |
56
+ | `lint_memory_wiki` | 无 |
57
+ | `list_graph_conflicts` | `status`, `limit` |
58
+ | `resolve_graph_conflict` | `conflict_id`, `action`, `note` |
59
+ | `get_hot_context` | `limit` |
60
+ | `get_auto_context` | `include_hot` |
61
+ | `reflect_memory` | 无 |
62
+ | `sync_memory` | 无 |
63
+ | `backfill_embeddings` | `layer`, `batch_size`, `max_retries`, `retry_failed_only`, `rebuild_mode` |
64
+ | `cortex_diagnostics` | |
65
+ | `delete_memory` | `memory_id` |
66
+
67
+ ## 使用建议
68
+
69
+ 1. 回答历史问题前先调 `search_memory`。
70
+ 2. 涉及实体关系优先调 `query_graph`。
71
+ 3. 如命中冲突事实(`conflict_hint`),先调 `list_graph_conflicts`,再让用户确认后执行 `resolve_graph_conflict`。
72
+ 4. 需要图谱状态快照或排查投影不一致时,调 `export_graph_view` 与 `lint_memory_wiki`。
73
+ 5. 会话收尾或批量导入后再调 `sync_memory` / `reflect_memory`。
74
+ 6. 诊断发现向量缺失时调 `backfill_embeddings`。
75
+ 7. 调试检索时可用 `fusion_mode: "candidates"` 保留候选明细;评测或诊断时可用 `track_hits: false` 避免更新 anti-decay 命中统计。
76
+
77
+ ## 配置策略
78
+
79
+ 先用最小配置跑通:`embedding`、`llm`、`reranker` + `autoSync`。
80
+ 高级项(`readFusion`、`memoryDecay`、`vectorChunking`、`writePolicy`、`syncPolicy`、`readTuning`)都有默认值,不需要一开始就调整。历史导入的图谱质量门禁默认使用 `syncPolicy.graphQualityMode: "strict"`,手动写入仍可按全局 `graphQualityMode` 调整。
81
+
82
+ ## 安全与端点声明
83
+
84
+ - 本插件需要外部端点:`/embeddings`、`/chat/completions`、`/rerank`
85
+ - 凭证来源:环境变量或插件配置中的 `*.apiKey`
86
+ - 仅发送推理所需文本片段,不主动上传本地配置文件全集或环境变量全集
87
+
88
+ ## 关键事实
89
+
90
+ - `backfill_embeddings` 已实现且已注册。
91
+ - `query_graph` 支持参数:`entity`、`rel`、`dir`、`path_to`、`max_depth`。
92
+ - `query_graph` 会返回 `wiki_refs`、`evidence_ids`,冲突时返回 `conflict_hint`。
93
+ - `search_memory` 兼容返回 `vector_semantic_results` / `vector_keyword_results`,并额外返回 `channel_results`,其中 `keyword` 是跨 archive/rules/graph/vector 的全局关键词通道。
94
+ - Wiki 是图谱关系的投影页,不是第二套记忆库;`search_memory` 命中图谱事实时可返回 `wiki_ref` / `wiki_refs` 展示链接,但事实读取以 graph 存储为准。
95
+ - 图谱治理工具:`export_graph_view`、`lint_memory_wiki`、`list_graph_conflicts`、`resolve_graph_conflict`。
96
+ - Wiki 投影页应包含结论、近期变化、状态分组/事件流和证据摘录;`lint_memory_wiki` 会检查缺失结构与旧式泛化 Summary。
package/dist/index.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import type { EngineMode } from "./src/engine/types";
2
1
  interface EmbeddingConfig {
3
2
  provider: string;
4
3
  model: string;
@@ -25,13 +24,21 @@ interface RerankerConfig {
25
24
  }
26
25
  interface CortexMemoryConfig {
27
26
  enabled?: boolean;
27
+ fallbackToBuiltin?: boolean;
28
28
  embedding: EmbeddingConfig;
29
29
  llm: LLMConfig;
30
30
  reranker: RerankerConfig;
31
31
  dbPath?: string;
32
32
  autoSync?: boolean;
33
+ llmRequiredForWrite?: boolean;
33
34
  autoReflect?: boolean;
34
35
  autoReflectIntervalMinutes?: number;
36
+ graphQualityMode?: "off" | "warn" | "strict";
37
+ wikiProjection?: {
38
+ enabled?: boolean;
39
+ mode?: "off" | "incremental" | "rebuild";
40
+ maxBatch?: number;
41
+ };
35
42
  readFusion?: {
36
43
  enabled?: boolean;
37
44
  maxCandidates?: number;
@@ -60,6 +67,19 @@ interface CortexMemoryConfig {
60
67
  vectorChunking?: {
61
68
  chunkSize?: number;
62
69
  chunkOverlap?: number;
70
+ evidenceMaxChunks?: number;
71
+ };
72
+ writePolicy?: {
73
+ archiveMinConfidence?: number;
74
+ archiveMinQualityScore?: number;
75
+ activeMinQualityScore?: number;
76
+ activeDedupTailLines?: number;
77
+ activeTextMaxChars?: number;
78
+ archiveSourceTextMaxChars?: number;
79
+ };
80
+ syncPolicy?: {
81
+ includeLocalActiveInput?: boolean;
82
+ graphQualityMode?: "off" | "warn" | "strict";
63
83
  };
64
84
  memoryDecay?: {
65
85
  enabled?: boolean;
@@ -73,26 +93,38 @@ interface CortexMemoryConfig {
73
93
  recentWindowDays?: number;
74
94
  };
75
95
  };
76
- fallbackToBuiltin?: boolean;
77
- apiUrl?: string;
78
- engineMode?: EngineMode;
96
+ readTuning?: {
97
+ scoring?: {
98
+ lexicalWeight?: number;
99
+ bm25Scale?: number;
100
+ semanticWeight?: number;
101
+ recencyWeight?: number;
102
+ qualityWeight?: number;
103
+ typeMatchWeight?: number;
104
+ graphMatchWeight?: number;
105
+ };
106
+ rrf?: {
107
+ k?: number;
108
+ weight?: number;
109
+ };
110
+ recency?: {
111
+ buckets?: Array<{
112
+ maxAgeHours: number;
113
+ score: number;
114
+ bonus: number;
115
+ }>;
116
+ };
117
+ autoContext?: {
118
+ queryMaxChars?: number;
119
+ lightweightSearch?: boolean;
120
+ };
121
+ };
79
122
  }
80
123
  interface ToolContext {
81
124
  agentId: string;
82
125
  sessionId?: string;
83
126
  workspaceId: string;
84
127
  }
85
- interface ToolResult {
86
- success: boolean;
87
- data?: unknown;
88
- error?: string;
89
- errorCode?: string;
90
- }
91
- interface BuiltinMemory {
92
- search: (query: string, limit?: number) => Promise<unknown[]>;
93
- store: (content: string, metadata?: Record<string, unknown>) => Promise<string>;
94
- delete: (id: string) => Promise<boolean>;
95
- }
96
128
  interface Logger {
97
129
  debug: (message: string, ...args: unknown[]) => void;
98
130
  info: (message: string, ...args: unknown[]) => void;
@@ -100,15 +132,17 @@ interface Logger {
100
132
  error: (message: string, ...args: unknown[]) => void;
101
133
  }
102
134
  interface OpenClawPluginApi {
135
+ logger?: Logger;
136
+ config?: Record<string, unknown>;
137
+ pluginConfig?: Record<string, unknown>;
103
138
  registerTool(tool: {
104
139
  name: string;
105
140
  description: string;
106
141
  parameters: Record<string, unknown>;
107
- execute?: (params: {
108
- args?: Record<string, unknown>;
109
- context: ToolContext;
110
- }) => Promise<ToolResult>;
111
- handler?: (...params: unknown[]) => Promise<ToolResult>;
142
+ execute?: (...params: unknown[]) => Promise<unknown>;
143
+ handler?: (...params: unknown[]) => Promise<unknown>;
144
+ }, options?: {
145
+ optional?: boolean;
112
146
  }): void;
113
147
  unregisterTool?(name: string): void;
114
148
  registerHook(hook: {
@@ -121,15 +155,27 @@ interface OpenClawPluginApi {
121
155
  off?(event: string, handler: (payload: unknown, context: ToolContext) => Promise<void> | void): void;
122
156
  unregisterHook?(event: string): void;
123
157
  getLogger?(): Logger;
124
- getBuiltinMemory?(): BuiltinMemory;
158
+ getBuiltinMemory?(): {
159
+ search: (query: string, topK?: number) => Promise<unknown[]>;
160
+ store: (text: string, metadata?: Record<string, unknown>) => Promise<string>;
161
+ delete: (id: string) => Promise<boolean>;
162
+ } | null;
125
163
  }
126
164
  export declare function enable(): Promise<void>;
127
165
  export declare function disable(): Promise<void>;
128
166
  export declare function getStatus(): {
129
167
  enabled: boolean;
130
- serviceRunning: boolean;
131
168
  };
132
169
  export declare function unregister(): Promise<void>;
133
170
  export declare function register(pluginApi: OpenClawPluginApi, userConfig?: Partial<CortexMemoryConfig>): void;
134
- export {};
171
+ declare const pluginEntry: {
172
+ id: string;
173
+ name: string;
174
+ register: typeof register;
175
+ unregister: typeof unregister;
176
+ enable: typeof enable;
177
+ disable: typeof disable;
178
+ getStatus: typeof getStatus;
179
+ };
180
+ export default pluginEntry;
135
181
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}