@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.vi.md DELETED
@@ -1,459 +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>Bộ nhớ cục bộ cho Claude Code và các agent coding MCP.</strong><br />
7
- Một file SQLite. Không Docker. Không cần cloud.
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
- > **Dự án đang phát triển tích cực** — tính năng cập nhật liên tục và có thể thay đổi giữa các bản phát hành. Nếu gặp lỗi hoặc có yêu cầu tính năng, vui lòng [mở issue](https://github.com/PCIRCLE-AI/memesh-llm-memory/issues).
21
-
22
- ## Vấn đề
23
-
24
- Agent coding của bạn quên mất những gì đã xảy ra giữa các phiên làm việc. Mỗi quyết định kiến trúc, bug fix, test thất bại và bài học từng trải phải được giải thích lại từ đầu. Claude Code luôn bắt đầu từ trang trắng, phát hiện lại những ràng buộc cũ, và lãng phí context cho những thứ nó đã nên biết.
25
-
26
- **MeMesh cung cấp bộ nhớ cục bộ, có khả năng tìm kiếm và phát triển liên tục cho các agent coding.**
27
-
28
- Package này là tầng bộ nhớ cục bộ của dòng sản phẩm MeMesh. Nó được thiết kế nhỏ gọn và mã nguồn mở: cài đặt qua npm, lưu bộ nhớ của bạn trong `~/.memesh/knowledge-graph.db`, và kết nối với Claude Code hoặc bất kỳ client tương thích MCP nào. Các sản phẩm workspace theo dõi và hệ điều hành enterprise nên được giữ riêng biệt với README và roadmap của package này.
29
-
30
- ---
31
-
32
- ## Bằng chứng — 95.60% R@5 trên LongMemEval-S
33
-
34
- Engine truy hồi của MeMesh là **chỉ FTS5** (không LLM, không embeddings trên hot path), được đo trên benchmark công khai [LongMemEval-S](https://huggingface.co/datasets/xiaowu0162/longmemeval) (500 câu hỏi, giấy phép MIT):
35
-
36
- | Hệ thống | R@5 | Nguồn |
37
- |---|---|---|
38
- | **MeMesh (Mode A, via `recallEnhanced()`)** | **95.60%** | [benchmarks/longmemeval/RESULTS.md](benchmarks/longmemeval/RESULTS.md) |
39
- | MemPalace | 96.6% | Vendor self-report |
40
- | Supermemory | ~82% | Vendor estimate |
41
- | Zep | 63.8% | LongMemEval paper |
42
- | Mem0 | 49.0% | LongMemEval paper |
43
-
44
- Lệnh tái hiện, SHA256 của dataset, kết quả thô theo từng câu hỏi, và phân tích các lỗi đã biết đều có trong [`benchmarks/longmemeval/`](benchmarks/longmemeval/). Có thể chạy lại trong ~10 giây.
45
-
46
- ---
47
-
48
- ## Tổng quan các đường cài đặt
49
-
50
- MeMesh có **hai đường cài đặt cùng tồn tại**. Hầu hết người dùng muốn cả hai. Chúng ghi vào **cùng một cơ sở dữ liệu bộ nhớ** (`~/.memesh/knowledge-graph.db`), nên ký ức ghi trong chat Claude Code sẽ xuất hiện ở shell, và ngược lại.
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
- **Bạn cần đường nào?**
80
-
81
- | Bạn muốn làm gì | Đường cài đặt |
82
- |---|---|
83
- | Dùng skill `/memesh` trong cuộc trò chuyện Claude Code | Path A (plugin) |
84
- | Tự động capture trong Claude Code (session → bài học → recall lần sau) | Path A (plugin) |
85
- | Chạy `memesh remember` / `memesh recall` / `memesh doctor` ở bất kỳ terminal nào | Path B (npm-global) |
86
- | Mở dashboard qua `memesh serve` (không bị trễ khởi động `npx`) | Path B (npm-global) |
87
- | Cắm `memesh-mcp` vào Cursor, Cline hoặc client MCP khác | Path B (npm-global) |
88
- | Tất cả các mục trên | **Cài cả hai** — không xung đột |
89
-
90
- > **Nhầm lẫn phổ biến**: plugin Claude Code **không** đặt `memesh` lên `PATH` của shell. Nếu bạn chỉ chạy `/plugin install` rồi gõ `memesh reindex` trong terminal, bạn sẽ thấy `command not found`. Đó là điều bình thường — thêm `npm install -g @pcircle/memesh` để có lệnh shell.
91
-
92
- ### ⚠️ Cài plugin KHÔNG cài CLI
93
-
94
- Đây là nhầm lẫn phổ biến nhất. Đọc một lần để tiết kiệm thời gian sau này:
95
-
96
- - `/plugin install memesh@pcircle-memesh` từ Claude Code → chỉ cài **Path A**. Bạn có công cụ MCP, hooks, skill `/memesh`. **KHÔNG** đặt `memesh` lên `PATH` shell.
97
- - `memesh reindex` / `memesh update` / `memesh doctor` gõ trong terminal → cần **Path B** (npm-global). Không có nó: `zsh: command not found: memesh`.
98
- - **Thiết lập khuyến nghị cho người dùng Claude Code**: **cài cả hai**. Cùng tồn tại, chia sẻ cùng DB, không xung đột.
99
-
100
- ```bash
101
- # Sau khi /plugin install ..., chạy luôn dòng này:
102
- npm install -g @pcircle/memesh
103
- ```
104
-
105
- Nếu bạn chỉ dùng memesh qua chat Claude Code (không bao giờ gõ `memesh` trong terminal), Path A đủ rồi. Còn lại: cài cả hai.
106
-
107
- ---
108
-
109
- ## Bắt đầu trong 60 giây
110
-
111
- ### Lựa chọn A — Plugin Claude Code (cài một dòng)
112
-
113
- Nếu bạn dùng Claude Code, cài MeMesh dưới dạng plugin ngay trong CLI:
114
-
115
- ```
116
- /plugin marketplace add PCIRCLE-AI/memesh-llm-memory
117
- /plugin install memesh@pcircle-memesh
118
- ```
119
-
120
- Claude Code tự động kết nối hooks, skills và MCP server. Bạn có auto-capture trong phiên, recall chủ động, skill `/memesh` trong cuộc trò chuyện, và `remember` / `recall` / `forget` / `learn` dưới dạng công cụ MCP cho agent.
121
-
122
- ### Lựa chọn B — npm global (tối ưu tuỳ chọn)
123
-
124
- Nếu bạn muốn binary nằm thẳng trên `PATH` (để `memesh` chạy được ở bất kỳ terminal nào mà không có độ trễ `npx`), hoặc muốn expose `memesh-mcp` như lệnh stdio đường dẫn cố định cho các MCP client ngoài Claude Code (Cursor, Cline):
125
-
126
- ```bash
127
- npm install -g @pcircle/memesh
128
- ```
129
-
130
- ### Bước 1.5: Kết nối MeMesh vào Claude Code (khuyến nghị, một lần)
131
-
132
- `npm install -g` đặt CLI vào PATH và đăng ký MCP server, nhưng **không** tự động kết nối các session hooks của MeMesh vào Claude Code. Không có hooks, bạn vẫn dùng được `memesh remember` / `recall` thủ công, nhưng **vòng tự động ghi nhận** (session → bài học → gọi lại chủ động ở session sau) sẽ im lặng.
133
-
134
- ```bash
135
- memesh install-hooks # thêm hooks memesh vào ~/.claude/settings.json
136
- memesh doctor # xác nhận "Hooks wired into Claude Code" PASS
137
- ```
138
-
139
- Các hooks này cùng tồn tại với bất kỳ hook tùy chỉnh nào trong `~/.claude/hooks/` — `install-hooks` ghi theo kiểu thêm, không bao giờ ghi đè của bạn. Để gỡ: `memesh uninstall-hooks`.
140
-
141
- ### Bước 2: Lưu một quyết định
142
-
143
- ```bash
144
- memesh remember "Use OAuth 2.0 with PKCE for the new auth"
145
- ```
146
-
147
- Hoặc dùng dạng tường minh khi bạn muốn một tên và kiểu ổn định để lọc về sau:
148
-
149
- ```bash
150
- memesh remember --name "auth-decision" --type "decision" --obs "Use OAuth 2.0 with PKCE"
151
- ```
152
-
153
- ### Bước 3: Gọi lại sau này
154
-
155
- ```bash
156
- memesh recall "login security"
157
- # → Tìm "OAuth 2.0 with PKCE" dù bạn tìm kiếm bằng từ khác
158
- ```
159
-
160
- **Vậy thôi.** MeMesh giờ đã nhớ và gọi lại thông tin qua các phiên làm việc.
161
-
162
- Nếu bạn muốn kiểm tra cài đặt và dây điều khiển cục bộ từ đầu đến cuối:
163
-
164
- ```bash
165
- memesh doctor
166
- ```
167
-
168
- Mở dashboard để khám phá bộ nhớ của bạn:
169
-
170
- ```bash
171
- memesh serve
172
- ```
173
-
174
- <p align="center">
175
- <img src="docs/images/dashboard-search.png" alt="MeMesh Search — tìm bất kỳ bộ nhớ nào instantly" width="100%" />
176
- </p>
177
-
178
- <p align="center">
179
- <img src="docs/images/dashboard-analytics.png" alt="MeMesh Analytics — health score, timeline, patterns, knowledge coverage" width="100%" />
180
- </p>
181
-
182
- <p align="center">
183
- <img src="docs/images/dashboard-graph.png" alt="MeMesh Graph — interactive knowledge graph with type filters and ego mode" width="100%" />
184
- </p>
185
-
186
- ---
187
-
188
- ## Dành cho ai?
189
-
190
- | Nếu bạn là... | MeMesh giúp bạn... |
191
- |---------------|---------------------|
192
- | **Nhà phát triển sử dụng Claude Code** | Tự động gọi lại các quyết định dự án, bài học cụ thể theo file, và những lỗi trong quá khứ khi bạn làm việc |
193
- | **Power user của coding agent** | Chia sẻ một tầng bộ nhớ cục bộ qua các công cụ tương thích MCP |
194
- | **Nhóm thử nghiệm workflow AI coding** | Export/import kiến thức dự án mà không cần hạ tầng được quản lý |
195
- | **Nhà phát triển agent** | Thêm bộ nhớ cục bộ thông qua MCP, HTTP, hoặc CLI |
196
-
197
- ---
198
-
199
- ## Thiết kế cho Coding Agent trước hết
200
-
201
- <table>
202
- <tr>
203
- <td width="33%" align="center">
204
-
205
- **Claude Code / Desktop**
206
- ```bash
207
- memesh-mcp
208
- ```
209
- MCP tools + Claude Code hooks
210
-
211
- </td>
212
- <td width="33%" align="center">
213
-
214
- **Bất kỳ HTTP Client**
215
- ```bash
216
- curl localhost:3737/v1/recall \
217
- -H "Content-Type: application/json" \
218
- -d '{"query":"auth"}'
219
- ```
220
- `memesh serve` (REST API)
221
-
222
- </td>
223
- <td width="33%" align="center">
224
-
225
- **Bất kỳ LLM (định dạng OpenAI)**
226
- ```bash
227
- memesh export-schema \
228
- --format openai
229
- ```
230
- Dán tools vào bất kỳ API call nào
231
-
232
- </td>
233
- </tr>
234
- </table>
235
-
236
- ---
237
-
238
- ## Tại sao không dùng OpenMemory, Cursor Memories, Mem0, hay Zep?
239
-
240
- | | **MeMesh** | OpenMemory | Cursor Memories | Mem0 | Zep / Graphiti |
241
- |---|---|---|---|---|---|
242
- | **Phù hợp nhất cho** | Bộ nhớ cục bộ cho coding agent | Bộ nhớ MCP cục bộ/cross-client | Bộ nhớ dự án native Cursor | Bộ nhớ app/agent được quản lý | Temporal knowledge graphs |
243
- | **Hình thức cài đặt** | `npm install -g @pcircle/memesh` | Local app/server flow | Tích hợp vào Cursor | Cloud API / SDK / MCP | Service/framework setup |
244
- | **Lưu trữ** | Một file SQLite cục bộ | Local memory stack | Cursor-managed rules/memories | Hosted hoặc self-hosted stack | Graph database |
245
- | **Cloud cần thiết** | Không | Không ở chế độ local | Tuỳ thuộc vào cài đặt tài khoản Cursor | Có cho platform | Thường có/self-hosted |
246
- | **Claude Code hooks** | First-class | MCP tools | Không | MCP tools | Không dành riêng cho Claude Code |
247
- | **Dashboard** | Tích hợp sẵn | Tích hợp sẵn | Cài đặt Cursor | Platform dashboard | Platform/graph tooling |
248
- | **Tradeoff** | Wedge cục bộ đơn giản, không phải quy mô enterprise | Footprint local app rộng hơn | Bị khóa vào Cursor | Platform được quản lý mạnh mẽ, local-first ít hơn | Strong graph model, heavier setup |
249
-
250
- **MeMesh đánh đổi hạ tầng được quản lý quy mô enterprise để có setup cục bộ tức thì, lưu trữ có thể kiểm tra, và coding-agent workflow hooks.**
251
-
252
- ---
253
-
254
- ## Điều gì xảy ra tự động trong Claude Code
255
-
256
- Bạn không cần phải manually nhớ mọi thứ. MeMesh có **6 hooks** để capture và inject kiến thức khi bạn làm việc:
257
-
258
- | Khi nào | MeMesh làm gì |
259
- |------|------------------|
260
- | **Mỗi lần session bắt đầu** | Load những memories liên quan nhất + cảnh báo chủ động từ bài học trong quá khứ + agentic-orchestration banner |
261
- | **Trước khi chỉnh sửa file** | Gọi lại memories liên quan đến file hoặc dự án trước khi Claude viết code |
262
- | **Khi bạn yêu cầu ghi nhớ** | Phát hiện ý định "remember this" / "記下來" và nhắc nhở (use memesh|ghi memesh) |
263
- | **Sau mỗi `git commit`** | Ghi lại những gì bạn thay đổi, với diff stats |
264
- | **Khi Claude dừng** | Capture những file đã chỉnh sửa, lỗi đã sửa, và auto-generate structured lessons từ failures |
265
- | **Trước khi context compact** | Lưu kiến thức trước khi nó bị mất do context limits |
266
-
267
- > **Opt out bất kỳ lúc nào:** `export MEMESH_AUTO_CAPTURE=false`
268
-
269
- ---
270
-
271
- ## Cấu hình
272
-
273
- Toàn bộ cấu hình thông qua biến môi trường. Các giá trị mặc định là local-only và zero-network — bạn không cần thiết lập gì để có một hệ thống hoạt động.
274
-
275
- | Biến | Mặc định | Tác dụng |
276
- |---|---|---|
277
- | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | Ghi đè vị trí của database SQLite. |
278
- | `MEMESH_AUTO_CAPTURE` | `true` | Tắt hoàn toàn các hooks auto-capture (`Stop`, `PreCompact`). |
279
- | `MEMESH_AUTO_DETECT_LLM` | chưa đặt (tự động phát hiện **bật**) | Đặt `0` để memesh KHÔNG dùng khóa API tìm thấy trong môi trường shell. Mặc định, nếu `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` được đặt và bạn chưa cấu hình nhà cung cấp trong `~/.memesh/config.json`, memesh sẽ dùng nó cho các tính năng LLM phía ghi (hợp nhất, trích xuất bài học, tự gắn thẻ, dream). Embeddings không bị ảnh hưởng — vẫn chỉ tìm kiếm theo từ khóa (FTS5) trừ khi bạn đặt `embedder.provider` thành `ollama` hoặc `openai`. |
280
- | `MEMESH_AUTO_UPDATE` | `off` | Chính sách auto-update. `off` (mặc định) không bao giờ tự cập nhật; `patch` cho phép `X.Y.Z → X.Y.Z+N`; `minor` thêm `X.Y.Z → X.Y+1.0`; `major` cho phép mọi bump. Khi được phép, một `npm install -g` detached chạy ở cuối session (Stop hook) để không bao giờ chặn công việc của bạn — kết quả lưu vào `~/.memesh/auto-update.log`. Cũng có thể đặt là `autoUpdate` trong `~/.memesh/config.json` (env thắng). Khi phiên bản đã cài bị maintainers đánh dấu deprecated (security advisory), `patch` sẽ được force-allowed ngay cả khi `off` — minor / major bumps vẫn manual để tránh behaviour drift im lặng. |
281
- | `OPENAI_API_KEY` | chưa đặt | Khóa OpenAI của bạn. Được dùng tự động cho các tính năng LLM trừ khi bạn đặt `MEMESH_AUTO_DETECT_LLM=0` hoặc cấu hình nhà cung cấp một cách rõ ràng. |
282
- | `OLLAMA_HOST` | `http://localhost:11434` | Ghi đè endpoint Ollama khi dùng local Ollama provider. |
283
-
284
- `memesh doctor` in ra cấu hình đã resolve để bạn thấy cái gì đang active.
285
-
286
- **Nhà cung cấp LLM dự phòng (Smart Mode).** Trong dashboard, tại **Settings → “Fallback providers”**, bạn có thể đặt một chuỗi failover có thứ tự — memesh thử lần lượt từng nhà cung cấp khi cái chính bị hỏng. Thêm một fallback cục bộ [Ollama](https://ollama.com), hoặc một cái trên cloud (OpenAI / Anthropic, cần API key). Đánh đổi về quyền riêng tư: khi dùng fallback cloud, văn bản bộ nhớ — vốn có thể riêng tư — sẽ được gửi tới nhà cung cấp đó, điều này quan trọng nếu bạn chạy hoàn toàn cục bộ vì quyền riêng tư.
287
-
288
- Khi npm gắn cờ phiên bản đã cài là deprecated (thường là security advisory), session-start kế tiếp sẽ thêm banner mạnh `⚠️ MeMesh <ver> is DEPRECATED` ở đầu và `memesh update-status` hiển thị cùng dòng đó cho đến khi bạn nâng cấp. Kết quả check được cache tại `~/.memesh/update-check.<version>.json` để một lỗi mạng tạm thời không làm mờ cảnh báo.
289
-
290
- ---
291
-
292
- ## Dashboard
293
-
294
- 8 tabs, 11 ngôn ngữ, không phụ thuộc bên ngoài. Truy cập tại `http://localhost:3737/dashboard` khi server đang chạy.
295
-
296
- | Tab | Bạn thấy gì |
297
- |-----|-------------|
298
- | **Insights** | Thông tin chi tiết về bộ nhớ — tóm tắt hàng tuần và đề xuất mẫu từ công cụ dreamer; chấp nhận/từ chối một cú nhấp |
299
- | **Search** | Full-text + vector similarity search trên tất cả memories |
300
- | **Browse** | Danh sách paginated tất cả entities với archive/restore |
301
- | **Analytics** | Memory Health Score, timeline 30 ngày, tốc độ PM + chỉ số kết nối KG, work patterns, cleanup suggestions |
302
- | **Graph** | Interactive force-directed knowledge graph với type filters, search, ego mode, recency heatmap |
303
- | **Lessons** | Structured lessons từ những lỗi trong quá khứ (error, root cause, fix, prevention) |
304
- | **Manage** | Archive và restore entities |
305
- | **Settings** | LLM provider config, instant language selector |
306
-
307
- ---
308
-
309
- ## Tính năng thông minh
310
-
311
- **🧠 Smart Search** — Tìm "login security" và tìm thấy memories về "OAuth PKCE". MeMesh dùng FTS5 + sqlite-vec trên hot path, không dùng LLM; phần bổ sung vector vẫn tiếp cận được các cách diễn đạt liên quan.
312
-
313
- **🌏 Tìm kiếm trong các hệ chữ không dùng khoảng trắng** — Tiếng Trung, Nhật, Hàn, Thái, Lào, Khmer và katakana nửa chiều rộng được lập chỉ mục theo từng cặp ký tự liền nhau, nên một ghi nhớ viết là 「資料庫遷移前一定要先備份」 sẽ tìm thấy bằng 「備份」 — không cần gõ lại đúng nguyên văn. Văn bản được chuẩn hóa (NFC) ở cả phía ghi lẫn phía truy vấn, nên ghi nhớ gõ trên macOS hoặc bằng IME tiếng Hàn, tiếng Việt đều tìm được ở cả hai cách viết.
314
-
315
- **📊 Scored Ranking** — Kết quả được xếp hạng theo relevance (30%) + recency (25%) + frequency (18%) + confidence (17%) + recall impact (10%).
316
-
317
- **🔄 Knowledge Evolution** — Quyết định thay đổi. `forget` archives old memories (không bao giờ xóa). `supersedes` relations liên kết old → new. AI của bạn luôn thấy phiên bản mới nhất.
318
-
319
- **⚠️ Conflict Detection** — Nếu bạn có hai memories mâu thuẫn với nhau, MeMesh cảnh báo bạn.
320
-
321
- **🕸️ Kết nối đồ thị tri thức** — `memesh kg backfill-relations --all-rules` liên kết các thực thể cô lập bằng cách sử dụng đồng xuất hiện thẻ, phân cụm dự án, ngữ cảnh phiên và độ tương đồng tên — không cần LLM.
322
-
323
- **📦 Team Sharing** — `memesh export > team-knowledge.json` → chia sẻ với team → `memesh import team-knowledge.json`
324
- Các imported bundles vẫn có thể tìm kiếm được, nhưng MeMesh không auto-inject imported memories vào Claude hooks cho đến khi bạn review hoặc re-store chúng locally.
325
-
326
- ---
327
-
328
- ## Ví dụ sử dụng
329
-
330
- > "MeMesh đã nhớ rằng chúng tôi chọn PKCE thay vì implicit flow ba tuần trước. Khi tôi hỏi Claude về auth lại, nó đã biết — không cần giải thích lại."
331
- > — **Nhà phát triển solo, xây dựng SaaS**
332
-
333
- > "Chúng tôi export team memory mỗi thứ Sáu và import thứ Hai. Claude của mỗi người bắt đầu tuần biết những gì team đã học tuần trước."
334
- > — **Startup 3 người, knowledge base được chia sẻ**
335
-
336
- > "Dashboard cho tôi thấy 90% memories của tôi là auto-generated session logs. Tôi bắt đầu sử dụng `remember` có ý định cho architectural decisions. Game changer."
337
- > — **Nhà phát triển khám phá ra Analytics tab**
338
-
339
- ---
340
-
341
- ## Mở khóa Smart Mode (Tuỳ chọn)
342
-
343
- MeMesh hoạt động offline theo mặc định — recall luôn LLM-free (95.60% R@5 trên LongMemEval-S, không cần LLM). Thêm LLM API key chỉ nếu bạn muốn các luồng phân tích LLM-augmented bổ sung: trích xuất session thông minh hơn, auto-tagging cho memories mới, phân tích lỗi thành lessons có cấu trúc, và compression `dream`:
344
-
345
- ```bash
346
- memesh config set llm.provider anthropic
347
- memesh config set llm.api-key sk-ant-...
348
- ```
349
-
350
- Hoặc dùng dashboard Settings tab (visual setup):
351
-
352
- ```bash
353
- memesh serve # mở dashboard → Settings tab
354
- ```
355
-
356
- **Khai thác các phiên trước thành bộ nhớ.** `memesh dream run --from-transcripts` đọc bản ghi phiên Claude Code của dự án này, hỏi LLM về các quyết định và bài học ẩn trong cuộc trò chuyện, rồi lưu tạm chúng dưới dạng đề xuất — không có gì tự động vào đồ thị của bạn. Xem lại từng cái bằng `memesh dream show <id>` và chấp nhận những cái đáng giữ.
357
-
358
- ### Dùng embeddings của riêng bạn (tùy chọn)
359
-
360
- Mặc định MeMesh recall **chỉ theo từ khóa** (FTS5) — không cần khóa API, không tải mô hình, không có gì rời khỏi máy bạn. Tìm kiếm ngữ nghĩa (theo ý nghĩa) là tùy chọn và cần một embedder. Hãy cấu hình một trong số:
361
-
362
- ```bash
363
- memesh config set embedder.provider openai # or: ollama
364
- memesh config set embedder.model text-embedding-3-small
365
- ```
366
-
367
- Embedder được cấu hình **độc lập với LLM chat** — thay đổi `llm.provider` không bao giờ âm thầm thay đổi embeddings của bạn. Nếu bạn chuyển sang chiều khác (ví dụ 768 → 1536), MeMesh tự động xây dựng lại chỉ mục vector ở lần ghi tiếp theo. Các giá trị `embedder.provider` được hỗ trợ: `ollama` (cục bộ), `openai` (đám mây). Không đặt gì thì recall vẫn là tìm kiếm theo từ khóa.
368
-
369
- | | Level 0 (default) | Level 1 (Smart Mode) |
370
- |---|---|---|
371
- | **Tìm kiếm** | FTS5 + sqlite-vec, 95.60% R@5 | giữ nguyên — recall luôn LLM-free ở mọi level |
372
- | **Auto-capture** | Rule-based patterns | + LLM extracts decisions & lessons |
373
- | **Auto-tagging** | Chỉ thẻ thủ công | + LLM tự động gắn nhãn entity mới |
374
- | **Phân tích lỗi** | Không có sẵn | + LLM chuyển session errors thành structured lessons |
375
- | **Compression** | Không có sẵn | `dream` nén verbose memories |
376
- | **Chi phí** | Free, no API key | ~$0.0001 mỗi analysis call (Haiku) |
377
-
378
- ---
379
-
380
- ## Cả 7 Memory Tools
381
-
382
- | Tool | Nó làm gì |
383
- |------|-------------|
384
- | `remember` | Lưu trữ kiến thức với observations, relations, và tags |
385
- | `recall` | Tìm kiếm FTS5 + sqlite-vec với multi-factor scoring (relevance, recency, frequency, confidence, recall impact) — không có LLM trong hot path |
386
- | `forget` | Soft-archive (không bao giờ xóa) hoặc xóa observations cụ thể |
387
- | `export` | Chia sẻ memories dưới dạng JSON giữa các dự án hoặc thành viên team |
388
- | `import` | Import memories với merge strategies (skip / overwrite / append) |
389
- | `learn` | Ghi lại structured lessons từ những sai lầm (error, root cause, fix, prevention) |
390
- | `user_patterns` | Phân tích work patterns của bạn — schedule, tools, strengths, learning areas |
391
-
392
- ---
393
-
394
- ## Kiến trúc
395
-
396
- ```
397
- ┌─────────────────┐
398
- │ Core Engine │
399
- │ (7 operations) │
400
- └────────┬────────┘
401
- ┌─────────────────┼─────────────────┐
402
- │ │ │
403
- CLI (memesh) HTTP API (serve) MCP (memesh-mcp)
404
- │ │ │
405
- └─────────────────┼─────────────────┘
406
-
407
- SQLite + FTS5 + sqlite-vec
408
- (~/.memesh/knowledge-graph.db)
409
- ```
410
-
411
- Core là framework-agnostic. Logic tương tự chạy từ terminal, HTTP, hoặc MCP.
412
-
413
- ---
414
-
415
- ## Nâng cấp
416
-
417
- Plugin marketplace của Claude Code ghim phiên bản lúc cài đặt và **không** tự động cập nhật. Để lấy bản phát hành mới:
418
-
419
- **Tùy chọn A — Giao diện `/plugin`**: gỡ cài `memesh@pcircle-memesh`, rồi cài lại. Claude Code sẽ kéo phiên bản mới nhất từ marketplace.
420
-
421
- **Tùy chọn B — Script một dòng** (không cần click UI, idempotent):
422
-
423
- ```bash
424
- # Nếu bản plugin đã cài là v4.2.5 trở lên, script đã có sẵn:
425
- bash ~/.claude/plugins/cache/pcircle-memesh/memesh/<current-version>/scripts/upgrade-plugin.sh
426
-
427
- # Nếu bạn cài trước v4.2.5 (tức là v4.2.4 hoặc v4.2.3),
428
- # script chưa nằm trong plugin của bạn. Dùng bản sao npm-global thay thế:
429
- bash "$(npm prefix -g)/lib/node_modules/@pcircle/memesh/scripts/upgrade-plugin.sh"
430
-
431
- # (Giả định bạn cũng đã chạy `npm install -g @pcircle/memesh`. Nếu chưa, đây là
432
- # thời điểm tốt để cài — xem phần "Tổng quan các đường cài đặt" ở trên để hiểu
433
- # vì sao đa số người dùng muốn có cả hai đường.)
434
- ```
435
-
436
- Script sẽ fast-forward marketplace cache, đặt phiên bản mới vào `~/.claude/plugins/cache/`, cài runtime deps, rồi trỏ lại `installed_plugins.json`. Khởi động lại Claude Code sau đó để MCP server kết nối lại.
437
-
438
- **Bản cài npm-global** (`npm install -g @pcircle/memesh`) có thể tự cập nhật qua `memesh update`. Source checkouts: `git pull && npm install && npm run build`.
439
-
440
- Khi bắt đầu session, banner một dòng (throttle mỗi 24h mỗi version) hiện ra khi có bản phát hành mới, và `memesh doctor` báo cáo phiên bản nâng cấp với lệnh tương ứng kênh cài đặt.
441
-
442
- ---
443
-
444
- ## Đóng góp
445
-
446
- ```bash
447
- git clone https://github.com/PCIRCLE-AI/memesh-llm-memory
448
- cd memesh-llm-memory && npm install && npm run build
449
- npm test
450
- npm run test:e2e-dashboard
451
- ```
452
-
453
- Dashboard: `cd dashboard && npm install && npm run dev`
454
-
455
- ---
456
-
457
- <p align="center">
458
- <strong>MIT</strong> — Được tạo bởi <a href="https://pcircle.com">PCIRCLE AI</a>
459
- </p>