@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.es.md DELETED
@@ -1,467 +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>Memoria local para Claude Code y agentes de codificación MCP.</strong><br />
7
- Un archivo SQLite. Sin Docker. Sin infraestructura en la nube.
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
- > **Proyecto en desarrollo activo** — las funcionalidades evolucionan continuamente y pueden cambiar entre versiones. Si encuentras un bug o tienes una solicitud de funcionalidad, por favor [abre un issue](https://github.com/PCIRCLE-AI/memesh-llm-memory/issues).
21
-
22
- ## El Problema
23
-
24
- Tu agente de codificación olvida lo que sucedió en sesiones anteriores. Cada decisión arquitectónica, corrección de bugs, prueba fallida y lección aprendida con esfuerzo debe explicarse de nuevo. Claude Code comienza desde cero, redescubre restricciones antiguas y gasta contexto en cosas que ya debería saber.
25
-
26
- **MeMesh proporciona a los agentes de codificación memoria local persistente, buscable y en evolución.**
27
-
28
- Este paquete es la capa de memoria local de la familia de productos MeMesh. Es intencionalmente simple y de código abierto: instálalo con npm, mantén tu memoria en `~/.memesh/knowledge-graph.db` y conéctalo a Claude Code o cualquier cliente compatible con MCP. Los productos de workspace alojado y sistemas operativos empresariales deben mantenerse separados del README y roadmap de este paquete.
29
-
30
- ---
31
-
32
- ## Prueba — 95.60% R@5 en LongMemEval-S
33
-
34
- El motor de recuperación de MeMesh es **solo FTS5** (sin LLM, sin embeddings en la ruta caliente), medido contra el benchmark público [LongMemEval-S](https://huggingface.co/datasets/xiaowu0162/longmemeval) (500 preguntas, licencia MIT):
35
-
36
- | Sistema | R@5 | Fuente |
37
- |---|---|---|
38
- | **MeMesh (Modo A, via `recallEnhanced()`)** | **95.60%** | [benchmarks/longmemeval/RESULTS.md](benchmarks/longmemeval/RESULTS.md) |
39
- | MemPalace | 96.6% | Auto-reporte del proveedor |
40
- | Supermemory | ~82% | Estimación del proveedor |
41
- | Zep | 63.8% | Paper de LongMemEval |
42
- | Mem0 | 49.0% | Paper de LongMemEval |
43
-
44
- Los comandos de reproducción, SHA256 del dataset, resultados crudos por pregunta y análisis de fallos conocidos están todos en [`benchmarks/longmemeval/`](benchmarks/longmemeval/). Re-ejecutable en ~10 segundos.
45
-
46
- ---
47
-
48
- ## Vista rápida de las rutas de instalación
49
-
50
- MeMesh tiene **dos rutas de instalación que coexisten**. La mayoría de usuarios quiere ambas. Escriben en la **misma base de datos de memoria** (`~/.memesh/knowledge-graph.db`), por lo que los recuerdos capturados en el chat de Claude Code aparecen en tu shell, y viceversa.
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
- **¿Cuál necesitas?**
80
-
81
- | Lo que quieres hacer | Ruta de instalación |
82
- |---|---|
83
- | Usar el skill `/memesh` dentro de una conversación de Claude Code | Path A (plugin) |
84
- | Auto-captura en Claude Code (sesión → lecciones → recall siguiente) | Path A (plugin) |
85
- | Ejecutar `memesh remember` / `memesh recall` / `memesh doctor` en cualquier terminal | Path B (npm-global) |
86
- | Abrir el dashboard con `memesh serve` (sin retraso de arranque de `npx`) | Path B (npm-global) |
87
- | Conectar `memesh-mcp` a Cursor, Cline u otro cliente MCP | Path B (npm-global) |
88
- | Todo lo anterior | **Instala ambos** — no entran en conflicto |
89
-
90
- > **Confusión común**: el plugin de Claude Code **no** pone `memesh` en tu `PATH` del shell. Si solo ejecutas `/plugin install` y luego escribes `memesh reindex` en una terminal, verás `command not found`. Es normal — añade `npm install -g @pcircle/memesh` también para acceso desde el shell.
91
-
92
- ### ⚠️ Instalar el plugin NO instala el CLI
93
-
94
- Es la confusión más común. Léelo una vez y te ahorrarás un bucle futuro:
95
-
96
- - `/plugin install memesh@pcircle-memesh` desde Claude Code → instala **solo Path A**. Te da herramientas MCP, hooks, el skill `/memesh`. **NO** pone `memesh` en tu `PATH` del shell.
97
- - `memesh reindex` / `memesh update` / `memesh doctor` en una terminal → necesita **Path B** (npm-global). Sin él: `zsh: command not found: memesh`.
98
- - **Configuración recomendada para usuarios de Claude Code**: **instala ambos**. Coexisten, comparten la misma base de datos, no conflictúan.
99
-
100
- ```bash
101
- # Después de /plugin install ..., ejecuta también esto:
102
- npm install -g @pcircle/memesh
103
- ```
104
-
105
- Si solo usas memesh a través del chat de Claude Code (nunca tecleas `memesh` en una terminal), Path A solo es suficiente. Para todos los demás: instala ambos.
106
-
107
- ---
108
-
109
- ## Primeros Pasos en 60 Segundos
110
-
111
- ### Opción A — Plugin de Claude Code (instalación de una línea)
112
-
113
- Si usas Claude Code, instala MeMesh como plugin desde dentro de la CLI:
114
-
115
- ```
116
- /plugin marketplace add PCIRCLE-AI/memesh-llm-memory
117
- /plugin install memesh@pcircle-memesh
118
- ```
119
-
120
- Claude Code conecta los hooks, skills y el servidor MCP automáticamente. Obtienes auto-captura en sesión, recuperación proactiva, el skill `/memesh` (remember / recall / learn / forget) dentro de la conversación de Claude Code, y `remember` / `recall` / `forget` / `learn` disponibles como herramientas MCP para el agente. La CLI y el dashboard local también son completamente accesibles sin ninguna instalación global adicional — `npx @pcircle/memesh <command>` ejecuta cada comando CLI, y `npx @pcircle/memesh` lanza el dashboard en `localhost:3737`. El servidor MCP se ejecuta directamente desde la salida compilada incluida con el plugin — sin búsqueda de `npx`, sin `npm install -g`, sin paso de build. memesh guarda sus datos mediante `node:sqlite`, que forma parte de Node (22.13+), así que actualizar Node no puede dejarlo con un binario compilado para el runtime equivocado.
121
-
122
- ### Opción B — npm global (optimización opcional)
123
-
124
- Si quieres el binario directamente en tu `PATH` de shell (para que `memesh`, `memesh-mcp`, etc. funcionen en cualquier terminal sin la búsqueda `npx` por llamada), o quieres exponer `memesh-mcp` como un comando stdio de ruta fija a **clientes MCP que no son Claude Code** (Cursor, Cline, flujos solo de terminal):
125
-
126
- ```bash
127
- npm install -g @pcircle/memesh
128
- ```
129
-
130
- > **Notas de primera instalación (única vez):**
131
- > - **No hace falta compilador** — el motor de base de datos es el propio `node:sqlite` de Node. `sqlite-vec`, que añade la búsqueda por significado, se distribuye como archivo precompilado para macOS (arm64/x64), Linux (x64/arm64) y Windows x64; en cualquier otra plataforma simplemente no está y la recuperación se queda en búsqueda por palabra clave. Nada de esto ejecuta un script de instalación, así que `npm install --ignore-scripts` instala un memesh plenamente funcional.
132
- > - **La búsqueda semántica es opcional** — la ruta de recuperación por defecto es la búsqueda por palabras clave (FTS5), que no necesita modelo ni descarga. La búsqueda por significado necesita un embedder: ejecuta [Ollama](https://ollama.com) en local, o configura un embedder en la nube (ver "Embeddings" más abajo). Sin uno, memesh usa solo búsqueda por palabras clave.
133
-
134
- ### Paso 1.5: Conecta MeMesh a Claude Code (solo ruta npm)
135
-
136
- Si instalaste mediante la **Opción A** (`/plugin install memesh@pcircle-memesh`), omite este paso — Claude Code conecta los hooks del plugin automáticamente.
137
-
138
- Si instalaste mediante la **Opción B** (`npm install -g`), la CLI está en tu PATH y el servidor MCP está registrado, pero los hooks de sesión de Claude Code no se conectan automáticamente. Sin ellos, aún puedes usar `memesh remember` / `recall` manualmente, pero el **bucle de captura automática** (sesiones → lecciones → recall en la siguiente sesión) queda en silencio.
139
-
140
- ```bash
141
- memesh install-hooks # añade los hooks de memesh a ~/.claude/settings.json
142
- memesh doctor # confirma que "Hooks wired into Claude Code" pasa
143
- ```
144
-
145
- Estos hooks coexisten con cualquier hook personalizado que ya tengas en `~/.claude/hooks/` — `install-hooks` escribe entradas aditivas y nunca sobrescribe los tuyos. Para eliminarlos después: `memesh uninstall-hooks`.
146
-
147
- ### Paso 2: Guarda una decisión
148
-
149
- > Los ejemplos bash a continuación asumen que `memesh` está en tu `PATH` (Opción B). Los usuarios de la Opción A (solo plugin) tienen dos rutas equivalentes: pregunta en la conversación de Claude Code (el skill `/memesh` + las herramientas MCP cubren los mismos flujos), o reemplaza `memesh` con `npx @pcircle/memesh` en cualquier shell — mismas flags, sin necesidad de instalación global.
150
-
151
- ```bash
152
- memesh remember "Use OAuth 2.0 with PKCE for the new auth"
153
- ```
154
-
155
- O usa la forma explícita cuando quieres un nombre y tipo estables para filtrado posterior:
156
-
157
- ```bash
158
- memesh remember --name "auth-decision" --type "decision" --obs "Use OAuth 2.0 with PKCE"
159
- ```
160
-
161
- ### Paso 3: Recupérala después
162
-
163
- ```bash
164
- memesh recall "login security"
165
- # → Encuentra "OAuth 2.0 with PKCE" aunque buscaste palabras diferentes
166
- ```
167
-
168
- **Eso es todo.** MeMesh ahora está recordando y recuperando a través de sesiones.
169
-
170
- Si quieres verificar la instalación y la conexión local de extremo a extremo:
171
-
172
- ```bash
173
- memesh doctor
174
- ```
175
-
176
- Abre el dashboard para explorar tu memoria:
177
-
178
- ```bash
179
- memesh serve
180
- ```
181
-
182
- <p align="center">
183
- <img src="docs/images/dashboard-search.png" alt="MeMesh Search — encuentra cualquier memoria al instante" width="100%" />
184
- </p>
185
-
186
- <p align="center">
187
- <img src="docs/images/dashboard-analytics.png" alt="MeMesh Analytics — puntuación de salud, línea de tiempo, patrones, cobertura del conocimiento" width="100%" />
188
- </p>
189
-
190
- <p align="center">
191
- <img src="docs/images/dashboard-graph.png" alt="MeMesh Graph — grafo de conocimiento interactivo con filtros de tipo y modo ego" width="100%" />
192
- </p>
193
-
194
- ---
195
-
196
- ## ¿Para Quién Es Esto?
197
-
198
- | Si eres... | MeMesh te ayuda a... |
199
- |---|---|
200
- | **Un desarrollador usando Claude Code** | Recuperar automáticamente decisiones del proyecto, lecciones específicas de archivos y fracasos anteriores mientras trabajas |
201
- | **Un usuario avanzado de agentes de codificación** | Compartir una capa de memoria local entre herramientas compatibles con MCP |
202
- | **Un equipo experimentando con flujos de trabajo de IA para codificación** | Exportar/importar conocimiento del proyecto sin introducir infraestructura alojada |
203
- | **Un desarrollador de agentes** | Añadir memoria local mediante MCP, HTTP o la CLI |
204
-
205
- ---
206
-
207
- ## Diseñado para Agentes de Codificación en Primer Lugar
208
-
209
- <table>
210
- <tr>
211
- <td width="33%" align="center">
212
-
213
- **Claude Code / Desktop**
214
- ```bash
215
- memesh-mcp
216
- ```
217
- Herramientas MCP + hooks de Claude Code
218
-
219
- </td>
220
- <td width="33%" align="center">
221
-
222
- **Cualquier Cliente HTTP**
223
- ```bash
224
- curl localhost:3737/v1/recall \
225
- -H "Content-Type: application/json" \
226
- -d '{"query":"auth"}'
227
- ```
228
- `memesh serve` (REST API)
229
-
230
- </td>
231
- <td width="33%" align="center">
232
-
233
- **Cualquier LLM (formato OpenAI)**
234
- ```bash
235
- memesh export-schema \
236
- --format openai
237
- ```
238
- Pega las herramientas en cualquier llamada API
239
-
240
- </td>
241
- </tr>
242
- </table>
243
-
244
- ---
245
-
246
- ## ¿Por Qué No OpenMemory, Cursor Memories, Mem0 o Zep?
247
-
248
- | | **MeMesh** | OpenMemory | Cursor Memories | Mem0 | Zep / Graphiti |
249
- |---|---|---|---|---|---|
250
- | **Mejor caso de uso** | Memoria local para agentes de codificación | Memoria local/entre clientes MCP | Memoria de proyecto nativa de Cursor | Memoria de aplicación/agente gestionada | Grafos de conocimiento temporal |
251
- | **Forma de instalación** | `npm install -g @pcircle/memesh` | Flujo de aplicación/servidor local | Integrada en Cursor | API en la nube / SDK / MCP | Configuración de servicio/framework |
252
- | **Almacenamiento** | Un archivo SQLite local | Stack de memoria local | Reglas/memories gestionados por Cursor | Stack alojado o auto-alojado | Base de datos de grafos |
253
- | **Nube requerida** | No | No en modo local | Depende de la cuenta/configuración de Cursor | Sí para la plataforma | Generalmente sí/auto-alojado |
254
- | **Hooks de Claude Code** | Primera clase | Herramientas MCP | No | Herramientas MCP | No específico de Claude Code |
255
- | **Dashboard** | Integrado | Integrado | Configuración de Cursor | Dashboard de plataforma | Herramientas de plataforma/grafo |
256
- | **Tradeoff** | Cuña local simple, no a escala empresarial | Huella de aplicación local más amplia | Bloqueado a Cursor | Plataforma gestionada fuerte, menos local-first | Modelo de grafo fuerte, configuración más pesada |
257
-
258
- **MeMesh intercambia infraestructura gestionada a escala empresarial por configuración local instantánea, almacenamiento inspectable y hooks de flujo de trabajo de agentes de codificación.**
259
-
260
- ---
261
-
262
- ## Qué Sucede Automáticamente en Claude Code
263
-
264
- No necesitas recordar todo manualmente. MeMesh tiene **6 hooks** que capturan e inyectan conocimiento mientras trabajas:
265
-
266
- | Cuándo | Qué hace MeMesh |
267
- |---|---|
268
- | **Al inicio de cada sesión** | Carga tus memorias más relevantes + advertencias proactivas de lecciones pasadas |
269
- | **Antes de editar archivos** | Recupera memorias vinculadas al archivo o proyecto antes de que Claude escriba código |
270
- | **Cuando pides recordar** | Detecta intención de "remember this" / "guardar en memesh" / "sauvegarder dans memesh" / "記下來" (5 idiomas) y recuerda a Claude que use memesh |
271
- | **Después de cada `git commit`** | Registra qué cambiaste, con estadísticas de diff |
272
- | **Cuando Claude se detiene** | Captura archivos editados, errores corregidos y genera automáticamente lecciones estructuradas a partir de fallos |
273
- | **Antes de compresión de contexto** | Guarda conocimiento antes de que se pierda en límites de contexto |
274
-
275
- > **Desactiva en cualquier momento:** `export MEMESH_AUTO_CAPTURE=false`
276
-
277
- ---
278
-
279
- ## Configuración
280
-
281
- Toda la configuración se realiza mediante variables de entorno. Los valores por defecto son solo locales y sin red — no necesitas configurar nada para tener un sistema funcional.
282
-
283
- | Variable | Por defecto | Qué hace |
284
- |---|---|---|
285
- | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | Sobrescribe la ubicación de la base de datos SQLite. |
286
- | `MEMESH_AUTO_CAPTURE` | `true` | Desactiva por completo los hooks de auto-captura (`Stop`, `PreCompact`). |
287
- | `MEMESH_AUTO_DETECT_LLM` | sin definir (autodetección **activada**) | Ponlo en `0` para que memesh NO use una clave de API encontrada en el entorno del shell. Por defecto, si `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` está definida y no has configurado un proveedor en `~/.memesh/config.json`, memesh la usa para las funciones LLM de escritura (consolidación, extracción de lecciones, autoetiquetado, dream). Los embeddings no se ven afectados — siguen siendo solo por palabras clave (FTS5) salvo que definas `embedder.provider` como `ollama` u `openai`. |
288
- | `MEMESH_AUTO_UPDATE` | `off` | Política de auto-actualización. `off` (por defecto) nunca auto-actualiza; `patch` permite `X.Y.Z → X.Y.Z+N`; `minor` añade `X.Y.Z → X.Y+1.0`; `major` permite cualquier bump. Cuando se permite, un `npm install -g` independiente se dispara al final de la sesión (hook Stop) por lo que nunca bloquea tu trabajo — los resultados aterrizan en `~/.memesh/auto-update.log`. También configurable como `autoUpdate` en `~/.memesh/config.json` (env gana). Cuando los mantenedores deprecan la versión instalada (aviso de seguridad), `patch` se fuerza a permitir incluso en `off` — los bumps minor / major siguen siendo manuales para evitar deriva silenciosa de comportamiento. |
289
- | `OPENAI_API_KEY` | sin definir | Tu clave de OpenAI. Se usa automáticamente para las funciones LLM salvo que definas `MEMESH_AUTO_DETECT_LLM=0` o configures un proveedor explícitamente. |
290
- | `OLLAMA_HOST` | `http://localhost:11434` | Sobrescribe el endpoint de Ollama cuando uses un proveedor Ollama local. |
291
-
292
- `memesh doctor` imprime la configuración resuelta para que puedas ver qué está activo.
293
-
294
- **Proveedores LLM de respaldo (Smart Mode).** En el dashboard, en **Settings → «Fallback providers»**, puedes definir una cadena de failover ordenada — memesh prueba cada proveedor por turno cuando el principal está caído. Añade un respaldo local [Ollama](https://ollama.com), o uno en la nube (OpenAI / Anthropic, con una API key). Compensación de privacidad: cuando se usa un respaldo en la nube, el texto de memoria — que puede ser privado — se envía a ese proveedor, así que importa si trabajas solo en local por privacidad.
295
-
296
- Cuando npm marca una versión instalada como deprecada (típicamente un aviso de seguridad), el siguiente inicio de sesión antepone un fuerte banner `⚠️ MeMesh <ver> is DEPRECATED` y `memesh update-status` muestra la misma línea hasta que actualices. La verificación se cachea en `~/.memesh/update-check.<version>.json` para que un fallo de red transitorio no atenúe la advertencia.
297
-
298
- ---
299
-
300
- ## Dashboard
301
-
302
- 8 pestañas, 11 idiomas, cero dependencias externas. Accede en `http://localhost:3737/dashboard` cuando el servidor está en ejecución.
303
-
304
- | Pestaña | Qué ves |
305
- |---|---|
306
- | **Insights** | Perspectivas de memoria — resúmenes semanales y propuestas de patrones del motor dreamer; aceptar/rechazar con un clic |
307
- | **Search** | Búsqueda de texto completo + similitud vectorial en todas las memorias |
308
- | **Browse** | Lista paginada de todas las entidades con archivo/restauración |
309
- | **Analytics** | Puntuación de Salud de Memoria, línea de tiempo de 30 días, velocidad PM + métricas de conectividad KG, patrones de trabajo, sugerencias de limpieza |
310
- | **Graph** | Grafo de conocimiento interactivo dirigido por fuerzas con filtros de tipo, búsqueda, modo ego, mapa de calor de recencia |
311
- | **Lessons** | Lecciones estructuradas de fallos pasados (error, causa raíz, corrección, prevención) |
312
- | **Manage** | Archiva y restaura entidades |
313
- | **Settings** | Configuración de proveedor LLM, selector de idioma instantáneo |
314
-
315
- ---
316
-
317
- ## Características Inteligentes
318
-
319
- **🧠 Búsqueda Inteligente** — Busca "login security" y encuentra memorias sobre "OAuth PKCE". MeMesh usa FTS5 + sqlite-vec en la ruta caliente, sin LLM; el complemento vectorial aún alcanza términos relacionados.
320
-
321
- **🌏 Búsqueda en escrituras que no separan las palabras con espacios** — El chino, el japonés, el coreano, el tailandés, el lao, el jemer y el katakana de media anchura se indexan como pares de caracteres solapados. Así, un recuerdo escrito como 「資料庫遷移前一定要先備份」 se encuentra buscando 「備份」, no solo con su texto completo exacto. El texto se normaliza (NFC) tanto al escribir como al consultar, de modo que un recuerdo tecleado en macOS o con un IME coreano o vietnamita se encuentra en cualquiera de las dos grafías.
322
-
323
- **📊 Ranking Puntuado** — Los resultados se clasifican por relevancia (30%) + recencia (25%) + frecuencia (18%) + confianza (17%) + impacto de recuperación (10%).
324
-
325
- **🔄 Evolución del Conocimiento** — Las decisiones cambian. `forget` archiva memorias antiguas (nunca borra). Las relaciones `supersedes` vinculan antiguas → nuevas. Tu IA siempre ve la versión más reciente.
326
-
327
- **⚠️ Detección de Conflictos** — Si tienes dos memorias que se contradicen, MeMesh te advierte.
328
-
329
- **🕸️ Conectividad del grafo de conocimiento** — `memesh kg backfill-relations --all-rules` vincula entidades huérfanas mediante co-ocurrencia de etiquetas, agrupación de proyectos, contexto de sesión y similitud de nombres — sin LLM.
330
-
331
- **📦 Compartir en Equipo** — `memesh export > team-knowledge.json` → comparte con tu equipo → `memesh import team-knowledge.json`
332
- Los bundles importados permanecen buscables, pero MeMesh no inyecta automáticamente memorias importadas en hooks de Claude hasta que las revises o las guardes localmente de nuevo.
333
-
334
- ---
335
-
336
- ## Ejemplos de Uso
337
-
338
- > "MeMesh recordó que elegimos PKCE sobre implicit flow hace tres semanas. Cuando le pregunté a Claude sobre auth de nuevo, ya lo sabía — sin necesidad de re-explicar."
339
- > — **Desarrollador independiente, construyendo un SaaS**
340
-
341
- > "Exportamos la memoria de nuestro equipo cada viernes e la importamos el lunes. El Claude de cada uno comienza la semana sabiendo qué aprendió el equipo la semana pasada."
342
- > — **Startup de 3 personas, base de conocimiento compartida**
343
-
344
- > "El dashboard me mostró que 90% de mis memorias eran logs de sesión auto-generados. Empecé a usar `remember` deliberadamente para decisiones arquitectónicas. Cambio de juego."
345
- > — **Desarrollador que descubrió la pestaña Analytics**
346
-
347
- ---
348
-
349
- ## Desbloquea Modo Inteligente (Opcional)
350
-
351
- MeMesh funciona sin conexión por defecto — el recall permanece estrictamente sin LLM (95.60% R@5 en LongMemEval-S de fábrica). Añade una clave API de LLM solo si quieres flujos de análisis aumentados por LLM encima: extracción de sesión más inteligente, auto-etiquetado de nuevas memorias, generación de lecciones a partir de fallos, y compresión `dream`:
352
-
353
- ```bash
354
- memesh config set llm.provider anthropic
355
- memesh config set llm.api-key sk-ant-...
356
- ```
357
-
358
- O usa la pestaña Configuración del dashboard (configuración visual):
359
-
360
- ```bash
361
- memesh serve # abre dashboard → pestaña Settings
362
- ```
363
-
364
- **Extrae memoria de tus sesiones pasadas.** `memesh dream run --from-transcripts` lee las transcripciones de sesión de Claude Code de este proyecto, le pide al LLM las decisiones y lecciones ocultas en la conversación, y las prepara como propuestas — nada entra en tu grafo automáticamente. Revisa cada una con `memesh dream show <id>` y acepta las que valgan la pena.
365
-
366
- ### Usa tus propios embeddings (opcional)
367
-
368
- Por defecto MeMesh hace recall **solo por palabras clave** (FTS5) — sin clave de API, sin descarga de modelo, nada sale de tu máquina. La búsqueda semántica (por significado) es opcional y necesita un embedder. Configura uno:
369
-
370
- ```bash
371
- memesh config set embedder.provider openai # or: ollama
372
- memesh config set embedder.model text-embedding-3-small
373
- ```
374
-
375
- El embedder se configura **independientemente del LLM de chat** — cambiar `llm.provider` nunca cambia tus embeddings en silencio. Si cambias a una dimensión distinta (p. ej. 768 → 1536), MeMesh reconstruye el índice vectorial automáticamente en la siguiente escritura. Valores de `embedder.provider` soportados: `ollama` (local), `openai` (en la nube). Sin ninguno, el recall se queda en búsqueda por palabras clave.
376
-
377
- | | Nivel 0 (por defecto) | Nivel 1 (Modo Inteligente) |
378
- |---|---|---|
379
- | **Búsqueda** | FTS5 + sqlite-vec, 95.60% R@5 | sin cambios — el recall es sin LLM en cada nivel |
380
- | **Auto-capture** | Patrones basados en reglas | + LLM extrae decisiones y lecciones |
381
- | **Auto-etiquetado** | Solo etiquetas manuales | + LLM genera etiquetas para nuevas memorias |
382
- | **Análisis de fallos** | No disponible | + LLM convierte errores de sesión en lecciones estructuradas |
383
- | **Compresión** | No disponible | `dream` comprimen memorias verbosas |
384
- | **Costo** | Gratis, sin clave API | ~$0.0001 por llamada de análisis (Haiku) |
385
-
386
- ---
387
-
388
- ## Las 7 Herramientas de Memoria
389
-
390
- | Herramienta | Qué hace |
391
- |---|---|
392
- | `remember` | Guardar conocimiento con observaciones, relaciones y etiquetas |
393
- | `recall` | Búsqueda FTS5 + sqlite-vec con scoring multifactor (relevancia, recencia, frecuencia, confianza, impacto de recuperación) — sin LLM en la ruta caliente |
394
- | `forget` | Archivo suave (nunca borra) o elimina observaciones específicas |
395
- | `export` | Compartir memorias como JSON entre proyectos o miembros del equipo |
396
- | `import` | Importar memorias con estrategias de fusión (skip / overwrite / append) |
397
- | `learn` | Registrar lecciones estructuradas de errores (error, causa raíz, corrección, prevención) |
398
- | `user_patterns` | Analizar tus patrones de trabajo — horario, herramientas, fortalezas, áreas de aprendizaje |
399
-
400
- ---
401
-
402
- ## Arquitectura
403
-
404
- ```
405
- ┌─────────────────┐
406
- │ Core Engine │
407
- │ (7 operations) │
408
- └────────┬────────┘
409
- ┌─────────────────┼─────────────────┐
410
- │ │ │
411
- CLI (memesh) HTTP API (serve) MCP (memesh-mcp)
412
- │ │ │
413
- └─────────────────┼─────────────────┘
414
-
415
- SQLite + FTS5 + sqlite-vec
416
- (~/.memesh/knowledge-graph.db)
417
- ```
418
-
419
- El core es agnóstico de framework. La misma lógica se ejecuta desde terminal, HTTP o MCP.
420
-
421
- ---
422
-
423
- ## Actualizar
424
-
425
- El plugin marketplace de Claude Code fija las versiones en el momento de la instalación y **no** se actualiza automáticamente. Para obtener una nueva versión:
426
-
427
- **Opción A — Interfaz `/plugin`**: desinstala `memesh@pcircle-memesh`, luego reinstala. Claude Code obtiene la versión más reciente del marketplace.
428
-
429
- **Opción B — Script en una línea** (sin hacer clic en la UI, idempotente):
430
-
431
- ```bash
432
- # Si tu plugin instalado es v4.2.5 o posterior, el script viene incluido:
433
- bash ~/.claude/plugins/cache/pcircle-memesh/memesh/<current-version>/scripts/upgrade-plugin.sh
434
-
435
- # Si instalaste antes de v4.2.5 (es decir, v4.2.4 o v4.2.3),
436
- # el script aún no está en tu plugin. Usa la copia npm-global en su lugar:
437
- bash "$(npm prefix -g)/lib/node_modules/@pcircle/memesh/scripts/upgrade-plugin.sh"
438
-
439
- # (Esto asume que también ejecutaste `npm install -g @pcircle/memesh`. Si no lo has hecho,
440
- # este es un buen momento para hacerlo — consulta la sección "Vista rápida de las rutas
441
- # de instalación" arriba para entender por qué la mayoría de los usuarios quieren ambas.)
442
- ```
443
-
444
- El script fast-forwarded el caché del marketplace, prepara la nueva versión en `~/.claude/plugins/cache/`, instala las runtime deps y repunta `installed_plugins.json`. Reinicia Claude Code después para que el MCP server se reconecte.
445
-
446
- **Las instalaciones npm-global** (`npm install -g @pcircle/memesh`) pueden auto-actualizarse mediante `memesh update`. Source checkouts: `git pull && npm install && npm run build`.
447
-
448
- Al inicio de sesión aparece un banner de una línea (limitado a una vez cada 24h por versión) cuando hay una nueva versión disponible, y `memesh doctor` reporta el objetivo de actualización con el comando específico del canal.
449
-
450
- ---
451
-
452
- ## Contribuir
453
-
454
- ```bash
455
- git clone https://github.com/PCIRCLE-AI/memesh-llm-memory
456
- cd memesh-llm-memory && npm install && npm run build
457
- npm test
458
- npm run test:e2e-dashboard
459
- ```
460
-
461
- Dashboard: `cd dashboard && npm install && npm run dev`
462
-
463
- ---
464
-
465
- <p align="center">
466
- <strong>MIT</strong> — Hecho por <a href="https://pcircle.com">PCIRCLE AI</a>
467
- </p>