@pcircle/memesh 4.1.7 → 4.2.0

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 (127) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.de.md +43 -8
  4. package/README.es.md +77 -15
  5. package/README.fr.md +44 -9
  6. package/README.ja.md +78 -15
  7. package/README.ko.md +81 -18
  8. package/README.md +7 -5
  9. package/README.pt.md +43 -8
  10. package/README.th.md +41 -6
  11. package/README.vi.md +43 -8
  12. package/README.zh-CN.md +78 -15
  13. package/README.zh-TW.md +107 -44
  14. package/dashboard/dist/index.html +8 -8
  15. package/dist/cli/view-live.js +2 -2
  16. package/dist/cli/view.d.ts.map +1 -1
  17. package/dist/cli/view.js +8 -11
  18. package/dist/cli/view.js.map +1 -1
  19. package/dist/core/auto-tagger.d.ts +7 -2
  20. package/dist/core/auto-tagger.d.ts.map +1 -1
  21. package/dist/core/auto-tagger.js +12 -4
  22. package/dist/core/auto-tagger.js.map +1 -1
  23. package/dist/core/config.d.ts +2 -0
  24. package/dist/core/config.d.ts.map +1 -1
  25. package/dist/core/config.js +19 -11
  26. package/dist/core/config.js.map +1 -1
  27. package/dist/core/consolidator.d.ts.map +1 -1
  28. package/dist/core/consolidator.js +13 -4
  29. package/dist/core/consolidator.js.map +1 -1
  30. package/dist/core/digest-validator.d.ts +18 -0
  31. package/dist/core/digest-validator.d.ts.map +1 -0
  32. package/dist/core/digest-validator.js +79 -0
  33. package/dist/core/digest-validator.js.map +1 -0
  34. package/dist/core/doctor.d.ts.map +1 -1
  35. package/dist/core/doctor.js +28 -11
  36. package/dist/core/doctor.js.map +1 -1
  37. package/dist/core/dreamer.d.ts +8 -1
  38. package/dist/core/dreamer.d.ts.map +1 -1
  39. package/dist/core/dreamer.js +68 -14
  40. package/dist/core/dreamer.js.map +1 -1
  41. package/dist/core/embedder.d.ts.map +1 -1
  42. package/dist/core/embedder.js +2 -2
  43. package/dist/core/embedder.js.map +1 -1
  44. package/dist/core/extractor.d.ts.map +1 -1
  45. package/dist/core/extractor.js +2 -1
  46. package/dist/core/extractor.js.map +1 -1
  47. package/dist/core/failure-analyzer.d.ts +6 -1
  48. package/dist/core/failure-analyzer.d.ts.map +1 -1
  49. package/dist/core/failure-analyzer.js +10 -2
  50. package/dist/core/failure-analyzer.js.map +1 -1
  51. package/dist/core/install-hooks.d.ts.map +1 -1
  52. package/dist/core/install-hooks.js +1 -7
  53. package/dist/core/install-hooks.js.map +1 -1
  54. package/dist/core/install-id.d.ts.map +1 -1
  55. package/dist/core/install-id.js +2 -3
  56. package/dist/core/install-id.js.map +1 -1
  57. package/dist/core/kg-backfill.d.ts +30 -0
  58. package/dist/core/kg-backfill.d.ts.map +1 -0
  59. package/dist/core/kg-backfill.js +197 -0
  60. package/dist/core/kg-backfill.js.map +1 -0
  61. package/dist/core/llm-client.d.ts +13 -0
  62. package/dist/core/llm-client.d.ts.map +1 -1
  63. package/dist/core/llm-client.js +63 -3
  64. package/dist/core/llm-client.js.map +1 -1
  65. package/dist/core/llm-telemetry.d.ts +35 -0
  66. package/dist/core/llm-telemetry.d.ts.map +1 -0
  67. package/dist/core/llm-telemetry.js +96 -0
  68. package/dist/core/llm-telemetry.js.map +1 -0
  69. package/dist/core/llm-validator.d.ts.map +1 -1
  70. package/dist/core/llm-validator.js +3 -3
  71. package/dist/core/llm-validator.js.map +1 -1
  72. package/dist/core/operations.d.ts.map +1 -1
  73. package/dist/core/operations.js +4 -35
  74. package/dist/core/operations.js.map +1 -1
  75. package/dist/core/paths.d.ts +6 -0
  76. package/dist/core/paths.d.ts.map +1 -0
  77. package/dist/core/paths.js +27 -0
  78. package/dist/core/paths.js.map +1 -0
  79. package/dist/core/prompt-safety.d.ts.map +1 -1
  80. package/dist/core/prompt-safety.js.map +1 -1
  81. package/dist/core/scoring.d.ts +5 -0
  82. package/dist/core/scoring.d.ts.map +1 -1
  83. package/dist/core/scoring.js +8 -0
  84. package/dist/core/scoring.js.map +1 -1
  85. package/dist/core/serializer.js +1 -1
  86. package/dist/core/serializer.js.map +1 -1
  87. package/dist/core/skill-usage-log.js +2 -2
  88. package/dist/core/skill-usage-log.js.map +1 -1
  89. package/dist/core/types.d.ts +2 -2
  90. package/dist/core/types.d.ts.map +1 -1
  91. package/dist/core/verifier.d.ts.map +1 -1
  92. package/dist/core/verifier.js +4 -4
  93. package/dist/core/verifier.js.map +1 -1
  94. package/dist/core/version-check.d.ts.map +1 -1
  95. package/dist/core/version-check.js +4 -3
  96. package/dist/core/version-check.js.map +1 -1
  97. package/dist/db.d.ts.map +1 -1
  98. package/dist/db.js +71 -14
  99. package/dist/db.js.map +1 -1
  100. package/dist/knowledge-graph.d.ts +1 -1
  101. package/dist/knowledge-graph.d.ts.map +1 -1
  102. package/dist/knowledge-graph.js +1 -1
  103. package/dist/knowledge-graph.js.map +1 -1
  104. package/dist/skills-manifest.json +16 -16
  105. package/dist/storage/fts-index.js +1 -1
  106. package/dist/storage/fts-index.js.map +1 -1
  107. package/dist/transports/cli/cli.js +118 -6
  108. package/dist/transports/cli/cli.js.map +1 -1
  109. package/dist/transports/http/server.d.ts.map +1 -1
  110. package/dist/transports/http/server.js +192 -24
  111. package/dist/transports/http/server.js.map +1 -1
  112. package/dist/transports/mcp/handlers.d.ts +1 -1
  113. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  114. package/dist/transports/mcp/handlers.js +1 -1
  115. package/dist/transports/mcp/handlers.js.map +1 -1
  116. package/package.json +2 -2
  117. package/scripts/hooks/_shared.js +177 -14
  118. package/scripts/hooks/post-commit.js +50 -8
  119. package/scripts/hooks/pre-bash-orchestration-nudge.js +8 -3
  120. package/scripts/hooks/pre-compact.js +13 -16
  121. package/scripts/hooks/pre-edit-recall.js +28 -13
  122. package/scripts/hooks/session-start.js +194 -184
  123. package/scripts/hooks/session-summary.js +377 -41
  124. package/dist/core/query-expander.d.ts +0 -4
  125. package/dist/core/query-expander.d.ts.map +0 -1
  126. package/dist/core/query-expander.js +0 -53
  127. package/dist/core/query-expander.js.map +0 -1
