@pcircle/memesh 4.5.1 → 4.6.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 (169) hide show
  1. package/.claude-plugin/marketplace.json +5 -3
  2. package/.claude-plugin/plugin.json +6 -4
  3. package/AGENTS.md +95 -0
  4. package/README.de.md +129 -35
  5. package/README.md +161 -34
  6. package/README.zh-TW.md +130 -35
  7. package/dashboard/dist/index.html +10 -10
  8. package/dist/cli/view-live.js +3 -3
  9. package/dist/core/auto-tagger.d.ts.map +1 -1
  10. package/dist/core/auto-tagger.js +4 -9
  11. package/dist/core/auto-tagger.js.map +1 -1
  12. package/dist/core/briefing.d.ts +8 -0
  13. package/dist/core/briefing.d.ts.map +1 -0
  14. package/dist/core/briefing.js +91 -0
  15. package/dist/core/briefing.js.map +1 -0
  16. package/dist/core/capture-flag.d.ts +5 -0
  17. package/dist/core/capture-flag.d.ts.map +1 -0
  18. package/dist/core/capture-flag.js +10 -0
  19. package/dist/core/capture-flag.js.map +1 -0
  20. package/dist/core/conflict-candidates.d.ts +20 -0
  21. package/dist/core/conflict-candidates.d.ts.map +1 -0
  22. package/dist/core/conflict-candidates.js +79 -0
  23. package/dist/core/conflict-candidates.js.map +1 -0
  24. package/dist/core/conflict-judge.d.ts +47 -0
  25. package/dist/core/conflict-judge.d.ts.map +1 -0
  26. package/dist/core/conflict-judge.js +189 -0
  27. package/dist/core/conflict-judge.js.map +1 -0
  28. package/dist/core/digest-validator.d.ts.map +1 -1
  29. package/dist/core/digest-validator.js +3 -5
  30. package/dist/core/digest-validator.js.map +1 -1
  31. package/dist/core/doctor.d.ts +2 -0
  32. package/dist/core/doctor.d.ts.map +1 -1
  33. package/dist/core/doctor.js +34 -56
  34. package/dist/core/doctor.js.map +1 -1
  35. package/dist/core/dreamer.d.ts +5 -2
  36. package/dist/core/dreamer.d.ts.map +1 -1
  37. package/dist/core/dreamer.js +108 -25
  38. package/dist/core/dreamer.js.map +1 -1
  39. package/dist/core/embedder.d.ts +5 -4
  40. package/dist/core/embedder.d.ts.map +1 -1
  41. package/dist/core/embedder.js +16 -8
  42. package/dist/core/embedder.js.map +1 -1
  43. package/dist/core/failure-analyzer.d.ts.map +1 -1
  44. package/dist/core/failure-analyzer.js +7 -12
  45. package/dist/core/failure-analyzer.js.map +1 -1
  46. package/dist/core/install-channel.d.ts +1 -1
  47. package/dist/core/install-channel.d.ts.map +1 -1
  48. package/dist/core/install-channel.js +16 -5
  49. package/dist/core/install-channel.js.map +1 -1
  50. package/dist/core/install-hooks.d.ts +5 -0
  51. package/dist/core/install-hooks.d.ts.map +1 -1
  52. package/dist/core/install-hooks.js +0 -0
  53. package/dist/core/install-hooks.js.map +1 -1
  54. package/dist/core/json-utils.d.ts +1 -0
  55. package/dist/core/json-utils.d.ts.map +1 -1
  56. package/dist/core/json-utils.js +19 -10
  57. package/dist/core/json-utils.js.map +1 -1
  58. package/dist/core/kg-backfill.d.ts +0 -1
  59. package/dist/core/kg-backfill.d.ts.map +1 -1
  60. package/dist/core/kg-backfill.js +0 -3
  61. package/dist/core/kg-backfill.js.map +1 -1
  62. package/dist/core/lifecycle.d.ts.map +1 -1
  63. package/dist/core/lifecycle.js +14 -21
  64. package/dist/core/lifecycle.js.map +1 -1
  65. package/dist/core/memory-tool.d.ts.map +1 -1
  66. package/dist/core/memory-tool.js +4 -4
  67. package/dist/core/memory-tool.js.map +1 -1
  68. package/dist/core/operations.d.ts.map +1 -1
  69. package/dist/core/operations.js +22 -13
  70. package/dist/core/operations.js.map +1 -1
  71. package/dist/core/prompt-safety.d.ts +1 -0
  72. package/dist/core/prompt-safety.d.ts.map +1 -1
  73. package/dist/core/prompt-safety.js +7 -0
  74. package/dist/core/prompt-safety.js.map +1 -1
  75. package/dist/core/schema-export.d.ts.map +1 -1
  76. package/dist/core/schema-export.js +31 -0
  77. package/dist/core/schema-export.js.map +1 -1
  78. package/dist/core/setup.d.ts +29 -0
  79. package/dist/core/setup.d.ts.map +1 -0
  80. package/dist/core/setup.js +127 -0
  81. package/dist/core/setup.js.map +1 -0
  82. package/dist/core/task-state-store.d.ts +17 -0
  83. package/dist/core/task-state-store.d.ts.map +1 -0
  84. package/dist/core/task-state-store.js +45 -0
  85. package/dist/core/task-state-store.js.map +1 -0
  86. package/dist/core/task-state.d.ts +19 -0
  87. package/dist/core/task-state.d.ts.map +1 -0
  88. package/dist/core/task-state.js +91 -0
  89. package/dist/core/task-state.js.map +1 -0
  90. package/dist/core/time-utils.d.ts +2 -0
  91. package/dist/core/time-utils.d.ts.map +1 -0
  92. package/dist/core/time-utils.js +14 -0
  93. package/dist/core/time-utils.js.map +1 -0
  94. package/dist/core/title.d.ts +5 -0
  95. package/dist/core/title.d.ts.map +1 -0
  96. package/dist/core/title.js +14 -0
  97. package/dist/core/title.js.map +1 -0
  98. package/dist/core/transcript-source.d.ts.map +1 -1
  99. package/dist/core/transcript-source.js +2 -3
  100. package/dist/core/transcript-source.js.map +1 -1
  101. package/dist/core/types.d.ts +4 -0
  102. package/dist/core/types.d.ts.map +1 -1
  103. package/dist/core/work-topology.d.ts +33 -0
  104. package/dist/core/work-topology.d.ts.map +1 -0
  105. package/dist/core/work-topology.js +183 -0
  106. package/dist/core/work-topology.js.map +1 -0
  107. package/dist/db.d.ts +2 -7
  108. package/dist/db.d.ts.map +1 -1
  109. package/dist/db.js +144 -284
  110. package/dist/db.js.map +1 -1
  111. package/dist/knowledge-graph.d.ts +1 -0
  112. package/dist/knowledge-graph.d.ts.map +1 -1
  113. package/dist/knowledge-graph.js +50 -40
  114. package/dist/knowledge-graph.js.map +1 -1
  115. package/dist/skills-manifest.json +48 -18
  116. package/dist/storage/conflicts.d.ts.map +1 -1
  117. package/dist/storage/conflicts.js +2 -7
  118. package/dist/storage/conflicts.js.map +1 -1
  119. package/dist/storage/fts-index.d.ts +4 -2
  120. package/dist/storage/fts-index.d.ts.map +1 -1
  121. package/dist/storage/fts-index.js +16 -4
  122. package/dist/storage/fts-index.js.map +1 -1
  123. package/dist/storage/schema.d.ts +20 -0
  124. package/dist/storage/schema.d.ts.map +1 -0
  125. package/dist/storage/schema.js +274 -0
  126. package/dist/storage/schema.js.map +1 -0
  127. package/dist/transports/cli/cli.d.ts +1 -4
  128. package/dist/transports/cli/cli.d.ts.map +1 -1
  129. package/dist/transports/cli/cli.js +382 -6
  130. package/dist/transports/cli/cli.js.map +1 -1
  131. package/dist/transports/http/server.d.ts.map +1 -1
  132. package/dist/transports/http/server.js +208 -307
  133. package/dist/transports/http/server.js.map +1 -1
  134. package/dist/transports/mcp/handlers.d.ts +46 -0
  135. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  136. package/dist/transports/mcp/handlers.js +57 -2
  137. package/dist/transports/mcp/handlers.js.map +1 -1
  138. package/dist/transports/schemas.d.ts +21 -10
  139. package/dist/transports/schemas.d.ts.map +1 -1
  140. package/dist/transports/schemas.js +26 -8
  141. package/dist/transports/schemas.js.map +1 -1
  142. package/llms-install.md +138 -0
  143. package/package.json +14 -9
  144. package/scripts/hooks/_generated/capture-flag.js +17 -0
  145. package/scripts/hooks/_generated/fts-index.js +16 -4
  146. package/scripts/hooks/_generated/schema.js +281 -0
  147. package/scripts/hooks/_generated/task-state.js +98 -0
  148. package/scripts/hooks/_generated/time-utils.js +21 -0
  149. package/scripts/hooks/_generated/title.js +21 -0
  150. package/scripts/hooks/_generated/work-topology.js +190 -0
  151. package/scripts/hooks/_shared.js +122 -478
  152. package/scripts/hooks/post-commit.js +4 -1
  153. package/scripts/hooks/pre-compact.js +13 -1
  154. package/scripts/hooks/pre-edit-recall.js +5 -3
  155. package/scripts/hooks/session-start.js +135 -59
  156. package/scripts/hooks/session-summary.js +59 -24
  157. package/skills/memesh/SKILL.md +97 -76
  158. package/README.es.md +0 -467
  159. package/README.fr.md +0 -459
  160. package/README.ja.md +0 -467
  161. package/README.ko.md +0 -467
  162. package/README.pt.md +0 -459
  163. package/README.th.md +0 -460
  164. package/README.vi.md +0 -459
  165. package/README.zh-CN.md +0 -466
  166. package/dist/cli/view.d.ts +0 -3
  167. package/dist/cli/view.d.ts.map +0 -1
  168. package/dist/cli/view.js +0 -523
  169. package/dist/cli/view.js.map +0 -1
