@pcircle/memesh 4.5.0 → 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 (256) hide show
  1. package/.claude-plugin/marketplace.json +5 -3
  2. package/.claude-plugin/plugin.json +6 -4
  3. package/.mcp.json +1 -1
  4. package/AGENTS.md +95 -0
  5. package/README.de.md +130 -39
  6. package/README.md +188 -43
  7. package/README.zh-TW.md +133 -41
  8. package/dashboard/dist/index.html +9 -9
  9. package/dist/cli/view-live.js +3 -3
  10. package/dist/core/analytics.d.ts +3 -3
  11. package/dist/core/analytics.d.ts.map +1 -1
  12. package/dist/core/analytics.js.map +1 -1
  13. package/dist/core/auto-tagger.d.ts.map +1 -1
  14. package/dist/core/auto-tagger.js +4 -9
  15. package/dist/core/auto-tagger.js.map +1 -1
  16. package/dist/core/briefing.d.ts +8 -0
  17. package/dist/core/briefing.d.ts.map +1 -0
  18. package/dist/core/briefing.js +91 -0
  19. package/dist/core/briefing.js.map +1 -0
  20. package/dist/core/capture-flag.d.ts +5 -0
  21. package/dist/core/capture-flag.d.ts.map +1 -0
  22. package/dist/core/capture-flag.js +10 -0
  23. package/dist/core/capture-flag.js.map +1 -0
  24. package/dist/core/config.d.ts +0 -1
  25. package/dist/core/config.d.ts.map +1 -1
  26. package/dist/core/config.js +2 -1
  27. package/dist/core/config.js.map +1 -1
  28. package/dist/core/conflict-candidates.d.ts +20 -0
  29. package/dist/core/conflict-candidates.d.ts.map +1 -0
  30. package/dist/core/conflict-candidates.js +79 -0
  31. package/dist/core/conflict-candidates.js.map +1 -0
  32. package/dist/core/conflict-judge.d.ts +47 -0
  33. package/dist/core/conflict-judge.d.ts.map +1 -0
  34. package/dist/core/conflict-judge.js +189 -0
  35. package/dist/core/conflict-judge.js.map +1 -0
  36. package/dist/core/demo.d.ts +2 -2
  37. package/dist/core/demo.d.ts.map +1 -1
  38. package/dist/core/demo.js.map +1 -1
  39. package/dist/core/digest-validator.d.ts.map +1 -1
  40. package/dist/core/digest-validator.js +3 -5
  41. package/dist/core/digest-validator.js.map +1 -1
  42. package/dist/core/doctor.d.ts +3 -0
  43. package/dist/core/doctor.d.ts.map +1 -1
  44. package/dist/core/doctor.js +207 -85
  45. package/dist/core/doctor.js.map +1 -1
  46. package/dist/core/dreamer.d.ts +20 -9
  47. package/dist/core/dreamer.d.ts.map +1 -1
  48. package/dist/core/dreamer.js +416 -58
  49. package/dist/core/dreamer.js.map +1 -1
  50. package/dist/core/embedder.d.ts +7 -5
  51. package/dist/core/embedder.d.ts.map +1 -1
  52. package/dist/core/embedder.js +38 -9
  53. package/dist/core/embedder.js.map +1 -1
  54. package/dist/core/extractor.d.ts.map +1 -1
  55. package/dist/core/extractor.js +2 -1
  56. package/dist/core/extractor.js.map +1 -1
  57. package/dist/core/failure-analyzer.d.ts.map +1 -1
  58. package/dist/core/failure-analyzer.js +7 -12
  59. package/dist/core/failure-analyzer.js.map +1 -1
  60. package/dist/core/graph.d.ts +4 -4
  61. package/dist/core/graph.d.ts.map +1 -1
  62. package/dist/core/graph.js.map +1 -1
  63. package/dist/core/install-channel.d.ts +1 -1
  64. package/dist/core/install-channel.d.ts.map +1 -1
  65. package/dist/core/install-channel.js +16 -5
  66. package/dist/core/install-channel.js.map +1 -1
  67. package/dist/core/install-hooks.d.ts +6 -0
  68. package/dist/core/install-hooks.d.ts.map +1 -1
  69. package/dist/core/install-hooks.js +0 -0
  70. package/dist/core/install-hooks.js.map +1 -1
  71. package/dist/core/json-utils.d.ts +1 -0
  72. package/dist/core/json-utils.d.ts.map +1 -1
  73. package/dist/core/json-utils.js +19 -10
  74. package/dist/core/json-utils.js.map +1 -1
  75. package/dist/core/kg-backfill.d.ts +3 -4
  76. package/dist/core/kg-backfill.d.ts.map +1 -1
  77. package/dist/core/kg-backfill.js +1 -4
  78. package/dist/core/kg-backfill.js.map +1 -1
  79. package/dist/core/lesson-engine.d.ts +1 -0
  80. package/dist/core/lesson-engine.d.ts.map +1 -1
  81. package/dist/core/lesson-engine.js +1 -0
  82. package/dist/core/lesson-engine.js.map +1 -1
  83. package/dist/core/lifecycle.d.ts +4 -4
  84. package/dist/core/lifecycle.d.ts.map +1 -1
  85. package/dist/core/lifecycle.js +15 -22
  86. package/dist/core/lifecycle.js.map +1 -1
  87. package/dist/core/llm-client.d.ts.map +1 -1
  88. package/dist/core/llm-client.js +3 -6
  89. package/dist/core/llm-client.js.map +1 -1
  90. package/dist/core/llm-telemetry.d.ts +4 -4
  91. package/dist/core/llm-telemetry.d.ts.map +1 -1
  92. package/dist/core/llm-telemetry.js +1 -1
  93. package/dist/core/llm-telemetry.js.map +1 -1
  94. package/dist/core/memory-tool.d.ts.map +1 -1
  95. package/dist/core/memory-tool.js +8 -4
  96. package/dist/core/memory-tool.js.map +1 -1
  97. package/dist/core/operations.d.ts.map +1 -1
  98. package/dist/core/operations.js +41 -17
  99. package/dist/core/operations.js.map +1 -1
  100. package/dist/core/paths.d.ts +3 -0
  101. package/dist/core/paths.d.ts.map +1 -1
  102. package/dist/core/paths.js +67 -1
  103. package/dist/core/paths.js.map +1 -1
  104. package/dist/core/patterns.d.ts +2 -2
  105. package/dist/core/patterns.d.ts.map +1 -1
  106. package/dist/core/patterns.js.map +1 -1
  107. package/dist/core/project-tags.d.ts +3 -3
  108. package/dist/core/project-tags.d.ts.map +1 -1
  109. package/dist/core/project-tags.js.map +1 -1
  110. package/dist/core/projects.d.ts +2 -2
  111. package/dist/core/projects.d.ts.map +1 -1
  112. package/dist/core/projects.js.map +1 -1
  113. package/dist/core/prompt-safety.d.ts +1 -0
  114. package/dist/core/prompt-safety.d.ts.map +1 -1
  115. package/dist/core/prompt-safety.js +7 -0
  116. package/dist/core/prompt-safety.js.map +1 -1
  117. package/dist/core/schema-export.d.ts.map +1 -1
  118. package/dist/core/schema-export.js +27 -30
  119. package/dist/core/schema-export.js.map +1 -1
  120. package/dist/core/serializer.d.ts.map +1 -1
  121. package/dist/core/serializer.js +45 -4
  122. package/dist/core/serializer.js.map +1 -1
  123. package/dist/core/setup.d.ts +29 -0
  124. package/dist/core/setup.d.ts.map +1 -0
  125. package/dist/core/setup.js +127 -0
  126. package/dist/core/setup.js.map +1 -0
  127. package/dist/core/stats.d.ts +2 -2
  128. package/dist/core/stats.d.ts.map +1 -1
  129. package/dist/core/stats.js.map +1 -1
  130. package/dist/core/task-state-store.d.ts +17 -0
  131. package/dist/core/task-state-store.d.ts.map +1 -0
  132. package/dist/core/task-state-store.js +45 -0
  133. package/dist/core/task-state-store.js.map +1 -0
  134. package/dist/core/task-state.d.ts +19 -0
  135. package/dist/core/task-state.d.ts.map +1 -0
  136. package/dist/core/task-state.js +91 -0
  137. package/dist/core/task-state.js.map +1 -0
  138. package/dist/core/time-utils.d.ts +2 -0
  139. package/dist/core/time-utils.d.ts.map +1 -0
  140. package/dist/core/time-utils.js +14 -0
  141. package/dist/core/time-utils.js.map +1 -0
  142. package/dist/core/title.d.ts +5 -0
  143. package/dist/core/title.d.ts.map +1 -0
  144. package/dist/core/title.js +14 -0
  145. package/dist/core/title.js.map +1 -0
  146. package/dist/core/transcript-extractor.d.ts +5 -6
  147. package/dist/core/transcript-extractor.d.ts.map +1 -1
  148. package/dist/core/transcript-extractor.js +4 -24
  149. package/dist/core/transcript-extractor.js.map +1 -1
  150. package/dist/core/transcript-source.d.ts.map +1 -1
  151. package/dist/core/transcript-source.js +2 -3
  152. package/dist/core/transcript-source.js.map +1 -1
  153. package/dist/core/types.d.ts +21 -7
  154. package/dist/core/types.d.ts.map +1 -1
  155. package/dist/core/types.js +2 -0
  156. package/dist/core/types.js.map +1 -1
  157. package/dist/core/work-topology.d.ts +33 -0
  158. package/dist/core/work-topology.d.ts.map +1 -0
  159. package/dist/core/work-topology.js +183 -0
  160. package/dist/core/work-topology.js.map +1 -0
  161. package/dist/db.d.ts +5 -10
  162. package/dist/db.d.ts.map +1 -1
  163. package/dist/db.js +194 -196
  164. package/dist/db.js.map +1 -1
  165. package/dist/knowledge-graph.d.ts +4 -2
  166. package/dist/knowledge-graph.d.ts.map +1 -1
  167. package/dist/knowledge-graph.js +68 -49
  168. package/dist/knowledge-graph.js.map +1 -1
  169. package/dist/mcp/server.js +2 -1
  170. package/dist/mcp/server.js.map +1 -1
  171. package/dist/skills-manifest.json +61 -36
  172. package/dist/storage/conflicts.d.ts +3 -3
  173. package/dist/storage/conflicts.d.ts.map +1 -1
  174. package/dist/storage/conflicts.js +2 -7
  175. package/dist/storage/conflicts.js.map +1 -1
  176. package/dist/storage/fts-index.d.ts +6 -4
  177. package/dist/storage/fts-index.d.ts.map +1 -1
  178. package/dist/storage/fts-index.js +16 -4
  179. package/dist/storage/fts-index.js.map +1 -1
  180. package/dist/storage/schema.d.ts +20 -0
  181. package/dist/storage/schema.d.ts.map +1 -0
  182. package/dist/storage/schema.js +274 -0
  183. package/dist/storage/schema.js.map +1 -0
  184. package/dist/storage/sqlite.d.ts +20 -0
  185. package/dist/storage/sqlite.d.ts.map +1 -0
  186. package/dist/storage/sqlite.js +64 -0
  187. package/dist/storage/sqlite.js.map +1 -0
  188. package/dist/storage/vector-index.d.ts +3 -0
  189. package/dist/storage/vector-index.d.ts.map +1 -0
  190. package/dist/storage/vector-index.js +7 -0
  191. package/dist/storage/vector-index.js.map +1 -0
  192. package/dist/transports/cli/cli.d.ts +1 -4
  193. package/dist/transports/cli/cli.d.ts.map +1 -1
  194. package/dist/transports/cli/cli.js +494 -76
  195. package/dist/transports/cli/cli.js.map +1 -1
  196. package/dist/transports/http/retired-routes.d.ts.map +1 -1
  197. package/dist/transports/http/retired-routes.js +1 -0
  198. package/dist/transports/http/retired-routes.js.map +1 -1
  199. package/dist/transports/http/server.d.ts.map +1 -1
  200. package/dist/transports/http/server.js +243 -323
  201. package/dist/transports/http/server.js.map +1 -1
  202. package/dist/transports/mcp/handlers.d.ts +48 -94
  203. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  204. package/dist/transports/mcp/handlers.js +77 -56
  205. package/dist/transports/mcp/handlers.js.map +1 -1
  206. package/dist/transports/schemas.d.ts +31 -40
  207. package/dist/transports/schemas.d.ts.map +1 -1
  208. package/dist/transports/schemas.js +31 -37
  209. package/dist/transports/schemas.js.map +1 -1
  210. package/hooks/hooks.json +0 -10
  211. package/llms-install.md +138 -0
  212. package/package.json +19 -18
  213. package/scripts/hooks/_generated/capture-flag.js +17 -0
  214. package/scripts/hooks/_generated/core-paths.js +67 -1
  215. package/scripts/hooks/_generated/fts-index.js +16 -4
  216. package/scripts/hooks/_generated/schema.js +281 -0
  217. package/scripts/hooks/_generated/sqlite.js +71 -0
  218. package/scripts/hooks/_generated/task-state.js +98 -0
  219. package/scripts/hooks/_generated/time-utils.js +21 -0
  220. package/scripts/hooks/_generated/title.js +21 -0
  221. package/scripts/hooks/_generated/work-topology.js +190 -0
  222. package/scripts/hooks/_shared.js +269 -534
  223. package/scripts/hooks/post-commit.js +55 -10
  224. package/scripts/hooks/pre-compact.js +22 -7
  225. package/scripts/hooks/pre-edit-recall.js +9 -11
  226. package/scripts/hooks/session-start.js +230 -106
  227. package/scripts/hooks/session-summary.js +176 -73
  228. package/scripts/hooks/user-prompt-intent.js +3 -2
  229. package/skills/memesh/SKILL.md +97 -77
  230. package/README.es.md +0 -470
  231. package/README.fr.md +0 -462
  232. package/README.ja.md +0 -470
  233. package/README.ko.md +0 -470
  234. package/README.pt.md +0 -462
  235. package/README.th.md +0 -463
  236. package/README.vi.md +0 -462
  237. package/README.zh-CN.md +0 -469
  238. package/dist/cli/view.d.ts +0 -3
  239. package/dist/cli/view.d.ts.map +0 -1
  240. package/dist/cli/view.js +0 -523
  241. package/dist/cli/view.js.map +0 -1
  242. package/dist/core/skill-usage-log.d.ts +0 -11
  243. package/dist/core/skill-usage-log.d.ts.map +0 -1
  244. package/dist/core/skill-usage-log.js +0 -125
  245. package/dist/core/skill-usage-log.js.map +0 -1
  246. package/dist/core/verifier.d.ts +0 -40
  247. package/dist/core/verifier.d.ts.map +0 -1
  248. package/dist/core/verifier.js +0 -206
  249. package/dist/core/verifier.js.map +0 -1
  250. package/dist/mcp/launcher.d.ts +0 -3
  251. package/dist/mcp/launcher.d.ts.map +0 -1
  252. package/dist/mcp/launcher.js +0 -37
  253. package/dist/mcp/launcher.js.map +0 -1
  254. package/scripts/hooks/pre-bash-orchestration-nudge.js +0 -155
  255. package/scripts/postinstall-rebuild.mjs +0 -41
  256. package/skills/agentic-orchestration/SKILL.md +0 -399