package/README.zh-CN.md CHANGED
@@ -1,6 +1,3 @@
1
- <!-- translated from README.md @ ab9d25f8d9cb7c78c4cc271717709e2efb4bac76 -->
2
- <!-- DO NOT edit this file by hand. The maintainer regenerates it from README.md via a private toolkit script (see internal docs). Manual edits will be overwritten on next sync. -->
3
-
4
1
  🌐 [English](README.md) | [繁體中文](README.zh-TW.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [Português](README.pt.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Tiếng Việt](README.vi.md) | [Español](README.es.md) | [ภาษาไทย](README.th.md)
5
2
 
6
3
  <p align="center">
@@ -29,17 +26,52 @@
29
26
 
30
27
  ---
31
28
 
29
+ ## 实测数据 — LongMemEval-S 上 R@5 达到 95.40%
30
+
31
+ MeMesh 的检索引擎**只用 FTS5**(热路径上没有 LLM、也没有 embeddings),在公开的 [LongMemEval-S](https://huggingface.co/datasets/xiaowu0162/longmemeval) 基准(500 道题,MIT 许可)上的实测结果:
32
+
33
+ | 系统 | R@5 | 来源 |
34
+ |---|---|---|
35
+ | **MeMesh (Mode A, FTS5)** | **95.40%** | [benchmarks/longmemeval/RESULTS.md](benchmarks/longmemeval/RESULTS.md) |
36
+ | MemPalace | 96.6% | 厂商自报 |
37
+ | Supermemory | ~82% | 厂商估计 |
38
+ | Zep | 63.8% | LongMemEval 论文 |
39
+ | Mem0 | 49.0% | LongMemEval 论文 |
40
+
41
+ 复现命令、数据集 SHA256、每题原始结果以及已知失败分析全部放在 [`benchmarks/longmemeval/`](benchmarks/longmemeval/) 中。约 10 秒可重跑。
42
+
43
+ ---
44
+
32
45
  ## 60 秒快速开始
33
46
 
34
- ### 第一步:安装
47
+ ### 选项 A — Claude Code 插件(一行安装)
48
+
49
+ 如果你使用 Claude Code,可以直接在 CLI 内把 MeMesh 作为插件安装:
50
+
51
+ ```
52
+ /plugin marketplace add PCIRCLE-AI/memesh-llm-memory
53
+ /plugin install memesh@pcircle-memesh
54
+ ```
55
+
56
+ Claude Code 会自动接好 hooks、skills 以及 MCP server。你将获得会话内自动捕获、主动回忆、Claude Code 对话内的 `/memesh` skill(remember / recall / learn / forget),并且 `remember` / `recall` / `forget` / `learn` 也以 MCP 工具提供给代理使用。CLI 和本地仪表板也都无需额外全局安装即可访问 — `npx @pcircle/memesh <command>` 可以执行所有 CLI 命令,`npx @pcircle/memesh` 会在 `localhost:3737` 启动仪表板。MCP server 沿用 Anthropic 官方插件(如 `context7`)相同的 `npx` 启动模式,所以任何功能都不需要 `npm install -g`。
57
+
58
+ ### 选项 B — npm 全局安装(可选优化)
59
+
60
+ 如果你想把二进制直接放在 shell `PATH` 上(这样 `memesh`、`memesh-mcp` 等可在任意终端中直接使用,不需要每次都走 `npx` 查找),或者你想把 `memesh-mcp` 作为固定路径 stdio 命令暴露给**非 Claude Code 的 MCP 客户端**(Cursor、Cline、纯终端流程):
35
61
 
36
62
  ```bash
37
63
  npm install -g @pcircle/memesh
38
64
  ```
39
65
 
40
- ### 第一步半:把 MeMesh 接入 Claude Code(推荐,一次性)
66
+ > **首次安装注意事项(一次性):**
67
+ > - **原生模块** — `better-sqlite3` 和 `sqlite-vec` 在 macOS(arm64/x64)、Linux(x64/arm64)和 Windows x64 上均通过预构建二进制安装。在不常见的平台或预构建失败时,需要可用的 C/C++ 工具链。
68
+ > - **embedding 模型** — 第一次触发本地 embedding 的调用(例如带语义模式的 `recall`)会下载 `Xenova/all-MiniLM-L6-v2`(~80 MB)到 `~/.memesh/models/`。后续调用是即时的。默认检索路径(FTS5)不需要这个下载。
41
69
 
42
- `npm install -g` 把 CLI 放进 PATH 并注册 MCP server,但**不会**自动接上 MeMesh Claude Code session hooks。没有这些 hooks,你还是可以手动用 `memesh remember` / `recall`,但**自动捕捉循环**(session → 教训 → 下次 session 主动回想)就会静默不动。
70
+ ### 第一步半:把 MeMesh 接入 Claude Code(仅 npm 路径)
71
+
72
+ 如果你通过**选项 A**(`/plugin install memesh@pcircle-memesh`)安装,跳过这一步 — Claude Code 会自动接好插件 hooks。
73
+
74
+ 如果你通过**选项 B**(`npm install -g`)安装,CLI 已经在 PATH 上、MCP server 也已注册,但 Claude Code session hooks 不会自动接上。没有这些 hooks,你仍然可以手动用 `memesh remember` / `recall`,但**自动捕捉循环**(session → 教训 → 下次 session 主动回想)就会静默不动。
43
75
 
44
76
  ```bash
45
77
  memesh install-hooks # 把 memesh hooks 加到 ~/.claude/settings.json
@@ -50,6 +82,14 @@ memesh doctor # 确认「Hooks wired into Claude Code」通过
50
82
 
51
83
  ### 第二步:记录一个决策
52
84
 
85
+ > 下面的 bash 示例假设 `memesh` 已在你的 `PATH` 上(选项 B)。选项 A(仅插件)用户有两条等价路径:在 Claude Code 对话内询问(`/memesh` skill + MCP 工具覆盖相同流程),或在任意 shell 中把 `memesh` 替换成 `npx @pcircle/memesh` — 参数完全相同,无需全局安装。
86
+
87
+ ```bash
88
+ memesh remember "Use OAuth 2.0 with PKCE for the new auth"
89
+ ```
90
+
91
+ 或在你想要稳定名称和类型用于后续过滤时使用显式形式:
92
+
53
93
  ```bash
54
94
  memesh remember --name "auth-decision" --type "decision" --obs "Use OAuth 2.0 with PKCE"
55
95
  ```
@@ -157,13 +197,14 @@ memesh export-schema \
157
197
 
158
198
  ## Claude Code 中的自动化流程
159
199
 
160
- 你不需要手动记住一切。MeMesh 有 **6 个钩子**在你工作时自动捕获和注入知识:
200
+ 你不需要手动记住一切。MeMesh 有 **7 个钩子**在你工作时自动捕获和注入知识:
161
201
 
162
202
  | 触发条件 | MeMesh 的动作 |
163
203
  |---------|------------|
164
- | **每个会话开始** | 加载最相关的记忆 + 来自过去经验教训的主动警告 + 代理编排横幅 |
204
+ | **每个会话开始** | 加载最相关的记忆 + 来自过去经验教训的主动警告 |
165
205
  | **编辑文件前** | 回忆与该文件或项目相关的记忆,然后 Claude 才开始写代码 |
166
- | **执行 bash 命令前** | 推动 Claude 派遣高可验证性命令(测试、构建、lint、迁移、部署、基准测试)作为后台代理 |
206
+ | **执行 bash 命令前** | (可选启用)推动 Claude 派遣高可验证性命令(测试、构建、lint、迁移、部署、基准测试)作为后台代理 |
207
+ | **当你要求记忆时** | 检测「remember this」/「guardar en memesh」/「sauvegarder dans memesh」/「记下来」意图(5 种语言),并提醒 Claude 使用 memesh |
167
208
  | **每次 `git commit` 后** | 记录你的改动,附带 diff 统计 |
168
209
  | **Claude 停止时** | 捕获编辑过的文件、修复的错误、自动从失败中生成结构化经验教训 |
169
210
  | **上下文压缩前** | 在知识被上下文限制吞没前保存 |
@@ -172,6 +213,26 @@ memesh export-schema \
172
213
 
173
214
  ---
174
215
 
216
+ ## 配置
217
+
218
+ 所有配置都通过环境变量。默认值为本地、零网络 — 无需设置任何东西即可获得可用系统。
219
+
220
+ | 变量 | 默认 | 作用 |
221
+ |---|---|---|
222
+ | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | 覆盖 SQLite 数据库位置。 |
223
+ | `MEMESH_AUTO_CAPTURE` | `true` | 完全禁用自动捕获 hooks(`Stop`、`PreCompact`)。 |
224
+ | `MEMESH_AUTO_DETECT_LLM` | 未设置 | 设为 `1` 让 memesh 从 shell 环境(`OPENAI_API_KEY` 等)自动检测提供商并切换到 BYOK embeddings。**全新安装的默认值是仅本地 ONNX(384 维)** — 想用云端 embeddings 时再开启。未设置此 flag 时,shell 中残留的 `OPENAI_API_KEY` 会被忽略。 |
225
+ | `MEMESH_ENABLE_AGENTIC_ORCHESTRATION` | 未设置 | 设为 `1` 启用一个实验性工作模型协议(CTO / Orchestrator / Agents 框架)。会增加一个 session-start 横幅、Bash 命令提示,以及 `verify_agent_work` 遥测。该协议的有效性正在被检测中、尚未被证实 — 想参与实验时再开启。**默认 OFF**:核心内存功能不依赖此 flag。 |
226
+ | `MEMESH_AUTO_UPDATE` | `off` | 自动升级策略。`off`(默认)从不自动升级;`patch` 允许 `X.Y.Z → X.Y.Z+N`;`minor` 增加 `X.Y.Z → X.Y+1.0`;`major` 允许任意版本跳升。允许时,一个分离的 `npm install -g` 会在会话结束(Stop hook)触发,所以从不阻塞你的工作 — 结果落在 `~/.memesh/auto-update.log`。也可以在 `~/.memesh/config.json` 里写为 `autoUpdate`(环境变量优先)。当已安装版本被维护者标记为 deprecated(安全建议)时,`patch` 会被强制允许,即便策略是 `off` — minor / major 升级仍保持手动,避免行为静默漂移。 |
227
+ | `OPENAI_API_KEY` | 未设置 | 你的 OpenAI 密钥。仅在 `MEMESH_AUTO_DETECT_LLM=1` 或你显式配置提供商时使用。 |
228
+ | `OLLAMA_HOST` | `http://localhost:11434` | 使用本地 Ollama 提供商时覆盖 Ollama 端点。 |
229
+
230
+ `memesh doctor` 会打印解析后的配置,你可以看到当前生效的内容。
231
+
232
+ 当 npm 把已安装版本标记为 deprecated(通常为安全建议)时,下次 session-start 会先显示一条强烈的 `⚠️ MeMesh <ver> is DEPRECATED` 横幅,并且 `memesh update-status` 在你升级前会持续显示同一行。检查结果会缓存到 `~/.memesh/update-check.<version>.json`,避免一次临时网络故障让警告变弱。
233
+
234
+ ---
235
+
175
236
  ## 仪表板
176
237
 
177
238
  7 个标签页,11 种语言,零外部依赖。服务器运行时访问 `http://localhost:3737/dashboard`。
@@ -190,7 +251,7 @@ memesh export-schema \
190
251
 
191
252
  ## 聪慧功能
192
253
 
193
- **🧠 智能搜索** — 搜索"登录安全"会找到"OAuth PKCE"相关的记忆。MeMesh 用你配置的 LLM 扩展查询。
254
+ **🧠 智能搜索** — 搜索"登录安全"也能找到"OAuth PKCE"相关的记忆。MeMesh 在热路径上用 FTS5 + sqlite-vec,零 LLM
194
255
 
195
256
  **📊 评分排序** — 结果按相关性(30%)+ 新近度(25%)+ 频率(15%)+ 置信度(15%)+ 回忆影响(10%)+ 时间有效性(5%)排序。
196
257
 
@@ -218,7 +279,7 @@ memesh export-schema \
218
279
 
219
280
  ## 解锁智能模式(可选)
220
281
 
221
- MeMesh 默认离线工作。仅当你需要查询扩展、更聪慧的提取和压缩时,才添加 LLM API 密钥:
282
+ MeMesh 默认离线工作 — 回忆始终是严格无 LLM 的(开箱即用 LongMemEval-S R@5 95.40%)。仅当你想要在此之上叠加 LLM 增强分析流程时才添加 LLM API 密钥:更聪慧的会话提取、为新记忆自动打标签、从失败生成经验教训,以及 `consolidate` / `dream` 压缩:
222
283
 
223
284
  ```bash
224
285
  memesh config set llm.provider anthropic
@@ -233,10 +294,12 @@ memesh # 打开仪表板 → 设置标签页
233
294
 
234
295
  | | 级别 0(默认) | 级别 1(智能模式) |
235
296
  |---|---|---|
236
- | **搜索** | FTS5 关键词匹配 | + LLM 查询扩展(~97% 召回率) |
297
+ | **搜索** | FTS5 + sqlite-vec,95.40% R@5(每次查询 ~18ms) | 不变 — 回忆在每个级别都是无 LLM |
237
298
  | **自动捕获** | 基于规则的模式 | + LLM 提取决策和经验教训 |
238
- | **压缩** | 不可用 | `consolidate` 压缩冗长的记忆 |
239
- | **成本** | 免费,无需 API 密钥 | ~$0.0001 每次搜索(Haiku) |
299
+ | **自动打标签** | 仅手动标签 | + LLM 为新记忆生成标签 |
300
+ | **失败分析** | 不可用 | + LLM 把会话错误转化为结构化经验教训 |
301
+ | **压缩** | 不可用 | `consolidate` + `dream` 压缩冗长的记忆 |
302
+ | **成本** | 免费,无需 API 密钥 | ~$0.0001 每次分析调用(Haiku) |
240
303
 
241
304
  ---
242
305
 
@@ -245,7 +308,7 @@ memesh # 打开仪表板 → 设置标签页
245
308
  | 工具 | 它做什么 |
246
309
  |------|--------|
247
310
  | `remember` | 存储知识,附带观察、关系和标签 |
248
- | `recall` | 智能搜索,多因素评分和 LLM 查询扩展 |
311
+ | `recall` | FTS5 + sqlite-vec 搜索,附带多因素评分(相关性、新近度、频率、置信度、时间有效性)— 热路径上无 LLM |
249
312
  | `forget` | 软归档(永不删除)或移除特定观察 |
250
313
  | `consolidate` | LLM 驱动的冗长记忆压缩 |
251
314
  | `export` | 在项目或团队成员间共享内存,格式为 JSON |
package/README.zh-TW.md CHANGED
@@ -1,6 +1,3 @@
1
- <!-- translated from README.md @ ab9d25f8d9cb7c78c4cc271717709e2efb4bac76 -->
2
- <!-- DO NOT edit this file by hand. The maintainer regenerates it from README.md via a private toolkit script (see internal docs). Manual edits will be overwritten on next sync. -->
3
-
4
1
  🌐 [English](README.md) | [繁體中文](README.zh-TW.md) | [简体中文](README.zh-CN.md) | [日本語](README.ja.md) | [한국어](README.ko.md) | [Português](README.pt.md) | [Français](README.fr.md) | [Deutsch](README.de.md) | [Tiếng Việt](README.vi.md) | [Español](README.es.md) | [ภาษาไทย](README.th.md)
5
2
 
6
3
  <p align="center">
@@ -29,27 +26,70 @@
29
26
 
30
27
  ---
31
28
 
29
+ ## 實證 — 在 LongMemEval-S 上 R@5 達 95.40%
30
+
31
+ MeMesh 的檢索引擎**只用 FTS5**(熱路徑上不使用 LLM、不使用嵌入),對照公開的 [LongMemEval-S](https://huggingface.co/datasets/xiaowu0162/longmemeval) 基準測試(500 題,MIT 授權)量測:
32
+
33
+ | 系統 | R@5 | 來源 |
34
+ |---|---|---|
35
+ | **MeMesh(Mode A,FTS5)** | **95.40%** | [benchmarks/longmemeval/RESULTS.md](benchmarks/longmemeval/RESULTS.md) |
36
+ | MemPalace | 96.6% | 廠商自行回報 |
37
+ | Supermemory | ~82% | 廠商估計值 |
38
+ | Zep | 63.8% | LongMemEval 論文 |
39
+ | Mem0 | 49.0% | LongMemEval 論文 |
40
+
41
+ 重現指令、資料集 SHA256、原始逐題結果與已知失敗分析全部都在 [`benchmarks/longmemeval/`](benchmarks/longmemeval/)。約 10 秒可重跑一次。
42
+
43
+ ---
44
+
32
45
  ## 60 秒快速開始
33
46
 
34
- ### 第一步:安裝
47
+ ### 選項 A — Claude Code 外掛(一行安裝)
48
+
49
+ 如果你使用 Claude Code,從 CLI 內把 MeMesh 當外掛安裝:
50
+
51
+ ```
52
+ /plugin marketplace add PCIRCLE-AI/memesh-llm-memory
53
+ /plugin install memesh@pcircle-memesh
54
+ ```
55
+
56
+ Claude Code 會自動接好 hooks、skills 和 MCP server。你會獲得對話內自動擷取、主動回憶、可在 Claude Code 對話中使用的 `/memesh` skill(remember / recall / learn / forget),以及代理可呼叫的 `remember` / `recall` / `forget` / `learn` MCP 工具。CLI 與本地儀表板無需任何額外的全域安裝就能完整使用 — `npx @pcircle/memesh <command>` 可執行所有 CLI 指令,`npx @pcircle/memesh` 可在 `localhost:3737` 啟動儀表板。MCP server 採用與 Anthropic 官方外掛(例如 `context7`)相同的 `npx` 啟動模式,因此任何功能都不需要 `npm install -g`。
57
+
58
+ ### 選項 B — npm 全域安裝(可選最佳化)
59
+
60
+ 如果你希望二進位執行檔直接放在 shell `PATH` 上(讓 `memesh`、`memesh-mcp` 等指令能在任何終端機直接執行,省去每次呼叫的 `npx` 查找),或想將 `memesh-mcp` 以固定路徑的 stdio 指令暴露給**非 Claude Code 的 MCP 用戶端**(Cursor、Cline、純終端機流程):
35
61
 
36
62
  ```bash
37
63
  npm install -g @pcircle/memesh
38
64
  ```
39
65
 
40
- ### 第一步半:把 MeMesh 接進 Claude Code(建議,一次性)
66
+ > **首次安裝注意事項(一次性):**
67
+ > - **原生模組** — `better-sqlite3` 與 `sqlite-vec` 在 macOS(arm64/x64)、Linux(x64/arm64)和 Windows x64 上會以預先編譯的二進位安裝。在較少見的平台或預編譯失敗時,你需要可運作的 C/C++ 工具鏈。
68
+ > - **嵌入模型** — 第一次觸發本地嵌入的呼叫(例如 semantic 模式的 `recall`)會把 `Xenova/all-MiniLM-L6-v2`(約 80 MB)下載到 `~/.memesh/models/`。後續呼叫即時生效。預設的檢索路徑(FTS5)不需要這個下載。
41
69
 
42
- `npm install -g` 把 CLI 放上 PATH 並註冊 MCP server,但**不會**自動接上 MeMesh Claude Code session hooks。沒有這些 hooks,你還是可以手動用 `memesh remember` / `recall`,但**自動捕捉迴路**(session → 教訓 → 下次 session 主動回憶)就會靜默不動。
70
+ ### 第一步半:把 MeMesh 接進 Claude Code(僅 npm 路徑需要)
71
+
72
+ 如果你透過**選項 A**(`/plugin install memesh@pcircle-memesh`)安裝,請略過此步驟 — Claude Code 會自動接好外掛 hooks。
73
+
74
+ 如果你透過**選項 B**(`npm install -g`)安裝,CLI 已在 PATH 上、MCP server 也已註冊,但 Claude Code session hooks 並未自動接上。沒有這些 hooks 還是可以手動使用 `memesh remember` / `recall`,但**自動擷取迴路**(session → 教訓 → 下次 session 主動回憶)就會靜默不動。
43
75
 
44
76
  ```bash
45
77
  memesh install-hooks # 把 memesh hooks 加進 ~/.claude/settings.json
46
78
  memesh doctor # 確認「Hooks wired into Claude Code」過了
47
79
  ```
48
80
 
49
- 這些 hooks 會跟你既有的 `~/.claude/hooks/` 自訂 hooks 共存 — `install-hooks` 用追加方式寫,從不覆寫你的東西。要移除:`memesh uninstall-hooks`。
81
+ 這些 hooks 會跟你既有的 `~/.claude/hooks/` 自訂 hooks 共存 — `install-hooks` 用追加方式寫入,從不覆寫你的東西。要移除:`memesh uninstall-hooks`。
50
82
 
51
83
  ### 第二步:保存一個決策
52
84
 
85
+ > 下方的 bash 範例假設 `memesh` 已在 `PATH` 上(選項 B)。選項 A(純外掛)使用者有兩條等價路徑:在 Claude Code 對話中發問(`/memesh` skill 與 MCP 工具涵蓋同樣的流程),或將任何 shell 中的 `memesh` 替換為 `npx @pcircle/memesh` — 旗標相同,不需要全域安裝。
86
+
87
+ ```bash
88
+ memesh remember "Use OAuth 2.0 with PKCE for the new auth"
89
+ ```
90
+
91
+ 或使用顯式形式,當你想要穩定的名稱與類型以便日後篩選:
92
+
53
93
  ```bash
54
94
  memesh remember --name "auth-decision" --type "decision" --obs "Use OAuth 2.0 with PKCE"
55
95
  ```
@@ -95,7 +135,7 @@ memesh
95
135
  |---------------|---------------------|
96
136
  | **使用 Claude Code 的開發者** | 在工作時自動回憶專案決策、檔案特定的經驗教訓和過去的失敗 |
97
137
  | **程式開發代理進階使用者** | 在多個 MCP 相容工具間共享一層在地記憶 |
98
- | **嘗試 AI 程式開發工作流的團隊** | 導出/導入專案知識,無需引入託管基礎設施 |
138
+ | **嘗試 AI 程式開發工作流的團隊** | 匯出/匯入專案知識,無需引入託管基礎設施 |
99
139
  | **代理開發者** | 透過 MCP、HTTP、CLI 或 Python SDK 添加在地記憶 |
100
140
 
101
141
  ---
@@ -110,7 +150,7 @@ memesh
110
150
  ```bash
111
151
  memesh-mcp
112
152
  ```
113
- MCP 工具 + Claude Code 鉤子
153
+ MCP 工具 + Claude Code hooks
114
154
 
115
155
  </td>
116
156
  <td width="33%" align="center">
@@ -145,52 +185,73 @@ memesh export-schema \
145
185
  |---|---|---|---|---|---|
146
186
  | **最佳用途** | 程式開發代理的在地記憶 | 本地/跨用戶端 MCP 記憶 | Cursor 原生專案記憶 | 受管應用/代理記憶 | 時間性知識圖 |
147
187
  | **安裝方式** | `npm install -g @pcircle/memesh` | 本地應用/伺服器流程 | 內建於 Cursor | 雲端 API / SDK / MCP | 服務/框架設定 |
148
- | **儲存位置** | 單個本地 SQLite 檔案 | 本地記憶堆疊 | Cursor 管理的規則/記憶 | 託管或自管堆疊 | 圖形資料庫 |
188
+ | **儲存位置** | 單一本地 SQLite 檔案 | 本地記憶堆疊 | Cursor 管理的規則/記憶 | 託管或自管堆疊 | 圖形資料庫 |
149
189
  | **需要雲端** | 否 | 否(本地模式) | 取決於 Cursor 帳戶/設定 | 是(平台) | 通常是/自管 |
150
- | **Claude Code 鉤子** | 一級支援 | MCP 工具 | 否 | MCP 工具 | 不特別針對 Claude Code |
190
+ | **Claude Code hooks** | 一級支援 | MCP 工具 | 否 | MCP 工具 | 不特別針對 Claude Code |
151
191
  | **儀表板** | 內建 | 內建 | Cursor 設定 | 平台儀表板 | 平台/圖表工具 |
152
192
  | **取捨** | 簡潔的本地方案,不適合企業規模 | 更寬泛的本地應用足跡 | 綁定到 Cursor | 強大的受管平台,較少本地優先 | 強大的圖形模型,設定更複雜 |
153
193
 
154
- **MeMesh 用立即可用的本地設定、可檢查的儲存和程式開發代理工作流鉤子來交換企業級受管基礎設施。**
194
+ **MeMesh 用立即可用的本地設定、可檢查的儲存和程式開發代理工作流 hooks 來交換企業級受管基礎設施。**
155
195
 
156
196
  ---
157
197
 
158
198
  ## Claude Code 自動進行的事情
159
199
 
160
- 你不需要手動記住所有事情。MeMesh 有 **6 個鉤子**在你工作時自動擷取和注入知識:
200
+ 你不需要手動記住所有事情。MeMesh 有 **7 個 hooks**,會在你工作時自動擷取與注入知識:
161
201
 
162
202
  | 何時 | MeMesh 做什麼 |
163
203
  |------|------------------|
164
- | **每個對話開始時** | 載入最相關的記憶 + 來自過去教訓的主動警告 + 代理協調橫幅 |
204
+ | **每次 session 開始時** | 載入最相關的記憶 + 來自過去教訓的主動警告 |
165
205
  | **編輯檔案前** | 回憶與檔案或專案相關的記憶,再讓 Claude 寫程式碼 |
166
- | **執行 bash 命令前** | 促使 Claude 派遣高可驗證性命令(測試、構建、檢查、遷移、部署、基準測試)作為背景代理 |
167
- | **每次 `git commit` 後** | 記錄你的變更,包括差異統計 |
168
- | **Claude 停止時** | 擷取已編輯的檔案、已修復的錯誤,並從失敗自動生成結構化經驗教訓 |
169
- | **上下文壓縮前** | 在知識被上下文限制失去前保存 |
206
+ | **執行 bash 指令前** | (可選加入)促使 Claude 將高可驗證性指令(測試、建置、檢查、遷移、部署、基準測試)派遣為背景代理 |
207
+ | **當你要求記住** | 偵測「remember this」/「guardar en memesh」/「sauvegarder dans memesh」/「記下來」意圖(5 種語言)並提醒 Claude 使用 memesh |
208
+ | **每次 `git commit` 之後** | 記錄你的變更,包含 diff 統計 |
209
+ | **Claude 停止時** | 擷取已編輯的檔案、已修復的錯誤,並從失敗自動產生結構化教訓 |
210
+ | **上下文壓縮前** | 在知識被上下文限制丟掉之前先保存 |
170
211
 
171
212
  > **隨時退出:** `export MEMESH_AUTO_CAPTURE=false`
172
213
 
173
214
  ---
174
215
 
216
+ ## 設定
217
+
218
+ 所有設定都透過環境變數。預設是純本地、零網路 — 你不需要設定任何東西就能取得可運作的系統。
219
+
220
+ | 變數 | 預設值 | 用途 |
221
+ |---|---|---|
222
+ | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | 覆寫 SQLite 資料庫位置。 |
223
+ | `MEMESH_AUTO_CAPTURE` | `true` | 完全停用自動擷取 hooks(`Stop`、`PreCompact`)。 |
224
+ | `MEMESH_AUTO_DETECT_LLM` | 未設定 | 設為 `1` 讓 memesh 從你的 shell 環境(`OPENAI_API_KEY` 等)自動偵測供應商,並切換到 BYOK 嵌入。**全新安裝的預設僅使用本地 ONNX(384-dim)** — 想要雲端嵌入時才加入。沒設定這個旗標時,shell 中閒置的 `OPENAI_API_KEY` 會被忽略。 |
225
+ | `MEMESH_ENABLE_AGENTIC_ORCHESTRATION` | 未設定 | 設為 `1` 啟用實驗性的工作模型協定(CTO/Orchestrator/Agents 框架)。會加上 session-start 橫幅、Bash 指令提示,以及 `verify_agent_work` 遙測。協定的有效性正在量測中、尚未獲得驗證 — 想參與時才加入。**預設關閉**:核心記憶功能不需要這個旗標就能運作。 |
226
+ | `MEMESH_AUTO_UPDATE` | `off` | 自動更新策略。`off`(預設)永不自動更新;`patch` 允許 `X.Y.Z → X.Y.Z+N`;`minor` 加上 `X.Y.Z → X.Y+1.0`;`major` 允許任何升級。允許時,分離的 `npm install -g` 會在 session 結束時(Stop hook)執行,避免阻塞你的工作 — 結果寫入 `~/.memesh/auto-update.log`。也可在 `~/.memesh/config.json` 中以 `autoUpdate` 設定(環境變數優先)。當已安裝版本被維護者標為 deprecated(安全公告)時,即使是 `off` 也會強制允許 `patch` — 仍維持 minor/major 升級的手動門檻,避免靜默行為偏移。 |
227
+ | `OPENAI_API_KEY` | 未設定 | 你的 OpenAI 金鑰。僅在 `MEMESH_AUTO_DETECT_LLM=1` 或你明確設定供應商時才使用。 |
228
+ | `OLLAMA_HOST` | `http://localhost:11434` | 使用本地 Ollama 供應商時覆寫 Ollama 的端點。 |
229
+
230
+ `memesh doctor` 會印出已解析的設定,讓你看到目前實際生效的內容。
231
+
232
+ 當 npm 將已安裝版本標為 deprecated(通常是安全公告),下次 session-start 會在前面附上強警示橫幅 `⚠️ MeMesh <ver> is DEPRECATED`,`memesh update-status` 也會持續顯示同一行直到你升級為止。檢查結果會被快取於 `~/.memesh/update-check.<version>.json`,以避免短暫網路失敗讓警示變淡。
233
+
234
+ ---
235
+
175
236
  ## 儀表板
176
237
 
177
- 7 個標籤、11 種語言、零外部相依性。伺服器執行時可在 `http://localhost:3737/dashboard` 存取。
238
+ 7 個分頁、11 種語言、零外部相依性。伺服器執行時可在 `http://localhost:3737/dashboard` 存取。
178
239
 
179
- | 標籤 | 你會看到 |
240
+ | 分頁 | 你會看到 |
180
241
  |-----|-------------|
181
- | **搜尋** | 全文 + 向量相似度搜尋所有記憶 |
182
- | **瀏覽** | 所有實體的分頁列表,可以歸檔/復原 |
183
- | **分析** | 記憶健康分數(0-100)、30 天時間線、價值指標、知識涵蓋範圍、清理建議、你的工作模式 |
184
- | **圖表** | 互動式力導向知識圖,具有類型篩選、搜尋、自我中心模式、近期熱力圖 |
185
- | **經驗教訓** | 來自過去失敗的結構化經驗教訓(錯誤、根本原因、修復、預防) |
186
- | **管理** | 歸檔和復原實體 |
187
- | **設定** | LLM 供應商設定、即時語言選擇器 |
242
+ | **Search** | 全文 + 向量相似度搜尋所有記憶 |
243
+ | **Browse** | 所有實體的分頁列表,可以歸檔/復原 |
244
+ | **Analytics** | 記憶健康分數(0-100)、30 天時間線、價值指標、知識涵蓋範圍、清理建議、你的工作模式 |
245
+ | **Graph** | 互動式力導向知識圖,具有類型篩選、搜尋、自我中心模式、近期熱力圖 |
246
+ | **Lessons** | 來自過去失敗的結構化教訓(錯誤、根本原因、修復、預防) |
247
+ | **Manage** | 歸檔和復原實體 |
248
+ | **Settings** | LLM 供應商設定、即時語言選擇器 |
188
249
 
189
250
  ---
190
251
 
191
252
  ## 智慧功能
192
253
 
193
- **🧠 智慧搜尋** — 搜尋「登入安全」並找到關於「OAuth PKCE」的記憶。MeMesh 使用你設定的 LLM 用相關詞彙擴展查詢。
254
+ **🧠 智慧搜尋** — 搜尋「登入安全」並找到關於「OAuth PKCE」的記憶。MeMesh FTS5 + sqlite-vec 在熱路徑上保持 LLM-free,仍能跨同義詞匹配。
194
255
 
195
256
  **📊 評分排名** — 結果按相關性(30%)+ 近期性(25%)+ 頻率(15%)+ 信心(15%)+ 回憶影響(10%)+ 時間有效性(5%)排名。
196
257
 
@@ -199,44 +260,46 @@ memesh export-schema \
199
260
  **⚠️ 衝突偵測** — 如果你有兩個互相矛盾的記憶,MeMesh 會警告你。
200
261
 
201
262
  **📦 團隊共享** — `memesh export > team-knowledge.json` → 與團隊共享 → `memesh import team-knowledge.json`
202
- 匯入的組合保持可搜尋,但 MeMesh 不會自動將匯入的記憶注入 Claude 鉤子,直到你檢查或在本地重新儲存。
263
+ 匯入的組合保持可搜尋,但 MeMesh 不會自動將匯入的記憶注入 Claude hooks,直到你檢查或在本地重新儲存。
203
264
 
204
265
  ---
205
266
 
206
267
  ## 使用範例
207
268
 
208
269
  > 「MeMesh 記得我們三週前選擇了 PKCE 而不是隱式流程。當我再次問 Claude 關於身份驗證的問題時,它已經知道了——不需要重新解釋。」
209
- > — **獨立開發者,正在構建 SaaS**
270
+ > — **獨立開發者,正在打造 SaaS**
210
271
 
211
- > 「我們每個星期五導出團隊的記憶,星期一導入。每個人的 Claude 在新一周開始時都知道團隊上週學到的東西。」
272
+ > 「我們每個星期五匯出團隊的記憶,星期一匯入。每個人的 Claude 在新一週開始時都知道團隊上週學到的東西。」
212
273
  > — **3 人新創公司,共享知識庫**
213
274
 
214
275
  > 「儀表板顯示我 90% 的記憶是自動生成的對話日誌。我開始有意使用 `remember` 來記錄架構決策。改變了遊戲規則。」
215
- > — **發現分析標籤的開發者**
276
+ > — **發現分析分頁的開發者**
216
277
 
217
278
  ---
218
279
 
219
280
  ## 解鎖智慧模式(可選)
220
281
 
221
- MeMesh 預設離線工作。只有在想要查詢擴展、更聰明的擷取和壓縮時才添加 LLM API 金鑰:
282
+ MeMesh 預設離線運作 — 回憶嚴格保持 LLM-free(開箱即用就有 LongMemEval-S 上 95.40% R@5)。只有當你想要在上層加入 LLM 增強的分析流程時,才需要加入 LLM API 金鑰:更聰明的 session 擷取、新記憶的自動標籤、從失敗產生教訓,以及 `consolidate` / `dream` 壓縮:
222
283
 
223
284
  ```bash
224
285
  memesh config set llm.provider anthropic
225
286
  memesh config set llm.api-key sk-ant-...
226
287
  ```
227
288
 
228
- 或使用儀表板設定標籤(視覺化設定):
289
+ 或使用儀表板 Settings 分頁(視覺化設定):
229
290
 
230
291
  ```bash
231
- memesh # 開啟儀表板 → 設定標籤
292
+ memesh # 開啟儀表板 → Settings 分頁
232
293
  ```
233
294
 
234
295
  | | 等級 0(預設) | 等級 1(智慧模式) |
235
296
  |---|---|---|
236
- | **搜尋** | FTS5 關鍵字匹配 | + LLM 查詢擴展(~97% 召回率) |
237
- | **自動擷取** | 基於規則的模式 | + LLM 擷取決策和經驗教訓 |
238
- | **壓縮** | 不可用 | `consolidate` 壓縮冗長的記憶 |
239
- | **成本** | 免費,無 API 金鑰 | $0.0001 / 搜尋(Haiku) |
297
+ | **搜尋** | FTS5 + sqlite-vec,95.40% R@5(約 18ms/查詢) | 不變 回憶在每個等級都保持 LLM-free |
298
+ | **自動擷取** | 基於規則的模式 | + LLM 擷取決策與教訓 |
299
+ | **自動標籤** | 僅手動標籤 | + LLM 為新記憶產生標籤 |
300
+ | **失敗分析** | 不可用 | + LLM session 錯誤轉為結構化教訓 |
301
+ | **壓縮** | 不可用 | `consolidate` + `dream` 壓縮冗長記憶 |
302
+ | **成本** | 免費,無需 API 金鑰 | 約 $0.0001 / 次分析呼叫(Haiku) |
240
303
 
241
304
  ---
242
305
 
@@ -245,14 +308,14 @@ memesh # 開啟儀表板 → 設定標籤
245
308
  | 工具 | 做什麼 |
246
309
  |------|--------|
247
310
  | `remember` | 用觀察、關係和標籤儲存知識 |
248
- | `recall` | 智慧搜尋,包含多因素評分和 LLM 查詢擴展 |
249
- | `forget` | 軟體歸檔(永不刪除)或移除特定觀察 |
311
+ | `recall` | FTS5 + sqlite-vec 搜尋,包含多因素評分(相關性、近期性、頻率、信心、時間有效性)— 熱路徑上不使用 LLM |
312
+ | `forget` | 軟歸檔(永不刪除)或移除特定觀察 |
250
313
  | `consolidate` | LLM 驅動的冗長記憶壓縮 |
251
314
  | `export` | 在專案或團隊成員之間以 JSON 共享記憶 |
252
- | `import` | 匯入記憶,包含合併策略(跳過 / 覆蓋 / 追加) |
253
- | `learn` | 記錄來自錯誤的結構化經驗教訓(錯誤、根本原因、修復、預防) |
315
+ | `import` | 匯入記憶,包含合併策略(跳過 / 覆寫 / 追加) |
316
+ | `learn` | 記錄來自錯誤的結構化教訓(錯誤、根本原因、修復、預防) |
254
317
  | `user_patterns` | 分析你的工作模式——時間表、工具、優勢、學習領域 |
255
- | `verify_agent_work` | 保留背景代理工作的驗證報告;根據 `git diff` 進行現實檢查聲稱的檔案變更 |
318
+ | `verify_agent_work` | 保留背景代理工作的驗證報告;以 `git diff` 對所聲稱的檔案變更做現實檢查 |
256
319
 
257
320
  ---
258
321