package/README.zh-CN.md DELETED
@@ -1,466 +0,0 @@
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)
2
-
3
- <p align="center">
4
- <h1 align="center">MeMesh LLM Memory</h1>
5
- <p align="center">
6
- <strong>为 Claude Code 和 MCP 编码代理设计的本地内存层。</strong><br />
7
- 一个 SQLite 文件。无需 Docker。无需云服务。
8
- </p>
9
- <p align="center">
10
- <a href="https://www.npmjs.com/package/@pcircle/memesh"><img src="https://img.shields.io/npm/v/@pcircle/memesh?style=flat-square&color=3b82f6&label=npm" alt="npm" /></a>
11
- <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-22c55e?style=flat-square" alt="MIT" /></a>
12
- <a href="https://nodejs.org"><img src="https://img.shields.io/badge/node-%3E%3D22-22c55e?style=flat-square" alt="Node" /></a>
13
- <a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-a855f7?style=flat-square" alt="MCP" /></a>
14
- </p>
15
- </p>
16
-
17
- ---
18
-
19
- > [!IMPORTANT]
20
- > **持续开发中的项目** — 功能会持续更新,版本之间可能会有变动。遇到问题或想要新功能,请[开 issue](https://github.com/PCIRCLE-AI/memesh-llm-memory/issues)。
21
-
22
- ## 问题
23
-
24
- 编码代理在会话间会遗忘。每个架构决策、每次 bug 修复、失败的测试用例、每一次来之不易的经验教训都需要重新解释一遍。Claude Code 每次都从零开始,重新发现老约束,浪费上下文在早该掌握的东西上。
25
-
26
- **MeMesh 为编码代理提供持久化、可搜索、不断演进的本地内存。**
27
-
28
- 本包是 MeMesh 产品系列的本地内存层。我们刻意保持简洁并开源:用 npm 安装,内存文件保存在 `~/.memesh/knowledge-graph.db`,连接到 Claude Code 或任何兼容 MCP 的客户端即可。托管工作区和企业级操作系统产品应当独立于本包的 README 和路线图。
29
-
30
- ---
31
-
32
- ## 实测数据 — LongMemEval-S 上 R@5 达到 95.60%
33
-
34
- MeMesh 的检索引擎**只用 FTS5**(热路径上没有 LLM、也没有 embeddings),在公开的 [LongMemEval-S](https://huggingface.co/datasets/xiaowu0162/longmemeval) 基准(500 道题,MIT 许可)上的实测结果:
35
-
36
- | 系统 | R@5 | 来源 |
37
- |---|---|---|
38
- | **MeMesh (Mode A, via `recallEnhanced()`)** | **95.60%** | [benchmarks/longmemeval/RESULTS.md](benchmarks/longmemeval/RESULTS.md) |
39
- | MemPalace | 96.6% | 厂商自报 |
40
- | Supermemory | ~82% | 厂商估计 |
41
- | Zep | 63.8% | LongMemEval 论文 |
42
- | Mem0 | 49.0% | LongMemEval 论文 |
43
-
44
- 复现命令、数据集 SHA256、每题原始结果以及已知失败分析全部放在 [`benchmarks/longmemeval/`](benchmarks/longmemeval/) 中。约 10 秒可重跑。
45
-
46
- ---
47
-
48
- ## 安装路径一览
49
-
50
- MeMesh 有**两条共存的安装路径**。多数用户两条都需要。它们写入**同一份记忆数据库**(`~/.memesh/knowledge-graph.db`),所以 Claude Code 对话里记下的东西在 terminal 也看得到,反之亦然。
51
-
52
- ```mermaid
53
- flowchart TB
54
- classDef client fill:#1f2937,stroke:#4b5563,color:#f9fafb,stroke-width:1px
55
- classDef pathA fill:#1e3a8a,stroke:#3b82f6,color:#eff6ff,stroke-width:2px
56
- classDef pathB fill:#14532d,stroke:#22c55e,color:#f0fdf4,stroke-width:2px
57
- classDef db fill:#7c2d12,stroke:#f97316,color:#fff7ed,stroke-width:2px
58
-
59
- subgraph clients["Where you use memesh from"]
60
- direction LR
61
- CC["Claude Code<br/>(chat + agent)"]:::client
62
- TERM["Terminal / other<br/>MCP clients<br/>(Cursor, Cline...)"]:::client
63
- end
64
-
65
- subgraph paths["Two install paths"]
66
- direction LR
67
- A["<b>Path A — /plugin install</b><br/>───────────────<br/>Lives in <code>~/.claude/plugins/</code><br/><br/>• MCP tools in chat<br/>• Auto-capture hooks<br/>• <code>/memesh</code> skill<br/>• Session-start banner"]:::pathA
68
- B["<b>Path B — npm install -g</b><br/>───────────────<br/>Lives in <code>$(npm prefix -g)/bin/</code><br/><br/>• <code>memesh</code> shell command<br/>• <code>memesh-mcp</code>, <code>-http</code>, <code>-view</code> bins<br/>• For Cursor / Cline / other MCP"]:::pathB
69
- end
70
-
71
- DB[("Shared memory DB<br/><code>~/.memesh/knowledge-graph.db</code><br/>Same data, both paths see it")]:::db
72
-
73
- CC -->|uses| A
74
- TERM -->|uses| B
75
- A --> DB
76
- B --> DB
77
- ```
78
-
79
- **你需要哪条?**
80
-
81
- | 你想做什么 | 安装路径 |
82
- |---|---|
83
- | 在 Claude Code 对话里用 `/memesh` skill | Path A(plugin)|
84
- | 在 Claude Code 启用自动 capture(session → 教训 → 下次 recall) | Path A(plugin)|
85
- | 在任何 terminal 跑 `memesh remember` / `memesh recall` / `memesh doctor` | Path B(npm-global)|
86
- | 用 `memesh serve` 直接开 dashboard(没有 `npx` 启动延迟) | Path B(npm-global)|
87
- | 把 `memesh-mcp` 接到 Cursor、Cline 或其他 MCP client | Path B(npm-global)|
88
- | 以上全要 | **两条都装** — 不会冲突 |
89
-
90
- > **常见误会**:Claude Code 的 plugin **不会** 把 `memesh` 放到你的 shell `PATH` 上。如果你只跑 `/plugin install`,然后在 terminal 打 `memesh reindex`,你会看到 `command not found`。这是正常的 — 还要加 `npm install -g @pcircle/memesh` 才有 shell 命令。
91
-
92
- ### ⚠️ 装 plugin 不会装 CLI
93
-
94
- 这是最常见的踩坑点,读一次省下未来的循环:
95
-
96
- - 从 Claude Code 跑 `/plugin install memesh@pcircle-memesh` → 只装 **Path A**。给你 MCP 工具、hooks、`/memesh` skill。**不会**把 `memesh` 放到你的 shell `PATH`。
97
- - 在 terminal 打 `memesh reindex` / `memesh update` / `memesh doctor` → 需要 **Path B**(npm-global)。没装就会 `zsh: command not found: memesh`。
98
- - **Claude Code 使用者建议的安装方式**:**两条都装**。共存、共用同一份数据库、不冲突。
99
-
100
- ```bash
101
- # 跑完 /plugin install ... 之后,再跑这个:
102
- npm install -g @pcircle/memesh
103
- ```
104
-
105
- 如果你只透过 Claude Code 对话用 memesh(从不在 terminal 打 `memesh`),Path A 自己就够了。其他人请两条都装。
106
-
107
- ---
108
-
109
- ## 60 秒快速开始
110
-
111
- ### 选项 A — Claude Code 插件(一行安装)
112
-
113
- 如果你使用 Claude Code,可以直接在 CLI 内把 MeMesh 作为插件安装:
114
-
115
- ```
116
- /plugin marketplace add PCIRCLE-AI/memesh-llm-memory
117
- /plugin install memesh@pcircle-memesh
118
- ```
119
-
120
- 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 直接从插件内置的编译产物启动 — 不需要 `npx` 查找、不需要 `npm install -g`、不需要本地构建步骤。memesh 通过 Node 内置的 `node:sqlite`(22.13+)存放数据,所以升级 Node 不会留下一个为错误 runtime 编译的二进制文件。
121
-
122
- ### 选项 B — npm 全局安装(可选优化)
123
-
124
- 如果你想把二进制直接放在 shell `PATH` 上(这样 `memesh`、`memesh-mcp` 等可在任意终端中直接使用,不需要每次都走 `npx` 查找),或者你想把 `memesh-mcp` 作为固定路径 stdio 命令暴露给**非 Claude Code 的 MCP 客户端**(Cursor、Cline、纯终端流程):
125
-
126
- ```bash
127
- npm install -g @pcircle/memesh
128
- ```
129
-
130
- > **首次安装注意事项(一次性):**
131
- > - **不需要编译器** — 数据库引擎就是 Node 自己的 `node:sqlite`。负责「按意思搜索」的 `sqlite-vec` 以预编译文件形式提供 macOS(arm64/x64)、Linux(x64/arm64)和 Windows x64;在其他平台它就是不存在,回忆保持关键词搜索。这里没有任何东西会执行安装脚本,所以 `npm install --ignore-scripts` 也能装出完全可用的 memesh。
132
- > - **语义搜索是可选的** — 默认检索路径是关键词搜索(FTS5),不需要模型也不需要下载。基于语义的搜索需要一个 embedder:在本地运行 [Ollama](https://ollama.com),或配置一个云端 embedder(见下方“嵌入”)。没有配置时,memesh 只使用关键词搜索。
133
-
134
- ### 第一步半:把 MeMesh 接入 Claude Code(仅 npm 路径)
135
-
136
- 如果你通过**选项 A**(`/plugin install memesh@pcircle-memesh`)安装,跳过这一步 — Claude Code 会自动接好插件 hooks。
137
-
138
- 如果你通过**选项 B**(`npm install -g`)安装,CLI 已经在 PATH 上、MCP server 也已注册,但 Claude Code session hooks 不会自动接上。没有这些 hooks,你仍然可以手动用 `memesh remember` / `recall`,但**自动捕捉循环**(session → 教训 → 下次 session 主动回想)就会静默不动。
139
-
140
- ```bash
141
- memesh install-hooks # 把 memesh hooks 加到 ~/.claude/settings.json
142
- memesh doctor # 确认「Hooks wired into Claude Code」通过
143
- ```
144
-
145
- 这些 hooks 会和你已有的 `~/.claude/hooks/` 自定义 hooks 并存 — `install-hooks` 用追加方式写,从不覆盖你的东西。要移除:`memesh uninstall-hooks`。
146
-
147
- ### 第二步:记录一个决策
148
-
149
- > 下面的 bash 示例假设 `memesh` 已在你的 `PATH` 上(选项 B)。选项 A(仅插件)用户有两条等价路径:在 Claude Code 对话内询问(`/memesh` skill + MCP 工具覆盖相同流程),或在任意 shell 中把 `memesh` 替换成 `npx @pcircle/memesh` — 参数完全相同,无需全局安装。
150
-
151
- ```bash
152
- memesh remember "Use OAuth 2.0 with PKCE for the new auth"
153
- ```
154
-
155
- 或在你想要稳定名称和类型用于后续过滤时使用显式形式:
156
-
157
- ```bash
158
- memesh remember --name "auth-decision" --type "decision" --obs "Use OAuth 2.0 with PKCE"
159
- ```
160
-
161
- ### 第三步:之后随时调用
162
-
163
- ```bash
164
- memesh recall "login security"
165
- # → 即使用词不同,也能找到 "OAuth 2.0 with PKCE"
166
- ```
167
-
168
- **就这样。** MeMesh 现在已经在会话间记忆和回忆了。
169
-
170
- 想验证安装和本地接线是否完整:
171
-
172
- ```bash
173
- memesh doctor
174
- ```
175
-
176
- 打开仪表板浏览你的内存:
177
-
178
- ```bash
179
- memesh serve
180
- ```
181
-
182
- <p align="center">
183
- <img src="docs/images/dashboard-search.png" alt="MeMesh 搜索 — 瞬间找到任何记忆" width="100%" />
184
- </p>
185
-
186
- <p align="center">
187
- <img src="docs/images/dashboard-analytics.png" alt="MeMesh 分析 — 健康评分、时间线、模式、知识覆盖" width="100%" />
188
- </p>
189
-
190
- <p align="center">
191
- <img src="docs/images/dashboard-graph.png" alt="MeMesh 知识图 — 交互式知识图,支持类型过滤和中心模式" width="100%" />
192
- </p>
193
-
194
- ---
195
-
196
- ## 这是为谁设计的?
197
-
198
- | 你是... | MeMesh 帮助你... |
199
- |--------|-----------------|
200
- | **使用 Claude Code 的开发者** | 工作时自动回忆项目决策、文件特定的经验教训和过去的失败 |
201
- | **编码代理重度用户** | 在 MCP 兼容工具间共享一个本地内存层 |
202
- | **团队试验 AI 编码工作流** | 导出/导入项目知识,无需引入托管基础设施 |
203
- | **代理开发者** | 通过 MCP、HTTP 或 CLI 添加本地内存 |
204
-
205
- ---
206
-
207
- ## 为编码代理优先设计
208
-
209
- <table>
210
- <tr>
211
- <td width="33%" align="center">
212
-
213
- **Claude Code / Desktop**
214
- ```bash
215
- memesh-mcp
216
- ```
217
- MCP 工具 + Claude Code 钩子
218
-
219
- </td>
220
- <td width="33%" align="center">
221
-
222
- **任何 HTTP 客户端**
223
- ```bash
224
- curl localhost:3737/v1/recall \
225
- -H "Content-Type: application/json" \
226
- -d '{"query":"auth"}'
227
- ```
228
- `memesh serve` (REST API)
229
-
230
- </td>
231
- <td width="33%" align="center">
232
-
233
- **任何 LLM (OpenAI 格式)**
234
- ```bash
235
- memesh export-schema \
236
- --format openai
237
- ```
238
- 粘贴工具到任何 API 调用
239
-
240
- </td>
241
- </tr>
242
- </table>
243
-
244
- ---
245
-
246
- ## 为什么不用 OpenMemory、Cursor Memories、Mem0 或 Zep?
247
-
248
- | | **MeMesh** | OpenMemory | Cursor Memories | Mem0 | Zep / Graphiti |
249
- |---|---|---|---|---|---|
250
- | **最佳适用场景** | 编码代理的本地内存 | 本地/跨客户端 MCP 内存 | Cursor 原生项目内存 | 托管应用/代理内存 | 时间知识图 |
251
- | **安装形式** | `npm install -g @pcircle/memesh` | 本地应用/服务器流程 | 内置于 Cursor | 云 API / SDK / MCP | 服务/框架配置 |
252
- | **存储方式** | 单个本地 SQLite 文件 | 本地内存栈 | Cursor 管理的规则/内存 | 托管或自托管栈 | 图数据库 |
253
- | **是否需要云** | 否 | 本地模式不需要 | 取决于 Cursor 账户/设置 | 平台需要 | 通常需要/自托管 |
254
- | **Claude Code 钩子** | 一级支持 | MCP 工具 | 否 | MCP 工具 | 不针对 Claude Code |
255
- | **仪表板** | 内置 | 内置 | Cursor 设置 | 平台仪表板 | 平台/图形工具 |
256
- | **权衡** | 简洁的本地方案,不适用企业规模 | 更宽泛的本地应用足迹 | 绑定 Cursor | 强大的托管平台,本地化程度低 | 强大的图模型,配置更复杂 |
257
-
258
- **MeMesh 用即插即用的本地设置、可检视的存储和编码代理工作流钩子,换取企业级托管基础设施。**
259
-
260
- ---
261
-
262
- ## Claude Code 中的自动化流程
263
-
264
- 你不需要手动记住一切。MeMesh 有 **6 个钩子**在你工作时自动捕获和注入知识:
265
-
266
- | 触发条件 | MeMesh 的动作 |
267
- |---------|------------|
268
- | **每个会话开始** | 加载最相关的记忆 + 来自过去经验教训的主动警告 |
269
- | **编辑文件前** | 回忆与该文件或项目相关的记忆,然后 Claude 才开始写代码 |
270
- | **当你要求记忆时** | 检测「remember this」/「guardar en memesh」/「sauvegarder dans memesh」/「记下来」意图(5 种语言),并提醒 Claude 使用 memesh |
271
- | **每次 `git commit` 后** | 记录你的改动,附带 diff 统计 |
272
- | **Claude 停止时** | 捕获编辑过的文件、修复的错误、自动从失败中生成结构化经验教训 |
273
- | **上下文压缩前** | 在知识被上下文限制吞没前保存 |
274
-
275
- > **随时退出:** `export MEMESH_AUTO_CAPTURE=false`
276
-
277
- ---
278
-
279
- ## 配置
280
-
281
- 所有配置都通过环境变量。默认值为本地、零网络 — 无需设置任何东西即可获得可用系统。
282
-
283
- | 变量 | 默认 | 作用 |
284
- |---|---|---|
285
- | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | 覆盖 SQLite 数据库位置。 |
286
- | `MEMESH_AUTO_CAPTURE` | `true` | 完全禁用自动捕获 hooks(`Stop`、`PreCompact`)。 |
287
- | `MEMESH_AUTO_DETECT_LLM` | 未设置(自动检测**开启**) | 设为 `0` 让 memesh 不使用它在 shell 环境中找到的 API 密钥。默认情况下,如果设置了 `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` 且你没有在 `~/.memesh/config.json` 中配置提供商,memesh 会用它来跑写入侧的 LLM 功能(整合、经验提取、自动打标签、dream)。嵌入不受影响 —— 除非你把 `embedder.provider` 显式设置为 `ollama` 或 `openai`,否则保持仅关键词(FTS5)。 |
288
- | `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 升级仍保持手动,避免行为静默漂移。 |
289
- | `OPENAI_API_KEY` | 未设置 | 你的 OpenAI 密钥。除非你设置 `MEMESH_AUTO_DETECT_LLM=0` 或显式配置提供商,否则会自动用于 LLM 功能。 |
290
- | `OLLAMA_HOST` | `http://localhost:11434` | 使用本地 Ollama 提供商时覆盖 Ollama 端点。 |
291
-
292
- `memesh doctor` 会打印解析后的配置,你可以看到当前生效的内容。
293
-
294
- **备用 LLM 提供商(Smart Mode)。** 在 dashboard 的 **Settings → “Fallback providers”** 可以设置一条有顺序的故障转移链——当主要提供商不可用时,memesh 会依次改用列表里的下一个。可以加本地的 [Ollama](https://ollama.com) 备用,或云端的(OpenAI / Anthropic,需要 API key)。隐私权衡:一旦用到云端备用,记忆内容(可能是私密的)会被发送到该提供商,所以如果你为了隐私只跑本地,这点需要注意。
295
-
296
- 当 npm 把已安装版本标记为 deprecated(通常为安全建议)时,下次 session-start 会先显示一条强烈的 `⚠️ MeMesh <ver> is DEPRECATED` 横幅,并且 `memesh update-status` 在你升级前会持续显示同一行。检查结果会缓存到 `~/.memesh/update-check.<version>.json`,避免一次临时网络故障让警告变弱。
297
-
298
- ---
299
-
300
- ## 仪表板
301
-
302
- 8 个标签页,11 种语言,零外部依赖。服务器运行时访问 `http://localhost:3737/dashboard`。
303
-
304
- | 标签页 | 你看到什么 |
305
- |--------|---------|
306
- | **Insights** | 记忆洞察 — 来自 dreamer 引擎的每周摘要和模式提案;一键接受/拒绝 |
307
- | **搜索** | 全文 + 向量相似度搜索,覆盖所有记忆 |
308
- | **浏览** | 所有实体的分页列表,支持归档/恢复 |
309
- | **分析** | 记忆健康分数、30 天时间线、PM 速度 + KG 连通性指标、工作模式、清理建议 |
310
- | **知识图** | 交互式力导向图,支持类型过滤、搜索、中心模式、新近度热力图 |
311
- | **经验教训** | 来自过去失败的结构化经验教训(错误、根本原因、修复、预防) |
312
- | **管理** | 归档和恢复实体 |
313
- | **设置** | LLM 提供商配置、即时语言切换器 |
314
-
315
- ---
316
-
317
- ## 聪慧功能
318
-
319
- **🧠 智能搜索** — 搜索"登录安全"也能找到"OAuth PKCE"相关的记忆。MeMesh 在热路径上用 FTS5 + sqlite-vec,零 LLM。
320
-
321
- **🌏 支持不用空格分词的文字** — 中文、日文、韩文、泰文、老挝文、高棉文和半角片假名都会拆成相邻两字一组来建索引,所以写成「资料库迁移前一定要先备份」的记忆,搜索「备份」就找得到,不必打出一模一样的全文。写入和查询两边都会做 NFC 正规化,因此在 macOS 上或用韩文、越南文输入法打的记忆,两种写法都找得到。
322
-
323
- **📊 评分排序** — 结果按相关性(30%)+ 新近度(25%)+ 频率(18%)+ 置信度(17%)+ 回忆影响(10%)排序。
324
-
325
- **🔄 知识演进** — 决策会变化。`forget` 归档旧记忆(永不删除)。`supersedes` 关系链接 旧 → 新。你的 AI 总是看到最新版本。
326
-
327
- **⚠️ 冲突检测** — 如果你有两条相互矛盾的记忆,MeMesh 会警告你。
328
-
329
- **🕸️ 知识图连通性** — `memesh kg backfill-relations --all-rules` 使用标签共现、项目聚类、会话上下文和名称相似度连接孤立实体 — 无需 LLM。
330
-
331
- **📦 团队共享** — `memesh export > team-knowledge.json` → 与团队分享 → `memesh import team-knowledge.json`
332
- 导入的包保持可搜索,但 MeMesh 不会自动将导入的记忆注入到 Claude 钩子中,直到你审查或本地重新存储它们。
333
-
334
- ---
335
-
336
- ## 使用示例
337
-
338
- > "MeMesh 记得我们三周前选择了 PKCE 而不是隐式流。我再次问 Claude 有关身份验证的问题时,它已经知道——无需重新解释。"
339
- > — **独立开发者,正在构建 SaaS**
340
-
341
- > "我们每周五导出团队的内存,周一导入。每个人的 Claude 周一开始时都知道团队上周学到了什么。"
342
- > — **3 人初创公司,共享知识库**
343
-
344
- > "仪表板显示我 90% 的记忆是自动生成的会话日志。我开始有意使用 `remember` 记录架构决策。彻底改变了游戏规则。"
345
- > — **发现分析标签页的开发者**
346
-
347
- ---
348
-
349
- ## 解锁智能模式(可选)
350
-
351
- MeMesh 默认离线工作 — 回忆始终是严格无 LLM 的(开箱即用 LongMemEval-S R@5 95.60%)。仅当你想要在此之上叠加 LLM 增强分析流程时才添加 LLM API 密钥:更聪慧的会话提取、为新记忆自动打标签、从失败生成经验教训,以及 `dream` 压缩:
352
-
353
- ```bash
354
- memesh config set llm.provider anthropic
355
- memesh config set llm.api-key sk-ant-...
356
- ```
357
-
358
- 或使用仪表板设置标签页(可视化配置):
359
-
360
- ```bash
361
- memesh serve # 打开仪表板 → 设置标签页
362
- ```
363
-
364
- **把过去的会话挖成记忆。** `memesh dream run --from-transcripts` 会读取这个项目的 Claude Code 会话记录,请 LLM 找出藏在对话里的决策与教训,再把它们暂存为提案——不会自动写入你的知识图谱。用 `memesh dream show <id>` 逐一查看,挑值得保留的 accept。
365
-
366
- ### 自带嵌入(可选)
367
-
368
- 默认情况下 MeMesh 只做**关键词**召回(FTS5)—— 无需 API 密钥,无需下载模型,数据不离开你的机器。语义(基于含义的)搜索是可选的,需要一个嵌入器。配置其中之一:
369
-
370
- ```bash
371
- memesh config set embedder.provider openai # or: ollama
372
- memesh config set embedder.model text-embedding-3-small
373
- ```
374
-
375
- 嵌入器**独立于对话 LLM** 配置 —— 更改 `llm.provider` 绝不会悄悄改变你的嵌入。如果切换到不同维度(如 768 → 1536),MeMesh 会在下次写入时自动重建向量索引。支持的 `embedder.provider` 取值:`ollama`(本地)、`openai`(托管)。两者都不设置时,召回保持关键词搜索。
376
-
377
- | | 级别 0(默认) | 级别 1(智能模式) |
378
- |---|---|---|
379
- | **搜索** | FTS5 + sqlite-vec,95.60% R@5 | 不变 — 回忆在每个级别都是无 LLM 的 |
380
- | **自动捕获** | 基于规则的模式 | + LLM 提取决策和经验教训 |
381
- | **自动打标签** | 仅手动标签 | + LLM 为新记忆生成标签 |
382
- | **失败分析** | 不可用 | + LLM 把会话错误转化为结构化经验教训 |
383
- | **压缩** | 不可用 | `dream` 压缩冗长的记忆 |
384
- | **成本** | 免费,无需 API 密钥 | ~$0.0001 每次分析调用(Haiku) |
385
-
386
- ---
387
-
388
- ## 全部 7 个内存工具
389
-
390
- | 工具 | 它做什么 |
391
- |------|--------|
392
- | `remember` | 存储知识,附带观察、关系和标签 |
393
- | `recall` | FTS5 + sqlite-vec 搜索,附带多因素评分(相关性、新近度、频率、置信度、回忆影响)— 热路径上无 LLM |
394
- | `forget` | 软归档(永不删除)或移除特定观察 |
395
- | `export` | 在项目或团队成员间共享内存,格式为 JSON |
396
- | `import` | 导入内存,支持合并策略(跳过 / 覆盖 / 追加) |
397
- | `learn` | 从错误中记录结构化经验教训(错误、根本原因、修复、预防) |
398
- | `user_patterns` | 分析你的工作模式——日程、工具、优势、学习领域 |
399
-
400
- ---
401
-
402
- ## 架构
403
-
404
- ```
405
- ┌─────────────────┐
406
- │ Core Engine │
407
- │ (7 operations) │
408
- └────────┬────────┘
409
- ┌─────────────────┼─────────────────┐
410
- │ │ │
411
- CLI (memesh) HTTP API (serve) MCP (memesh-mcp)
412
- │ │ │
413
- └─────────────────┼─────────────────┘
414
-
415
- SQLite + FTS5 + sqlite-vec
416
- (~/.memesh/knowledge-graph.db)
417
- ```
418
-
419
- 核心是框架无关的。相同逻辑从终端、HTTP 或 MCP 运行。
420
-
421
- ---
422
-
423
- ## 升级
424
-
425
- Claude Code 的 plugin marketplace 在安装时把版本钉住,**不会**自动更新。要拿到新版本:
426
-
427
- **方法 A — `/plugin` 界面**:先卸载 `memesh@pcircle-memesh`,再重新安装。Claude Code 会抓取 marketplace 最新版。
428
-
429
- **方法 B — 一行命令**(无需点击 UI、幂等):
430
-
431
- ```bash
432
- # 如果 plugin 已经是 v4.2.5 或更新,脚本已内置:
433
- bash ~/.claude/plugins/cache/pcircle-memesh/memesh/<current-version>/scripts/upgrade-plugin.sh
434
-
435
- # 如果是 v4.2.5 之前的版本(即 v4.2.4 或 v4.2.3),
436
- # 脚本还没在你的 plugin 里,改用 npm-global 的副本:
437
- bash "$(npm prefix -g)/lib/node_modules/@pcircle/memesh/scripts/upgrade-plugin.sh"
438
-
439
- # (这假设你也运行过 `npm install -g @pcircle/memesh`。如果还没,
440
- # 现在正好可以一起装 — 参考上面「安装路径一览」了解为什么大多数人两条路径都装。)
441
- ```
442
-
443
- 脚本会 fast-forward marketplace cache、把新版本放入 `~/.claude/plugins/cache/`、安装 runtime deps,然后把 `installed_plugins.json` 重指向新版本。完成后请重启 Claude Code 让 MCP server 重连。
444
-
445
- **npm-global 安装**(`npm install -g @pcircle/memesh`)可以直接通过 `memesh update` 自动更新。Source checkouts:`git pull && npm install && npm run build`。
446
-
447
- Session 开始时,若有新版本可下载,会显示一行 banner(每版本每 24 小时节流一次),`memesh doctor` 会报告升级目标版本与对应命令。
448
-
449
- ---
450
-
451
- ## 贡献
452
-
453
- ```bash
454
- git clone https://github.com/PCIRCLE-AI/memesh-llm-memory
455
- cd memesh-llm-memory && npm install && npm run build
456
- npm test # 630 个测试
457
- npm run test:e2e-dashboard
458
- ```
459
-
460
- 仪表板:`cd dashboard && npm install && npm run dev`
461
-
462
- ---
463
-
464
- <p align="center">
465
- <strong>MIT</strong> — 由 <a href="https://pcircle.com">PCIRCLE AI</a> 开发
466
- </p>
@@ -1,3 +0,0 @@
1
- #!/usr/bin/env node
2
- export declare function generateDashboardHtml(dbPath?: string): string;
3
- //# sourceMappingURL=view.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.d.ts","sourceRoot":"","sources":["../../src/cli/view.ts"],"names":[],"mappings":";AA0NA,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CA+V7D"}