package/README.zh-TW.md CHANGED
@@ -1,9 +1,9 @@
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)
1
+ 🌐 [English](README.md) | [繁體中文](README.zh-TW.md) | [Deutsch](README.de.md)
2
2
 
3
3
  <p align="center">
4
- <h1 align="center">MeMesh LLM Memory</h1>
4
+ <h1 align="center">MeMesh</h1>
5
5
  <p align="center">
6
- <strong>給 Claude Code 和 MCP 程式開發代理的在地記憶系統。</strong><br />
6
+ <strong>給程式開發代理的代理式記憶。</strong><br />
7
7
  一個 SQLite 檔案。不需要 Docker。不需要雲端。
8
8
  </p>
9
9
  <p align="center">
@@ -16,32 +16,38 @@
16
16
 
17
17
  ---
18
18
 
19
- > [!IMPORTANT]
20
- > **持續開發中的專案** — 功能會持續更新,版本之間可能會有變動。遇到問題或想要新功能,請[開 issue](https://github.com/PCIRCLE-AI/memesh-llm-memory/issues)。
19
+ **MeMesh** — 給 Claude Code 和 MCP 程式開發代理的開源**代理式記憶**:從代理的實際工作中擷取,在它行動的當下注入,記憶自相矛盾時保持誠實。一個 SQLite 檔案。不需要雲端。
21
20
 
22
- ## 問題所在
21
+ ## 安裝
23
22
 
24
- 你的程式開發代理在每次對話之間就會忘記一切。每個架構決策、每個修復的臭蟲、每個失敗的測試、每個代價不菲的教訓,都得重新跟它解釋一遍。Claude Code 每次都從零開始,重新發現舊的限制條件,浪費寶貴的上下文在它本應已知的事情上。
23
+ **在 Claude Code 裡** — 在對話框輸入這兩行(hooks、記憶工具和 `/memesh` skill 會自動接好):
25
24
 
26
- **MeMesh 讓程式開發代理擁有持久、可搜尋、不斷演進的在地記憶。**
25
+ ```
26
+ /plugin marketplace add PCIRCLE-AI/memesh
27
+ /plugin install memesh@pcircle-memesh
28
+ ```
27
29
 
28
- 這個套件是 MeMesh 產品系列的在地記憶層。我們刻意保持它的精簡和開源:用 npm 安裝,把記憶保存在 `~/.memesh/knowledge-graph.db`,然後連接到 Claude Code 或任何支援 MCP 的用戶端。託管工作區和企業級作業系統產品應該與這個套件的 README 和路線圖分開。
30
+ 重開 Claude Code。下一個 session 開頭出現 `◉ MeMesh` 狀態列,就代表它在記了。
29
31
 
30
- ---
32
+ **在終端機裡** — `memesh` CLI、儀表板,以及給 Codex / Gemini / Cursor 用的 `memesh-mcp` server(需要 [Node 22.13+](https://nodejs.org)):
31
33
 
32
- ## 實證 — 在 LongMemEval-S 上 R@5 達 95.60%
34
+ ```bash
35
+ npm install -g @pcircle/memesh
36
+ memesh doctor # 端到端驗證這份安裝
37
+ ```
33
38
 
34
- MeMesh 的檢索引擎**只用 FTS5**(熱路徑上不使用 LLM、不使用嵌入),對照公開的 [LongMemEval-S](https://huggingface.co/datasets/xiaowu0162/longmemeval) 基準測試(500 題,MIT 授權)量測:
39
+ 大多數 Claude Code 使用者最後兩種都會裝 它們共用同一個資料庫、永不衝突。細節、其他代理、升級方式:見下方「60 秒快速開始」。
35
40
 
36
- | 系統 | R@5 | 來源 |
37
- |---|---|---|
38
- | **MeMesh(Mode A,經由 `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 論文 |
41
+ ## 問題所在
43
42
 
44
- 重現指令、資料集 SHA256、原始逐題結果與已知失敗分析全部都在 [`benchmarks/longmemeval/`](benchmarks/longmemeval/)。約 10 秒可重跑一次。
43
+ 你的程式開發代理在對話之間不只是忘記事實 它會**重複做過的工作**。它會重新提出你上個月否決過的做法,被同一個失敗的測試絆倒,重新發現三月那次弄壞 production 的限制條件,還要你重新解釋那個它自己參與設計的架構。
44
+
45
+ 這不是聊天記錄的問題,而是代理記憶的問題。需要在對話之間留存下來的是*工作本身*:決策連同它的理由、失敗連同它的修法,以及它們之間的關聯。
46
+
47
+ **MeMesh 就是那份記憶。** Hooks 從代理實際做的事情擷取記憶(session、commit、失敗 — 不是手動筆記),回憶在代理行動的當下注入記憶(session 開始時、編輯檔案前),知識圖譜層則讓記憶長期保持誠實(supersession 汰換、由 LLM 判定的衝突偵測)。用 npm 安裝,把記憶保存在 `~/.memesh/knowledge-graph.db`,然後連接到 Claude Code 或任何支援 MCP 的用戶端。
48
+
49
+ > [!IMPORTANT]
50
+ > **持續開發中的專案** — 功能會持續更新,版本之間可能會有變動。遇到問題或想要新功能,請[開 issue](https://github.com/PCIRCLE-AI/memesh/issues)。
45
51
 
46
52
  ---
47
53
 
@@ -65,7 +71,7 @@ flowchart TB
65
71
  subgraph paths["Two install paths"]
66
72
  direction LR
67
73
  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
74
+ 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> bins<br/>• For Cursor / Cline / other MCP"]:::pathB
69
75
  end
70
76
 
71
77
  DB[("Shared memory DB<br/><code>~/.memesh/knowledge-graph.db</code><br/>Same data, both paths see it")]:::db
@@ -113,11 +119,13 @@ npm install -g @pcircle/memesh
113
119
  如果你使用 Claude Code,從 CLI 內把 MeMesh 當外掛安裝:
114
120
 
115
121
  ```
116
- /plugin marketplace add PCIRCLE-AI/memesh-llm-memory
122
+ /plugin marketplace add PCIRCLE-AI/memesh
117
123
  /plugin install memesh@pcircle-memesh
118
124
  ```
119
125
 
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`、不需要本地建置步驟。如果 `better-sqlite3` 原生 binding 在第一次啟動時缺少(例如 Node 主版本升級後),啟動器會在程序內自動重新編譯後繼續執行。
126
+ Claude Code 會自動接好 hooks、skills 和 MCP server。你會獲得對話內自動擷取、主動回憶、可在 Claude Code 對話中使用的 `/memesh` skill(remember / recall / learn / forget),以及代理可呼叫的 `remember` / `recall` / `forget` / `learn` MCP 工具。
127
+
128
+ **驗證方式:**重開 Claude Code、開任何 session。開頭出現像 `◉ MeMesh ready · no memories for "your-project" yet` 的狀態列 — 那一行就是外掛在運作的證明,不需要另外跑指令。(有記憶之後會改顯示數量。)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
129
 
122
130
  ### 選項 B — npm 全域安裝(可選最佳化)
123
131
 
@@ -128,22 +136,61 @@ npm install -g @pcircle/memesh
128
136
  ```
129
137
 
130
138
  > **首次安裝注意事項(一次性):**
131
- > - **原生模組**`better-sqlite3` `sqlite-vec` macOS(arm64/x64)、Linux(x64/arm64)和 Windows x64 上會以預先編譯的二進位安裝。在較少見的平台或預編譯失敗時,你需要可運作的 C/C++ 工具鏈。
139
+ > - **不需要編譯器**資料庫引擎就是 Node 自己的 `node:sqlite`。負責「用意思搜尋」的 `sqlite-vec` 以預先編譯好的檔案形式提供 macOS(arm64/x64)、Linux(x64/arm64)和 Windows x64;在其他平台它就是不存在,回憶維持關鍵字搜尋。這裡沒有任何東西會執行安裝腳本,所以 `npm install --ignore-scripts` 也能裝出完全可用的 memesh。
132
140
  > - **語意搜尋是選用的** — 預設的檢索路徑是關鍵字搜尋(FTS5),不需要模型也不需要下載。以語意(意義)為基礎的搜尋需要一個 embedder:在本地執行 [Ollama](https://ollama.com),或設定一個雲端 embedder(見下方「嵌入」)。沒有設定時,memesh 只使用關鍵字搜尋。
133
141
 
134
142
  ### 第一步半:把 MeMesh 接進 Claude Code(僅 npm 路徑需要)
135
143
 
136
144
  如果你透過**選項 A**(`/plugin install memesh@pcircle-memesh`)安裝,請略過此步驟 — Claude Code 會自動接好外掛 hooks。
137
145
 
138
- 如果你透過**選項 B**(`npm install -g`)安裝,CLI 已在 PATH 上、MCP server 也已註冊,但 Claude Code session hooks 並未自動接上。沒有這些 hooks 還是可以手動使用 `memesh remember` / `recall`,但**自動擷取迴路**(session → 教訓 → 下次 session 主動回憶)就會靜默不動。
146
+ 如果你透過**選項 B**(`npm install -g`)安裝,CLI 已在 PATH 上 — 但**還沒有任何東西接進 Claude Code**:npm 套件刻意不執行安裝腳本,把 MCP server hooks 接進 Claude Code 的是外掛(選項 A)。npm 路徑自己能接的是 session hooks。沒有這些 hooks 還是可以手動使用 `memesh remember` / `recall`,但**自動擷取迴路**(session → 教訓 → 下次 session 主動回憶)就會靜默不動。
147
+
148
+ ```bash
149
+ memesh setup # 偵測 Claude Code / Codex / Gemini、逐一詢問接線、接完驗證
150
+ ```
151
+
152
+ 或手動逐步:
139
153
 
140
154
  ```bash
141
155
  memesh install-hooks # 把 memesh hooks 加進 ~/.claude/settings.json
142
- memesh doctor # 確認「Hooks wired into Claude Code」過了
156
+ memesh setup --check # 機器層級驗證:讀各主機自己的設定,什麼都不改
143
157
  ```
144
158
 
145
159
  這些 hooks 會跟你既有的 `~/.claude/hooks/` 自訂 hooks 共存 — `install-hooks` 用追加方式寫入,從不覆寫你的東西。要移除:`memesh uninstall-hooks`。
146
160
 
161
+ ### 從 Codex CLI 和 Gemini CLI 用同一份記憶
162
+
163
+ `memesh-mcp` 是標準的 stdio MCP server,任何支援 MCP 的主機都能用 — 不限 Claude Code。裝好選項 B(`memesh-mcp` 在 `PATH` 上)之後,每個主機註冊一次:
164
+
165
+ ```bash
166
+ # OpenAI Codex CLI — 會把 [mcp_servers.memesh] 寫進 ~/.codex/config.toml
167
+ codex mcp add memesh -- memesh-mcp
168
+
169
+ # Google Gemini CLI — user 範圍,每個資料夾都能用
170
+ gemini mcp add -s user memesh memesh-mcp
171
+ ```
172
+
173
+ 每個主機讀寫的都是同一個 `~/.memesh/knowledge-graph.db`,所以在 Claude Code session 存的記憶,Codex 和 Gemini 都回憶得到,反之亦然。驗證:
174
+
175
+ ```bash
176
+ codex mcp list # memesh 應顯示為 enabled
177
+ gemini mcp list # memesh 應顯示 "Connected"
178
+ ```
179
+
180
+ > **設定的指令要用 `memesh-mcp`,不要用 `npx -p @pcircle/memesh`。**當主機的工作目錄在這個 repo 的 checkout 裡時,`npx -p` 會解析到*本地*套件,靜默執行工作樹當下的狀態而不是安裝好的正式版。
181
+
182
+ ### 原生整合:Hermes Agent
183
+
184
+ **Hermes Agent** (NousResearch) 有一套第一方 `MemoryProvider` 外掛系統 — MeMesh 整合的層級與 Hermes 自己內建的記憶後端(honcho、mem0、hindsight)相同,不是 HTTP 橋接。與 MCP 模式手動呼叫工具不同,Hermes 的 provider 系統在每一輪自動執行 `recall`/`remember`。
185
+
186
+ 整合將 Hermes 的 `prefetch()` 和 `sync_turn()` hooks 直接對應到 MeMesh 的 HTTP API。完整指南包含 provider 程式結構、設定,以及來自真實部署的四個陷阱:**[docs/platforms/hermes-agent.md](docs/platforms/hermes-agent.md)**
187
+
188
+ ### 原生整合:OpenClaw
189
+
190
+ **OpenClaw** 有一套第一方記憶能力外掛系統 — MeMesh 整合的層級與 OpenClaw 自己內建的後端(LanceDB)相同,不是 HTTP 橋接。外掛透過 `api.registerMemoryCapability()` 註冊,並提供 `memory_recall`/`memory_store`/`memory_forget` 工具,以及在 `before_prompt_build` hook 上自動 recall。
191
+
192
+ **與 Hermes 的關鍵差異**:OpenClaw 的自動擷取有門檻控制(觸發時每輪最多 3 筆記憶),而非每一輪都擷取。整合對應到 MeMesh 的 HTTP API(`/v1/recall`、`/v1/remember`、`/v1/forget`)。完整 TypeScript 外掛合約、設定形狀與陷阱:**[docs/platforms/openclaw.md](docs/platforms/openclaw.md)**
193
+
147
194
  ### 第二步:保存一個決策
148
195
 
149
196
  > 下方的 bash 範例假設 `memesh` 已在 `PATH` 上(選項 B)。選項 A(純外掛)使用者有兩條等價路徑:在 Claude Code 對話中發問(`/memesh` skill 與 MCP 工具涵蓋同樣的流程),或將任何 shell 中的 `memesh` 替換為 `npx @pcircle/memesh` — 旗標相同,不需要全域安裝。
@@ -191,6 +238,32 @@ memesh serve
191
238
  <img src="docs/images/dashboard-graph.png" alt="MeMesh 圖表 — 互動式知識圖,具有類型篩選和自我中心模式" width="100%" />
192
239
  </p>
193
240
 
241
+ ### 看看它幫你記了什麼
242
+
243
+ 任何時候一條指令,就能印出你的代理對目前專案知道什麼 — 工作做到哪、決策、教訓、近期活動(以參考資料的形式包好):
244
+
245
+ ```bash
246
+ memesh briefing
247
+ ```
248
+
249
+ ```text
250
+ Where "your-project" was left off (today):
251
+ - Goal: Ship the payment retry logic
252
+ - Next: Open the PR once CI is green
253
+
254
+ Decisions and direction for "your-project":
255
+ - [decision] Use FTS5 as the retrieval baseline
256
+ ```
257
+
258
+ Claude Code 在 session 開始時自動收到的就是同一個區塊,其他 MCP 用戶端呼叫 `briefing` 工具也拿到同一份 — 代理一開場就有方向,不用重讀整個 repo,你也不用再重講上禮拜的事。儀表板(`memesh serve`)是完整的視覺化版本。
259
+
260
+ ### 你的資料
261
+
262
+ - **就一個本機檔案。**所有東西都在 `~/.memesh/knowledge-graph.db` — SQLite、在你的硬碟上。沒有雲端帳號;除非你自己設定雲端 embedder 或 LLM,否則什麼都不會離開你的機器。
263
+ - **備份 = 複製那個檔案。**還原 = 複製回去。
264
+ - **隨時暫停擷取**:`export MEMESH_AUTO_CAPTURE=false`。
265
+ - **全部刪除**:移除 `~/.memesh/`。
266
+
194
267
  ---
195
268
 
196
269
  ## 誰應該用 MeMesh?
@@ -259,15 +332,30 @@ memesh export-schema \
259
332
 
260
333
  ---
261
334
 
335
+ ## 基準測試 — 95.60% R@5 on LongMemEval-S
336
+
337
+ MeMesh 的檢索引擎**只用 FTS5**(熱路徑上不使用 LLM、不使用嵌入),對照公開的 [LongMemEval-S](https://huggingface.co/datasets/xiaowu0162/longmemeval) 基準測試(500 題,MIT 授權)量測:
338
+
339
+ | 系統 | R@5 | 來源 |
340
+ |---|---|---|
341
+ | **MeMesh(Mode A,經由 `recallEnhanced()`)** | **95.60%** | [benchmarks/longmemeval/RESULTS.md](benchmarks/longmemeval/RESULTS.md) |
342
+ | MemPalace | 96.6% | 廠商自行回報 |
343
+ | Supermemory | ~82% | 廠商估計值 |
344
+ | Zep | 63.8% | LongMemEval 論文 |
345
+ | Mem0 | 49.0% | LongMemEval 論文 |
346
+
347
+ 重現指令、資料集 SHA256、原始逐題結果與已知失敗分析全部都在 [`benchmarks/longmemeval/`](benchmarks/longmemeval/)。約 10 秒可重跑一次。
348
+
349
+ ---
350
+
262
351
  ## Claude Code 自動進行的事情
263
352
 
264
- 你不需要手動記住所有事情。MeMesh 有 **7 個 hooks**,會在你工作時自動擷取與注入知識:
353
+ 你不需要手動記住所有事情。MeMesh 有 **6 個 hooks**,會在你工作時自動擷取與注入知識:
265
354
 
266
355
  | 何時 | MeMesh 做什麼 |
267
356
  |------|------------------|
268
357
  | **每次 session 開始時** | 載入最相關的記憶 + 來自過去教訓的主動警告 |
269
358
  | **編輯檔案前** | 回憶與檔案或專案相關的記憶,再讓 Claude 寫程式碼 |
270
- | **執行 bash 指令前** | (可選加入)促使 Claude 將高可驗證性指令(測試、建置、檢查、遷移、部署、基準測試)派遣為背景代理 |
271
359
  | **當你要求記住** | 偵測「remember this」/「guardar en memesh」/「sauvegarder dans memesh」/「記下來」意圖(5 種語言)並提醒 Claude 使用 memesh |
272
360
  | **每次 `git commit` 之後** | 記錄你的變更,包含 diff 統計 |
273
361
  | **Claude 停止時** | 擷取已編輯的檔案、已修復的錯誤,並從失敗自動產生結構化教訓 |
@@ -286,7 +374,6 @@ memesh export-schema \
286
374
  | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | 覆寫 SQLite 資料庫位置。 |
287
375
  | `MEMESH_AUTO_CAPTURE` | `true` | 完全停用自動擷取 hooks(`Stop`、`PreCompact`)。 |
288
376
  | `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)。 |
289
- | `MEMESH_ENABLE_AGENTIC_ORCHESTRATION` | 未設定 | 設為 `1` 啟用實驗性的工作模型協定(CTO/Orchestrator/Agents 框架)。會加上 session-start 橫幅、Bash 指令提示,以及 `verify_agent_work` 遙測。協定的有效性正在量測中、尚未獲得驗證 — 想參與時才加入。**預設關閉**:核心記憶功能不需要這個旗標就能運作。 |
290
377
  | `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 升級的手動門檻,避免靜默行為偏移。 |
291
378
  | `OPENAI_API_KEY` | 未設定 | 你的 OpenAI 金鑰。除非你設定 `MEMESH_AUTO_DETECT_LLM=0` 或明確設定供應商,否則會自動用於 LLM 功能。 |
292
379
  | `OLLAMA_HOST` | `http://localhost:11434` | 使用本地 Ollama 供應商時覆寫 Ollama 的端點。 |
@@ -387,7 +474,7 @@ memesh config set embedder.model text-embedding-3-small
387
474
 
388
475
  ---
389
476
 
390
- ## 全部 8 個記憶工具
477
+ ## 全部 9 個記憶工具
391
478
 
392
479
  | 工具 | 做什麼 |
393
480
  |------|--------|
@@ -397,8 +484,9 @@ memesh config set embedder.model text-embedding-3-small
397
484
  | `export` | 在專案或團隊成員之間以 JSON 共享記憶 |
398
485
  | `import` | 匯入記憶,包含合併策略(跳過 / 覆寫 / 追加) |
399
486
  | `learn` | 記錄來自錯誤的結構化教訓(錯誤、根本原因、修復、預防) |
487
+ | `task_state` | 讀取或記下工作進度——目標、下一步、卡住的地方、剛完成的事 |
488
+ | `briefing` | 組合好的工作拓撲——Claude Code 在 session 開始拿到的那個區塊,任何 MCP client 都拿得到 |
400
489
  | `user_patterns` | 分析你的工作模式——時間表、工具、優勢、學習領域 |
401
- | `verify_agent_work` | 保留背景代理工作的驗證報告;以 `git diff` 對所聲稱的檔案變更做現實檢查 |
402
490
 
403
491
  ---
404
492
 
@@ -407,7 +495,7 @@ memesh config set embedder.model text-embedding-3-small
407
495
  ```
408
496
  ┌─────────────────┐
409
497
  │ 核心引擎 │
410
- │ (8 項操作) │
498
+ │ (7 項操作) │
411
499
  └────────┬────────┘
412
500
  ┌─────────────────┼─────────────────┐
413
501
  │ │ │
@@ -429,18 +517,22 @@ Claude Code 的 plugin marketplace 在安裝時把版本釘住,**不會**自
429
517
 
430
518
  **方法 A — `/plugin` 介面**:先 uninstall `memesh@pcircle-memesh`,再重新安裝。Claude Code 會抓 marketplace 最新版。
431
519
 
432
- **方法 B — 一行指令**(不用點 UI、可重複執行):
520
+ **方法 B — 一行指令**(不用點 UI、可重複執行;需要 npm CLI,`npm install -g @pcircle/memesh`):
521
+
522
+ ```bash
523
+ memesh upgrade-plugin
524
+ ```
525
+
526
+ 它會自己找到已安裝的 plugin 版本、確認前置工具都在,再幫你執行內建的升級腳本。前置工具:PATH 上要有 `node`、`npm`、`rsync`(macOS 內建 rsync;Debian/Ubuntu:`sudo apt install rsync`)。
527
+
528
+ 只裝了 plugin、沒裝 npm CLI 的人,仍然可以手動執行腳本 — 把路徑裡的版本換成你安裝的版本:
433
529
 
434
530
  ```bash
435
- # 如果 plugin 已經是 v4.2.5 或更新,腳本已經內建:
436
531
  bash ~/.claude/plugins/cache/pcircle-memesh/memesh/<current-version>/scripts/upgrade-plugin.sh
437
532
 
438
- # 如果是 v4.2.5 之前的版本(也就是 v4.2.4 或 v4.2.3),
439
- # 腳本還沒在你的 plugin 裡,改用 npm-global 的副本:
533
+ # v4.2.5 之前的安裝還沒內建這個腳本,改用 npm-global 的副本
534
+ # (參考上面「安裝路徑一覽」):
440
535
  bash "$(npm prefix -g)/lib/node_modules/@pcircle/memesh/scripts/upgrade-plugin.sh"
441
-
442
- # (這假設你也跑過 `npm install -g @pcircle/memesh`。如果還沒,
443
- # 現在正好可以一起裝 — 參考上面「安裝路徑一覽」說明為什麼大部分人兩條路徑都裝。)
444
536
  ```
445
537
 
446
538
  腳本會 fast-forward marketplace cache、把新版本放進 `~/.claude/plugins/cache/`、安裝 runtime deps,然後把 `installed_plugins.json` 重指向新版本。執行完請重啟 Claude Code 讓 MCP server 重連。
@@ -454,8 +546,8 @@ Session 開始時,有新版本可下載時會跳一行 banner(每版本每 2
454
546
  ## 貢獻
455
547
 
456
548
  ```bash
457
- git clone https://github.com/PCIRCLE-AI/memesh-llm-memory
458
- cd memesh-llm-memory && npm install && npm run build
549
+ git clone https://github.com/PCIRCLE-AI/memesh
550
+ cd memesh && npm install && npm run build
459
551
  npm test # 630 項測試
460
552
  npm run test:e2e-dashboard
461
553
  ```