@pcircle/memesh 4.5.1 → 4.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (202) hide show
  1. package/.claude-plugin/marketplace.json +5 -3
  2. package/.claude-plugin/plugin.json +6 -4
  3. package/AGENTS.md +116 -0
  4. package/README.de.md +141 -48
  5. package/README.md +173 -48
  6. package/README.zh-TW.md +142 -48
  7. package/dashboard/dist/index.html +15 -14
  8. package/dist/cli/view-live.js +3 -3
  9. package/dist/core/analytics.d.ts +9 -0
  10. package/dist/core/analytics.d.ts.map +1 -1
  11. package/dist/core/analytics.js +36 -18
  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 +92 -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.map +1 -1
  27. package/dist/core/conflict-candidates.d.ts +20 -0
  28. package/dist/core/conflict-candidates.d.ts.map +1 -0
  29. package/dist/core/conflict-candidates.js +79 -0
  30. package/dist/core/conflict-candidates.js.map +1 -0
  31. package/dist/core/conflict-judge.d.ts +47 -0
  32. package/dist/core/conflict-judge.d.ts.map +1 -0
  33. package/dist/core/conflict-judge.js +189 -0
  34. package/dist/core/conflict-judge.js.map +1 -0
  35. package/dist/core/demo.d.ts.map +1 -1
  36. package/dist/core/demo.js +1 -1
  37. package/dist/core/demo.js.map +1 -1
  38. package/dist/core/digest-validator.d.ts.map +1 -1
  39. package/dist/core/digest-validator.js +3 -5
  40. package/dist/core/digest-validator.js.map +1 -1
  41. package/dist/core/doctor.d.ts +2 -0
  42. package/dist/core/doctor.d.ts.map +1 -1
  43. package/dist/core/doctor.js +59 -62
  44. package/dist/core/doctor.js.map +1 -1
  45. package/dist/core/dreamer.d.ts +5 -2
  46. package/dist/core/dreamer.d.ts.map +1 -1
  47. package/dist/core/dreamer.js +329 -25
  48. package/dist/core/dreamer.js.map +1 -1
  49. package/dist/core/embedder.d.ts +8 -4
  50. package/dist/core/embedder.d.ts.map +1 -1
  51. package/dist/core/embedder.js +82 -24
  52. package/dist/core/embedder.js.map +1 -1
  53. package/dist/core/failure-analyzer.d.ts.map +1 -1
  54. package/dist/core/failure-analyzer.js +7 -12
  55. package/dist/core/failure-analyzer.js.map +1 -1
  56. package/dist/core/graph.d.ts +12 -0
  57. package/dist/core/graph.d.ts.map +1 -1
  58. package/dist/core/graph.js +56 -1
  59. package/dist/core/graph.js.map +1 -1
  60. package/dist/core/guards.d.ts +20 -0
  61. package/dist/core/guards.d.ts.map +1 -0
  62. package/dist/core/guards.js +103 -0
  63. package/dist/core/guards.js.map +1 -0
  64. package/dist/core/install-channel.d.ts +1 -1
  65. package/dist/core/install-channel.d.ts.map +1 -1
  66. package/dist/core/install-channel.js +16 -5
  67. package/dist/core/install-channel.js.map +1 -1
  68. package/dist/core/install-hooks.d.ts +5 -0
  69. package/dist/core/install-hooks.d.ts.map +1 -1
  70. package/dist/core/install-hooks.js +0 -0
  71. package/dist/core/install-hooks.js.map +1 -1
  72. package/dist/core/json-utils.d.ts +1 -0
  73. package/dist/core/json-utils.d.ts.map +1 -1
  74. package/dist/core/json-utils.js +19 -10
  75. package/dist/core/json-utils.js.map +1 -1
  76. package/dist/core/kg-backfill.d.ts +5 -2
  77. package/dist/core/kg-backfill.d.ts.map +1 -1
  78. package/dist/core/kg-backfill.js +155 -5
  79. package/dist/core/kg-backfill.js.map +1 -1
  80. package/dist/core/lifecycle.d.ts.map +1 -1
  81. package/dist/core/lifecycle.js +14 -21
  82. package/dist/core/lifecycle.js.map +1 -1
  83. package/dist/core/memory-tool.d.ts.map +1 -1
  84. package/dist/core/memory-tool.js +4 -4
  85. package/dist/core/memory-tool.js.map +1 -1
  86. package/dist/core/operations.d.ts +13 -2
  87. package/dist/core/operations.d.ts.map +1 -1
  88. package/dist/core/operations.js +115 -28
  89. package/dist/core/operations.js.map +1 -1
  90. package/dist/core/prompt-safety.d.ts +1 -0
  91. package/dist/core/prompt-safety.d.ts.map +1 -1
  92. package/dist/core/prompt-safety.js +7 -0
  93. package/dist/core/prompt-safety.js.map +1 -1
  94. package/dist/core/schema-export.d.ts.map +1 -1
  95. package/dist/core/schema-export.js +31 -0
  96. package/dist/core/schema-export.js.map +1 -1
  97. package/dist/core/serializer.d.ts.map +1 -1
  98. package/dist/core/serializer.js +8 -0
  99. package/dist/core/serializer.js.map +1 -1
  100. package/dist/core/setup.d.ts +29 -0
  101. package/dist/core/setup.d.ts.map +1 -0
  102. package/dist/core/setup.js +127 -0
  103. package/dist/core/setup.js.map +1 -0
  104. package/dist/core/task-state-store.d.ts +17 -0
  105. package/dist/core/task-state-store.d.ts.map +1 -0
  106. package/dist/core/task-state-store.js +45 -0
  107. package/dist/core/task-state-store.js.map +1 -0
  108. package/dist/core/task-state.d.ts +19 -0
  109. package/dist/core/task-state.d.ts.map +1 -0
  110. package/dist/core/task-state.js +91 -0
  111. package/dist/core/task-state.js.map +1 -0
  112. package/dist/core/time-utils.d.ts +2 -0
  113. package/dist/core/time-utils.d.ts.map +1 -0
  114. package/dist/core/time-utils.js +14 -0
  115. package/dist/core/time-utils.js.map +1 -0
  116. package/dist/core/title.d.ts +5 -0
  117. package/dist/core/title.d.ts.map +1 -0
  118. package/dist/core/title.js +14 -0
  119. package/dist/core/title.js.map +1 -0
  120. package/dist/core/transcript-source.d.ts.map +1 -1
  121. package/dist/core/transcript-source.js +2 -3
  122. package/dist/core/transcript-source.js.map +1 -1
  123. package/dist/core/types.d.ts +5 -0
  124. package/dist/core/types.d.ts.map +1 -1
  125. package/dist/core/why.d.ts +54 -0
  126. package/dist/core/why.d.ts.map +1 -0
  127. package/dist/core/why.js +168 -0
  128. package/dist/core/why.js.map +1 -0
  129. package/dist/core/work-topology.d.ts +36 -0
  130. package/dist/core/work-topology.d.ts.map +1 -0
  131. package/dist/core/work-topology.js +192 -0
  132. package/dist/core/work-topology.js.map +1 -0
  133. package/dist/db.d.ts +33 -11
  134. package/dist/db.d.ts.map +1 -1
  135. package/dist/db.js +307 -315
  136. package/dist/db.js.map +1 -1
  137. package/dist/knowledge-graph.d.ts +1 -0
  138. package/dist/knowledge-graph.d.ts.map +1 -1
  139. package/dist/knowledge-graph.js +50 -40
  140. package/dist/knowledge-graph.js.map +1 -1
  141. package/dist/skills-manifest.json +62 -22
  142. package/dist/storage/conflicts.d.ts.map +1 -1
  143. package/dist/storage/conflicts.js +2 -7
  144. package/dist/storage/conflicts.js.map +1 -1
  145. package/dist/storage/fts-index.d.ts +4 -2
  146. package/dist/storage/fts-index.d.ts.map +1 -1
  147. package/dist/storage/fts-index.js +16 -4
  148. package/dist/storage/fts-index.js.map +1 -1
  149. package/dist/storage/schema.d.ts +20 -0
  150. package/dist/storage/schema.d.ts.map +1 -0
  151. package/dist/storage/schema.js +274 -0
  152. package/dist/storage/schema.js.map +1 -0
  153. package/dist/storage/sqlite.d.ts.map +1 -1
  154. package/dist/storage/sqlite.js +1 -1
  155. package/dist/storage/sqlite.js.map +1 -1
  156. package/dist/transports/cli/cli.d.ts +1 -4
  157. package/dist/transports/cli/cli.d.ts.map +1 -1
  158. package/dist/transports/cli/cli.js +579 -66
  159. package/dist/transports/cli/cli.js.map +1 -1
  160. package/dist/transports/http/server.d.ts.map +1 -1
  161. package/dist/transports/http/server.js +242 -303
  162. package/dist/transports/http/server.js.map +1 -1
  163. package/dist/transports/mcp/handlers.d.ts +46 -0
  164. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  165. package/dist/transports/mcp/handlers.js +59 -4
  166. package/dist/transports/mcp/handlers.js.map +1 -1
  167. package/dist/transports/schemas.d.ts +29 -10
  168. package/dist/transports/schemas.d.ts.map +1 -1
  169. package/dist/transports/schemas.js +33 -8
  170. package/dist/transports/schemas.js.map +1 -1
  171. package/hooks/hooks.json +10 -0
  172. package/llms-install.md +138 -0
  173. package/package.json +14 -9
  174. package/scripts/hooks/_generated/capture-flag.js +17 -0
  175. package/scripts/hooks/_generated/fts-index.js +16 -4
  176. package/scripts/hooks/_generated/guards.js +110 -0
  177. package/scripts/hooks/_generated/schema.js +281 -0
  178. package/scripts/hooks/_generated/sqlite.js +1 -1
  179. package/scripts/hooks/_generated/task-state.js +98 -0
  180. package/scripts/hooks/_generated/time-utils.js +21 -0
  181. package/scripts/hooks/_generated/title.js +21 -0
  182. package/scripts/hooks/_generated/work-topology.js +199 -0
  183. package/scripts/hooks/_shared.js +197 -480
  184. package/scripts/hooks/guard-check.js +76 -0
  185. package/scripts/hooks/post-commit.js +31 -1
  186. package/scripts/hooks/pre-compact.js +13 -1
  187. package/scripts/hooks/pre-edit-recall.js +158 -120
  188. package/scripts/hooks/session-start.js +169 -82
  189. package/scripts/hooks/session-summary.js +78 -90
  190. package/skills/memesh/SKILL.md +108 -76
  191. package/README.es.md +0 -467
  192. package/README.fr.md +0 -459
  193. package/README.ja.md +0 -467
  194. package/README.ko.md +0 -467
  195. package/README.pt.md +0 -459
  196. package/README.th.md +0 -460
  197. package/README.vi.md +0 -459
  198. package/README.zh-CN.md +0 -466
  199. package/dist/cli/view.d.ts +0 -3
  200. package/dist/cli/view.d.ts.map +0 -1
  201. package/dist/cli/view.js +0 -523
  202. package/dist/cli/view.js.map +0 -1
package/README.fr.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>Mémoire locale pour Claude Code et les agents de codage MCP.</strong><br />
7
- Un fichier SQLite. Aucun Docker. Aucun cloud requis.
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
- > **Projet en développement actif** — les fonctionnalités évoluent continuellement et peuvent changer entre les versions. En cas de bug ou de demande de fonctionnalité, merci d'[ouvrir une issue](https://github.com/PCIRCLE-AI/memesh-llm-memory/issues).
21
-
22
- ## Le Problème
23
-
24
- Votre agent de codage oublie ce qui s'est passé d'une session à l'autre. Chaque décision architecturale, correction de bug, test échoué et leçon apprise difficilement doit être réexpliquée. Claude Code redémarre à zéro, redécouvre les anciennes contraintes et gaspille du contexte sur des éléments qu'il devrait déjà connaître.
25
-
26
- **MeMesh offre aux agents de codage une mémoire locale persistante, consultable et évolutive.**
27
-
28
- Ce package constitue la couche de mémoire locale de la famille de produits MeMesh. Il est volontairement léger et open-source : installez-le avec npm, conservez votre mémoire dans `~/.memesh/knowledge-graph.db` et connectez-le à Claude Code ou à tout client compatible MCP. Les produits d'espace de travail hébergé et les systèmes d'exploitation d'entreprise doivent rester distincts de ce README et de la feuille de route du package.
29
-
30
- ---
31
-
32
- ## Preuve — 95,60 % R@5 sur LongMemEval-S
33
-
34
- Le moteur de récupération de MeMesh utilise **FTS5 seul** (pas de LLM, pas d'embeddings sur le chemin chaud), mesuré sur le benchmark public [LongMemEval-S](https://huggingface.co/datasets/xiaowu0162/longmemeval) (500 questions, licence MIT) :
35
-
36
- | Système | R@5 | Source |
37
- |---|---|---|
38
- | **MeMesh (Mode A, via `recallEnhanced()`)** | **95,60 %** | [benchmarks/longmemeval/RESULTS.md](benchmarks/longmemeval/RESULTS.md) |
39
- | MemPalace | 96,6 % | Auto-déclaration de l'éditeur |
40
- | Supermemory | ~82 % | Estimation de l'éditeur |
41
- | Zep | 63,8 % | Article LongMemEval |
42
- | Mem0 | 49,0 % | Article LongMemEval |
43
-
44
- Les commandes de reproduction, le SHA256 du jeu de données, les résultats bruts par question et l'analyse des échecs connus se trouvent tous dans [`benchmarks/longmemeval/`](benchmarks/longmemeval/). Réexécutable en environ 10 secondes.
45
-
46
- ---
47
-
48
- ## Aperçu des chemins d'installation
49
-
50
- MeMesh a **deux chemins d'installation coexistants**. La plupart des utilisateurs veulent les deux. Ils écrivent dans la **même base de données mémoire** (`~/.memesh/knowledge-graph.db`), donc les mémoires capturées dans Claude Code apparaissent dans votre shell, et vice versa.
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
- **Lequel vous faut-il ?**
80
-
81
- | Ce que vous voulez faire | Chemin d'installation |
82
- |---|---|
83
- | Utiliser le skill `/memesh` dans une conversation Claude Code | Path A (plugin) |
84
- | Auto-capture dans Claude Code (session → leçons → recall suivant) | Path A (plugin) |
85
- | Exécuter `memesh remember` / `memesh recall` / `memesh doctor` dans n'importe quel terminal | Path B (npm-global) |
86
- | Ouvrir le dashboard via `memesh serve` (sans délai de démarrage `npx`) | Path B (npm-global) |
87
- | Brancher `memesh-mcp` à Cursor, Cline ou un autre client MCP | Path B (npm-global) |
88
- | Tout ce qui précède | **Installez les deux** — ils ne sont pas en conflit |
89
-
90
- > **Confusion courante** : le plugin Claude Code **ne** met **pas** `memesh` sur votre `PATH` shell. Si vous lancez seulement `/plugin install` puis tapez `memesh reindex` dans un terminal, vous verrez `command not found`. C'est normal — il faut aussi `npm install -g @pcircle/memesh` pour l'accès shell.
91
-
92
- ### ⚠️ Installer le plugin n'installe PAS le CLI
93
-
94
- C'est la confusion la plus fréquente. Lisez ceci une fois et vous gagnerez du temps plus tard :
95
-
96
- - `/plugin install memesh@pcircle-memesh` depuis Claude Code → installe **uniquement Path A**. Vous obtenez les outils MCP, les hooks, le skill `/memesh`. `memesh` n'est **PAS** ajouté à votre `PATH` shell.
97
- - `memesh reindex` / `memesh update` / `memesh doctor` dans un terminal → nécessite **Path B** (npm-global). Sans : `zsh: command not found: memesh`.
98
- - **Configuration recommandée pour les utilisateurs Claude Code** : **installez les deux**. Coexistent, partagent la même base de données, aucun conflit.
99
-
100
- ```bash
101
- # Après /plugin install ..., exécutez aussi ceci :
102
- npm install -g @pcircle/memesh
103
- ```
104
-
105
- Si vous utilisez memesh uniquement via le chat Claude Code (jamais `memesh` dans un terminal), Path A suffit. Tous les autres : installez les deux.
106
-
107
- ---
108
-
109
- ## Démarrer en 60 Secondes
110
-
111
- ### Option A — Plugin Claude Code (installation en une ligne)
112
-
113
- Si vous utilisez Claude Code, installez MeMesh comme plugin depuis la CLI :
114
-
115
- ```
116
- /plugin marketplace add PCIRCLE-AI/memesh-llm-memory
117
- /plugin install memesh@pcircle-memesh
118
- ```
119
-
120
- Claude Code connecte automatiquement les hooks, les skills et le serveur MCP. Vous obtenez l'auto-capture en session, le rappel proactif, le skill `/memesh` dans la conversation, et `remember` / `recall` / `forget` / `learn` comme outils MCP pour l'agent.
121
-
122
- ### Option B — npm global (optimisation facultative)
123
-
124
- Si vous voulez le binaire directement sur votre `PATH` (pour que `memesh` fonctionne dans n'importe quel terminal sans le délai `npx`), ou exposer `memesh-mcp` comme commande stdio à chemin fixe pour des clients MCP hors Claude Code (Cursor, Cline) :
125
-
126
- ```bash
127
- npm install -g @pcircle/memesh
128
- ```
129
-
130
- ### Étape 1,5 : Connecter MeMesh à Claude Code (recommandé, une seule fois)
131
-
132
- `npm install -g` place la CLI dans le PATH et enregistre le serveur MCP, mais **ne connecte pas** automatiquement les hooks de session MeMesh à Claude Code. Sans ces hooks, vous pouvez utiliser `memesh remember` / `recall` manuellement, mais la **boucle d'auto-capture** (session → leçons → rappel proactif à la session suivante) reste silencieuse.
133
-
134
- ```bash
135
- memesh install-hooks # ajoute les hooks memesh à ~/.claude/settings.json
136
- memesh doctor # vérifie que « Hooks wired into Claude Code » passe
137
- ```
138
-
139
- Ces hooks coexistent avec vos hooks personnalisés dans `~/.claude/hooks/` — `install-hooks` écrit de manière additive et n'écrase jamais les vôtres. Pour supprimer : `memesh uninstall-hooks`.
140
-
141
- ### Étape 2 : Mémoriser une décision
142
-
143
- ```bash
144
- memesh remember "Use OAuth 2.0 with PKCE for the new auth"
145
- ```
146
-
147
- Ou utilisez la forme explicite quand vous voulez un nom et un type stables pour filtrer plus tard :
148
-
149
- ```bash
150
- memesh remember --name "auth-decision" --type "decision" --obs "Use OAuth 2.0 with PKCE"
151
- ```
152
-
153
- ### Étape 3 : La rappeler plus tard
154
-
155
- ```bash
156
- memesh recall "login security"
157
- # → Trouve "OAuth 2.0 with PKCE" même si vous avez cherché des mots différents
158
- ```
159
-
160
- **C'est tout.** MeMesh mémorise et rappelle désormais d'une session à l'autre.
161
-
162
- Pour vérifier l'installation et la connexion locale de bout en bout :
163
-
164
- ```bash
165
- memesh doctor
166
- ```
167
-
168
- Ouvrez le tableau de bord pour explorer votre mémoire :
169
-
170
- ```bash
171
- memesh serve
172
- ```
173
-
174
- <p align="center">
175
- <img src="docs/images/dashboard-search.png" alt="MeMesh Search — trouve n'importe quelle mémoire instantanément" width="100%" />
176
- </p>
177
-
178
- <p align="center">
179
- <img src="docs/images/dashboard-analytics.png" alt="MeMesh Analytics — score de santé, frise chronologique, motifs, couverture des connaissances" width="100%" />
180
- </p>
181
-
182
- <p align="center">
183
- <img src="docs/images/dashboard-graph.png" alt="MeMesh Graph — graphe de connaissances interactif avec filtres de type et mode ego" width="100%" />
184
- </p>
185
-
186
- ---
187
-
188
- ## À Qui S'Adresse-T-Il ?
189
-
190
- | Si vous êtes... | MeMesh vous aide à... |
191
- |---|---|
192
- | **Un développeur utilisant Claude Code** | Rappeler automatiquement les décisions du projet, les leçons spécifiques aux fichiers et les échecs passés au fur et à mesure du travail |
193
- | **Un utilisateur avancé d'agent de codage** | Partager une couche de mémoire locale unique sur les outils compatibles MCP |
194
- | **Une équipe expérimentant les workflows de codage IA** | Exporter/importer les connaissances du projet sans infrastructure hébergée |
195
- | **Un développeur d'agent** | Ajouter la mémoire locale via MCP, HTTP ou la CLI |
196
-
197
- ---
198
-
199
- ## Conçu d'Abord Pour Les Agents De Codage
200
-
201
- <table>
202
- <tr>
203
- <td width="33%" align="center">
204
-
205
- **Claude Code / Desktop**
206
- ```bash
207
- memesh-mcp
208
- ```
209
- Outils MCP + hooks Claude Code
210
-
211
- </td>
212
- <td width="33%" align="center">
213
-
214
- **N'Importe Quel Client HTTP**
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
- **N'Importe Quel LLM (Format OpenAI)**
226
- ```bash
227
- memesh export-schema \
228
- --format openai
229
- ```
230
- Collez les outils dans n'importe quel appel API
231
-
232
- </td>
233
- </tr>
234
- </table>
235
-
236
- ---
237
-
238
- ## Pourquoi Pas OpenMemory, Cursor Memories, Mem0 Ou Zep ?
239
-
240
- | | **MeMesh** | OpenMemory | Cursor Memories | Mem0 | Zep / Graphiti |
241
- |---|---|---|---|---|---|
242
- | **Meilleur usage** | Mémoire locale pour agents de codage | Mémoire MCP locale/multi-client | Mémoire de projet Cursor native | Mémoire d'app/agent gérée | Graphes de connaissances temporels |
243
- | **Installation** | `npm install -g @pcircle/memesh` | App/serveur local | Intégré à Cursor | API Cloud / SDK / MCP | Configuration service/framework |
244
- | **Stockage** | Un seul fichier SQLite local | Pile de mémoire locale | Règles/mémoires gérés par Cursor | Stack hébergée ou auto-hébergée | Base de données graphe |
245
- | **Cloud requis** | Non | Non pour le mode local | Dépend du compte/paramètres Cursor | Oui pour la plateforme | Généralement oui/auto-hébergée |
246
- | **Hooks Claude Code** | Première classe | Outils MCP | Non | Outils MCP | Pas spécifique à Claude Code |
247
- | **Tableau de bord** | Intégré | Intégré | Paramètres Cursor | Tableau de bord plateforme | Outils plateforme/graphe |
248
- | **Tradeoff** | Coin simple et local, non adapté à l'échelle entreprise | Empreinte app locale plus large | Verrouillé à Cursor | Plateforme gérée puissante, moins local-first | Modèle graphe puissant, configuration plus lourde |
249
-
250
- **MeMesh sacrifie l'infrastructure gérée à l'échelle entreprise pour une installation locale instantanée, un stockage inspectable et des hooks de workflow spécifiques aux agents de codage.**
251
-
252
- ---
253
-
254
- ## Ce Qui Se Passe Automatiquement Dans Claude Code
255
-
256
- Vous n'avez pas besoin de tout mémoriser manuellement. MeMesh possède **6 hooks** qui capturent et injectent les connaissances au fur et à mesure que vous travaillez :
257
-
258
- | Quand | Ce que MeMesh fait |
259
- |---|---|
260
- | **Au début de chaque session** | Charge vos mémoires les plus pertinentes + avertissements proactifs des leçons passées + banneau d'orchestration agentique |
261
- | **Avant d'éditer des fichiers** | Rappelle les mémoires liées au fichier ou au projet avant que Claude ne rédige du code |
262
- | **Lorsque vous demandez de mémoriser** | Détecte l'intention "remember this" / "記下來" et rappelle à Claude d'écrire en double (memesh + MEMORY.md) |
263
- | **Après chaque `git commit`** | Enregistre ce que vous avez modifié, avec les statistiques de diff |
264
- | **Quand Claude s'arrête** | Capture les fichiers édités, les erreurs corrigées et génère automatiquement des leçons structurées à partir des défaillances |
265
- | **Avant la compaction de contexte** | Sauvegarde les connaissances avant qu'elles ne soient perdues aux limites de contexte |
266
-
267
- > **Refuser à tout moment :** `export MEMESH_AUTO_CAPTURE=false`
268
-
269
- ---
270
-
271
- ## Configuration
272
-
273
- Toute la configuration passe par des variables d'environnement. Les valeurs par défaut sont strictement locales et sans accès réseau — vous n'avez rien à définir pour obtenir un système fonctionnel.
274
-
275
- | Variable | Défaut | Effet |
276
- |---|---|---|
277
- | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | Remplace l'emplacement de la base SQLite. |
278
- | `MEMESH_AUTO_CAPTURE` | `true` | Désactive entièrement les hooks d'auto-capture (`Stop`, `PreCompact`). |
279
- | `MEMESH_AUTO_DETECT_LLM` | non défini (détection auto **activée**) | Mettre à `0` pour empêcher memesh d'utiliser une clé API trouvée dans l'environnement du shell. Par défaut, si `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` est définie et qu'aucun fournisseur n'est configuré dans `~/.memesh/config.json`, memesh l'utilise pour les fonctions LLM d'écriture (extraction de leçons, auto-tagging, dream). Les embeddings ne sont pas affectés — ils restent en recherche par mots-clés uniquement (FTS5) sauf si vous définissez `embedder.provider` sur `ollama` ou `openai`. |
280
- | `MEMESH_AUTO_UPDATE` | `off` | Politique de mise à jour automatique. `off` (défaut) ne met jamais à jour automatiquement ; `patch` autorise `X.Y.Z → X.Y.Z+N` ; `minor` ajoute `X.Y.Z → X.Y+1.0` ; `major` autorise tout incrément. Quand c'est permis, un `npm install -g` détaché s'exécute en fin de session (hook Stop) pour ne jamais bloquer votre travail — les résultats arrivent dans `~/.memesh/auto-update.log`. Configurable aussi via `autoUpdate` dans `~/.memesh/config.json` (la variable d'environnement l'emporte). Quand la version installée est dépréciée par les mainteneurs (alerte de sécurité), `patch` est forcé même en `off` — les incréments minor / major restent manuels pour éviter une dérive de comportement silencieuse. |
281
- | `OPENAI_API_KEY` | non défini | Votre clé OpenAI. Utilisée automatiquement pour les fonctions LLM sauf si vous mettez `MEMESH_AUTO_DETECT_LLM=0` ou configurez un fournisseur explicitement. |
282
- | `OLLAMA_HOST` | `http://localhost:11434` | Remplace l'endpoint Ollama lors de l'utilisation d'un fournisseur Ollama local. |
283
-
284
- `memesh doctor` affiche la configuration résolue pour que vous puissiez voir ce qui est actif.
285
-
286
- **Fournisseurs LLM de repli (Smart Mode).** Dans le dashboard, sous **Settings → « Fallback providers »**, vous pouvez définir une chaîne de bascule ordonnée — memesh essaie chaque fournisseur à tour de rôle quand votre principal est en panne. Ajoutez un repli local [Ollama](https://ollama.com), ou un repli cloud (OpenAI / Anthropic, avec une clé API). Compromis de confidentialité : quand un repli cloud est utilisé, le texte mémoire — qui peut être privé — est envoyé à ce fournisseur ; cela compte si vous travaillez en local uniquement pour la confidentialité.
287
-
288
- Lorsque npm signale une version installée comme dépréciée (typiquement une alerte de sécurité), le prochain démarrage de session ajoute en tête une bannière forte `⚠️ MeMesh <ver> is DEPRECATED` et `memesh update-status` affiche la même ligne jusqu'à la mise à jour. La vérification est mise en cache dans `~/.memesh/update-check.<version>.json` pour qu'une panne réseau transitoire ne puisse pas atténuer l'avertissement.
289
-
290
- ---
291
-
292
- ## Tableau De Bord
293
-
294
- 8 onglets, 11 langues, zéro dépendance externe. Accessible à `http://localhost:3737/dashboard` quand le serveur s'exécute.
295
-
296
- | Onglet | Ce que vous voyez |
297
- |---|---|
298
- | **Insights** | Insights mémoire — résumés hebdomadaires et propositions de patterns du moteur dreamer ; accepter/rejeter en un clic |
299
- | **Recherche** | Recherche par texte intégral + similarité vectorielle sur toutes les mémoires |
300
- | **Parcourir** | Liste paginée de toutes les entités avec archivage/restauration |
301
- | **Analytics** | Score de santé de la mémoire, frise chronologique 30 jours, vélocité PM + métriques de connectivité KG, motifs de travail, suggestions de nettoyage |
302
- | **Graphe** | Graphe de connaissances force-directed interactif avec filtres de type, recherche, mode ego, carte thermique de récence |
303
- | **Leçons** | Leçons structurées tirées des défaillances passées (erreur, cause racine, correctif, prévention) |
304
- | **Gérer** | Archivez et restaurez les entités |
305
- | **Paramètres** | Configuration du fournisseur LLM, sélecteur de langue instantané |
306
-
307
- ---
308
-
309
- ## Fonctionnalités Intelligentes
310
-
311
- **🧠 Recherche Intelligente** — Cherchez « sécurité login » et trouvez des mémoires sur « OAuth PKCE ». MeMesh combine FTS5 et la similarité vectorielle sqlite-vec pour trouver des mémoires sémantiquement liées sans LLM sur le chemin chaud.
312
-
313
- **🌏 Recherche dans les écritures sans espaces entre les mots** — Le chinois, le japonais, le coréen, le thaï, le lao, le khmer et les katakana demi-chasse sont indexés par paires de caractères qui se chevauchent. Un souvenir écrit 「資料庫遷移前一定要先備份」 se retrouve donc en cherchant 「備份」, et pas seulement par son texte intégral exact. Le texte est normalisé (NFC) à l'écriture comme à la recherche : un souvenir saisi sur macOS ou avec une méthode de saisie coréenne ou vietnamienne se retrouve dans les deux graphies.
314
-
315
- **📊 Classement Avec Score** — Les résultats sont classés par pertinence (30 %) + récence (25 %) + fréquence (18 %) + confiance (17 %) + impact de rappel (10 %).
316
-
317
- **🔄 Évolution Des Connaissances** — Les décisions changent. `forget` archive les anciennes mémoires (jamais supprimer). Les relations `supersedes` relient ancien → nouveau. Votre IA voit toujours la version la plus récente.
318
-
319
- **⚠️ Détection De Conflits** — Si vous avez deux mémoires qui se contredisent, MeMesh vous avertit.
320
-
321
- **🕸️ Connectivité du graphe de connaissances** — `memesh kg backfill-relations --all-rules` relie les entités orphelines par cooccurrence de tags, clustering de projets, contexte de session et similarité de noms — sans LLM.
322
-
323
- **📦 Partage D'Équipe** — `memesh export > team-knowledge.json` → partagez avec votre équipe → `memesh import team-knowledge.json`
324
- Les bundles importés restent consultables, mais MeMesh n'injecte pas automatiquement les mémoires importées dans les hooks Claude jusqu'à ce que vous les examiniez ou les rémémorisiez localement.
325
-
326
- ---
327
-
328
- ## Exemple D'Utilisation
329
-
330
- > « MeMesh s'est souvenu que nous avions choisi PKCE plutôt que le flux implicite il y a trois semaines. Quand j'ai demandé à Claude à nouveau sur l'auth, il le savait déjà — pas besoin de réexpliquer. »
331
- > — **Développeur seul, construisant une SaaS**
332
-
333
- > « Nous exportons la mémoire de notre équipe tous les vendredis et l'importons le lundi. Chaque Claude de l'équipe commence la semaine en sachant ce que l'équipe a appris la semaine précédente. »
334
- > — **Startup à 3 personnes, base de connaissances partagée**
335
-
336
- > « Le tableau de bord m'a montré que 90 % de mes mémoires étaient des journaux de session auto-générés. J'ai commencé à utiliser `remember` délibérément pour les décisions architecturales. Un changement radical. »
337
- > — **Développeur qui a découvert l'onglet Analytics**
338
-
339
- ---
340
-
341
- ## Déverrouiller Le Mode Smart (Optionnel)
342
-
343
- MeMesh fonctionne hors ligne par défaut — le rappel reste strictement sans LLM (95,60 % R@5 sur LongMemEval-S dès l'installation). Ajoutez une clé API LLM uniquement si vous voulez des flux d'analyse augmentés par LLM par-dessus : extraction de session plus intelligente, auto-tagging des nouvelles mémoires, génération de leçons depuis les défaillances et compression `dream` :
344
-
345
- ```bash
346
- memesh config set llm.provider anthropic
347
- memesh config set llm.api-key sk-ant-...
348
- ```
349
-
350
- Ou utilisez l'onglet Settings du tableau de bord (configuration visuelle) :
351
-
352
- ```bash
353
- memesh serve # ouvre le tableau de bord → onglet Settings
354
- ```
355
-
356
- **Extrayez de la mémoire de vos sessions passées.** `memesh dream run --from-transcripts` lit les transcriptions de session Claude Code de ce projet, demande au LLM les décisions et leçons enfouies dans la conversation, et les met en attente sous forme de propositions — rien n'entre automatiquement dans votre graphe. Examinez chacune avec `memesh dream show <id>` et acceptez celles qui en valent la peine.
357
-
358
- ### Utilisez vos propres embeddings (optionnel)
359
-
360
- Par défaut, MeMesh fait un recall **par mots-clés uniquement** (FTS5) — aucune clé API, aucun téléchargement de modèle, rien ne quitte votre machine. La recherche sémantique (par sens) est optionnelle et nécessite un embedder. Configurez-en un :
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
- L'embedder se configure **indépendamment du LLM de chat** — changer `llm.provider` ne change jamais silencieusement vos embeddings. Si vous passez à une dimension différente (p. ex. 768 → 1536), MeMesh reconstruit l'index vectoriel automatiquement à la prochaine écriture. Valeurs `embedder.provider` prises en charge : `ollama` (local), `openai` (hébergé). Sans aucun, le recall reste en recherche par mots-clés.
368
-
369
- | | Niveau 0 (défaut) | Niveau 1 (Mode Smart) |
370
- |---|---|---|
371
- | **Recherche** | FTS5 + sqlite-vec, 95,60 % R@5 | inchangé — le rappel est sans LLM à tous les niveaux |
372
- | **Auto-capture** | Motifs basés sur les règles | + LLM extrait les décisions & leçons |
373
- | **Auto-tagging** | Tags manuels uniquement | + LLM génère des tags pour les nouvelles mémoires |
374
- | **Analyse de défaillance** | Indisponible | + LLM convertit les erreurs de session en leçons structurées |
375
- | **Compression** | Indisponible | `dream` compressent les mémoires verbeux |
376
- | **Coût** | Gratuit, aucune clé API | ~$0,0001 par appel d'analyse (Haiku) |
377
-
378
- ---
379
-
380
- ## Les 7 Outils De Mémoire
381
-
382
- | Outil | Ce qu'il fait |
383
- |---|---|
384
- | `remember` | Stocker les connaissances avec observations, relations et tags |
385
- | `recall` | Recherche FTS5 + sqlite-vec avec notation multi-facteurs (pertinence, récence, fréquence, confiance, impact de rappel) — pas de LLM sur le chemin chaud |
386
- | `forget` | Soft-archivage (jamais supprimer) ou suppression d'observations spécifiques |
387
- | `export` | Partager les mémoires au format JSON entre projets ou membres d'équipe |
388
- | `import` | Importer les mémoires avec stratégies de fusion (skip / overwrite / append) |
389
- | `learn` | Enregistrer les leçons structurées à partir des erreurs (erreur, cause racine, correctif, prévention) |
390
- | `user_patterns` | Analyser vos motifs de travail — planning, outils, forces, domaines d'apprentissage |
391
-
392
- ---
393
-
394
- ## Architecture
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
- Le cœur est agnostique du framework. La même logique s'exécute depuis le terminal, HTTP ou MCP.
412
-
413
- ---
414
-
415
- ## Mise à Jour
416
-
417
- Le plugin marketplace de Claude Code fige les versions à l'installation et **ne** se met **pas** à jour automatiquement. Pour récupérer une nouvelle version :
418
-
419
- **Option A — Interface `/plugin`** : désinstaller `memesh@pcircle-memesh`, puis réinstaller. Claude Code récupère la dernière version du marketplace.
420
-
421
- **Option B — Script en une ligne** (sans cliquer dans l'UI, idempotent) :
422
-
423
- ```bash
424
- # Si votre plugin est en v4.2.5 ou plus récent, le script est embarqué :
425
- bash ~/.claude/plugins/cache/pcircle-memesh/memesh/<current-version>/scripts/upgrade-plugin.sh
426
-
427
- # Si vous avez installé avant v4.2.5 (c.-à-d. v4.2.4 ou v4.2.3),
428
- # le script n'est pas encore dans votre plugin. Utilisez la copie npm-global :
429
- bash "$(npm prefix -g)/lib/node_modules/@pcircle/memesh/scripts/upgrade-plugin.sh"
430
-
431
- # (Cela suppose que vous avez aussi exécuté `npm install -g @pcircle/memesh`. Sinon,
432
- # c'est le bon moment — voir la section « Aperçu des chemins d'installation »
433
- # ci-dessus pour comprendre pourquoi la plupart des utilisateurs veulent les deux.)
434
- ```
435
-
436
- Le script fast-forward le cache marketplace, place la nouvelle version dans `~/.claude/plugins/cache/`, installe les runtime deps, et repointe `installed_plugins.json`. Redémarrez Claude Code ensuite pour que le serveur MCP se reconnecte.
437
-
438
- **Les installations npm-global** (`npm install -g @pcircle/memesh`) peuvent s'auto-mettre à jour via `memesh update`. Source checkouts : `git pull && npm install && npm run build`.
439
-
440
- Au démarrage de session, une bannière sur une ligne s'affiche (limitée à une fois par 24h par version) quand une nouvelle version est disponible, et `memesh doctor` indique la cible de mise à jour avec la commande adaptée au canal.
441
-
442
- ---
443
-
444
- ## Contribuer
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
- Tableau de bord : `cd dashboard && npm install && npm run dev`
454
-
455
- ---
456
-
457
- <p align="center">
458
- <strong>MIT</strong> — Créé par <a href="https://pcircle.com">PCIRCLE AI</a>
459
- </p>