@pcircle/memesh 4.3.0 → 4.5.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 (100) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +2 -2
  3. package/README.de.md +35 -12
  4. package/README.es.md +13 -9
  5. package/README.fr.md +33 -10
  6. package/README.ja.md +13 -9
  7. package/README.ko.md +14 -10
  8. package/README.md +18 -11
  9. package/README.pt.md +32 -9
  10. package/README.th.md +18 -8
  11. package/README.vi.md +34 -11
  12. package/README.zh-CN.md +14 -10
  13. package/README.zh-TW.md +14 -10
  14. package/dashboard/dist/index.html +10 -10
  15. package/dist/cli/view-live.js +2 -2
  16. package/dist/cli/view.js +1 -1
  17. package/dist/core/analytics.d.ts +4 -0
  18. package/dist/core/analytics.d.ts.map +1 -1
  19. package/dist/core/analytics.js +8 -8
  20. package/dist/core/analytics.js.map +1 -1
  21. package/dist/core/auto-tagger.d.ts.map +1 -1
  22. package/dist/core/auto-tagger.js.map +1 -1
  23. package/dist/core/config.d.ts +5 -2
  24. package/dist/core/config.d.ts.map +1 -1
  25. package/dist/core/config.js +28 -13
  26. package/dist/core/config.js.map +1 -1
  27. package/dist/core/demo.d.ts +1 -0
  28. package/dist/core/demo.d.ts.map +1 -1
  29. package/dist/core/demo.js +24 -0
  30. package/dist/core/demo.js.map +1 -1
  31. package/dist/core/digest-validator.d.ts.map +1 -1
  32. package/dist/core/digest-validator.js +3 -1
  33. package/dist/core/digest-validator.js.map +1 -1
  34. package/dist/core/doctor.d.ts +2 -0
  35. package/dist/core/doctor.d.ts.map +1 -1
  36. package/dist/core/doctor.js +70 -60
  37. package/dist/core/doctor.js.map +1 -1
  38. package/dist/core/dreamer.d.ts +21 -1
  39. package/dist/core/dreamer.d.ts.map +1 -1
  40. package/dist/core/dreamer.js +86 -8
  41. package/dist/core/dreamer.js.map +1 -1
  42. package/dist/core/embedder.d.ts +1 -4
  43. package/dist/core/embedder.d.ts.map +1 -1
  44. package/dist/core/embedder.js +5 -92
  45. package/dist/core/embedder.js.map +1 -1
  46. package/dist/core/failure-analyzer.d.ts.map +1 -1
  47. package/dist/core/failure-analyzer.js +2 -1
  48. package/dist/core/failure-analyzer.js.map +1 -1
  49. package/dist/core/llm-client.d.ts.map +1 -1
  50. package/dist/core/llm-client.js.map +1 -1
  51. package/dist/core/llm-validator.d.ts +1 -0
  52. package/dist/core/llm-validator.d.ts.map +1 -1
  53. package/dist/core/llm-validator.js +33 -10
  54. package/dist/core/llm-validator.js.map +1 -1
  55. package/dist/core/operations.d.ts.map +1 -1
  56. package/dist/core/operations.js +10 -3
  57. package/dist/core/operations.js.map +1 -1
  58. package/dist/core/output-language.d.ts +6 -0
  59. package/dist/core/output-language.d.ts.map +1 -0
  60. package/dist/core/output-language.js +25 -0
  61. package/dist/core/output-language.js.map +1 -0
  62. package/dist/core/patterns.d.ts +0 -1
  63. package/dist/core/patterns.d.ts.map +1 -1
  64. package/dist/core/patterns.js +1 -5
  65. package/dist/core/patterns.js.map +1 -1
  66. package/dist/core/transcript-extractor.d.ts +89 -0
  67. package/dist/core/transcript-extractor.d.ts.map +1 -0
  68. package/dist/core/transcript-extractor.js +437 -0
  69. package/dist/core/transcript-extractor.js.map +1 -0
  70. package/dist/core/transcript-source.d.ts +21 -0
  71. package/dist/core/transcript-source.d.ts.map +1 -0
  72. package/dist/core/transcript-source.js +142 -0
  73. package/dist/core/transcript-source.js.map +1 -0
  74. package/dist/core/types.d.ts +4 -0
  75. package/dist/core/types.d.ts.map +1 -1
  76. package/dist/core/verifier.js +1 -1
  77. package/dist/core/verifier.js.map +1 -1
  78. package/dist/db.d.ts.map +1 -1
  79. package/dist/db.js +10 -0
  80. package/dist/db.js.map +1 -1
  81. package/dist/skills-manifest.json +11 -11
  82. package/dist/transports/cli/cli.d.ts.map +1 -1
  83. package/dist/transports/cli/cli.js +229 -65
  84. package/dist/transports/cli/cli.js.map +1 -1
  85. package/dist/transports/http/server.d.ts +7 -0
  86. package/dist/transports/http/server.d.ts.map +1 -1
  87. package/dist/transports/http/server.js +145 -50
  88. package/dist/transports/http/server.js.map +1 -1
  89. package/dist/transports/mcp/handlers.d.ts +1 -1
  90. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  91. package/dist/transports/mcp/handlers.js +3 -2
  92. package/dist/transports/mcp/handlers.js.map +1 -1
  93. package/dist/transports/schemas.d.ts.map +1 -1
  94. package/dist/transports/schemas.js.map +1 -1
  95. package/package.json +2 -11
  96. package/scripts/hooks/post-commit.js +8 -2
  97. package/scripts/hooks/pre-compact.js +9 -0
  98. package/scripts/hooks/session-start.js +1 -1
  99. package/skills/agentic-orchestration/SKILL.md +1 -1
  100. package/skills/memesh/SKILL.md +2 -0
package/README.md CHANGED
@@ -83,7 +83,7 @@ flowchart TB
83
83
  | Use the `/memesh` skill inside a Claude Code conversation | Path A (plugin) |
84
84
  | Get auto-capture (sessions → lessons → recall) in Claude Code | Path A (plugin) |
85
85
  | Run `memesh remember` / `memesh recall` / `memesh doctor` in any terminal | Path B (npm-global) |
86
- | Open the local dashboard via `memesh` (no `npx` lookup delay) | Path B (npm-global) |
86
+ | Open the local dashboard via `memesh serve` (no `npx` lookup delay) | Path B (npm-global) |
87
87
  | Plug `memesh-mcp` into Cursor, Cline, or another MCP client | Path B (npm-global) |
88
88
  | All of the above | **Install both** — they don't conflict |
89
89
 
@@ -131,7 +131,7 @@ npm install -g @pcircle/memesh
131
131
 
132
132
  > **First-install notes (one-time):**
133
133
  > - **Native modules** — `better-sqlite3` and `sqlite-vec` install via prebuilt binaries on macOS (arm64/x64), Linux (x64/arm64), and Windows x64. On uncommon platforms or when prebuilds fail, you'll need a working C/C++ toolchain.
134
- > - **Embedding model** — the first call that triggers a local embedding (e.g. `recall` with semantic mode) downloads `Xenova/all-MiniLM-L6-v2` (~80 MB) into `~/.memesh/models/`. Subsequent calls are instant. The default retrieval path (FTS5) does not require this download.
134
+ > - **Semantic (meaning-based) search is optional** — the default recall path is FTS5 keyword search, which needs no model and no download. Meaning-based search needs an embedder: run [Ollama](https://ollama.com) locally, or configure a cloud embedder (see "Bring-your-own embeddings" below). Without one, memesh uses keyword search only.
135
135
 
136
136
  ### Step 1.5: Wire MeMesh into Claude Code (npm path only)
137
137
 
@@ -178,7 +178,7 @@ memesh doctor
178
178
  Open the dashboard to explore your memory:
179
179
 
180
180
  ```bash
181
- memesh
181
+ memesh serve
182
182
  ```
183
183
 
184
184
  <p align="center">
@@ -287,7 +287,7 @@ All configuration is via environment variables. Defaults are local-only and zero
287
287
  |---|---|---|
288
288
  | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | Override the SQLite database location. |
289
289
  | `MEMESH_AUTO_CAPTURE` | `true` | Disable the auto-capture hooks (`Stop`, `PreCompact`) entirely. |
290
- | `MEMESH_AUTO_DETECT_LLM` | unset (auto-detect **on**) | Set to `0` to stop memesh using an API key it finds in your shell env. By default, if `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` is set and you have not configured a provider in `~/.memesh/config.json`, memesh uses it for write-side LLM features (lesson extraction, auto-tagging, dream). Embeddings are unaffected — they stay local ONNX (384-dim) unless you explicitly set `embedder.provider`. |
290
+ | `MEMESH_AUTO_DETECT_LLM` | unset (auto-detect **on**) | Set to `0` to stop memesh using an API key it finds in your shell env. By default, if `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` is set and you have not configured a provider in `~/.memesh/config.json`, memesh uses it for write-side LLM features (lesson extraction, auto-tagging, dream). Embeddings are unaffected — they stay keyword-only (FTS5) unless you explicitly set `embedder.provider` to `ollama` or `openai`. |
291
291
  | `MEMESH_ENABLE_AGENTIC_ORCHESTRATION` | unset | Set to `1` to enable an experimental working-model protocol (CTO / Orchestrator / Agents framing). Adds a session-start banner, a Bash command nudge, and `verify_agent_work` telemetry. The protocol's effectiveness is being instrumented, not yet proven — opt in if you want to participate. **Default is OFF**: the core memory features work without this flag. |
292
292
  | `MEMESH_AUTO_UPDATE` | `off` | Auto-update policy. `off` (default) never auto-updates; `patch` allows `X.Y.Z → X.Y.Z+N`; `minor` adds `X.Y.Z → X.Y+1.0`; `major` allows any bump. When permitted, a detached `npm install -g` fires at session end (Stop hook) so it never blocks your work — outcomes land in `~/.memesh/auto-update.log`. Also settable as `autoUpdate` in `~/.memesh/config.json` (env wins). When the installed version is deprecated by maintainers (security advisory), `patch` is force-allowed even on `off` — minor / major bumps still stay manual to avoid silent behaviour drift. |
293
293
  | `OPENAI_API_KEY` | unset | Your OpenAI key. Used automatically for LLM features unless you set `MEMESH_AUTO_DETECT_LLM=0` or configure a provider explicitly. |
@@ -295,6 +295,8 @@ All configuration is via environment variables. Defaults are local-only and zero
295
295
 
296
296
  `memesh doctor` prints the resolved configuration so you can see what's active.
297
297
 
298
+ **Fallback LLM providers (Smart Mode).** In the dashboard **Settings → "Fallback providers"** you can set an ordered failover chain — memesh tries each provider in turn when your primary is down. Add a local [Ollama](https://ollama.com) fallback, or a cloud one (OpenAI / Anthropic, with an API key). Privacy tradeoff: when a cloud fallback is used, memory text — which can be private — is sent to that provider, so it matters if you run local-only for privacy.
299
+
298
300
  When npm flags an installed version as deprecated (typically a security advisory), the next session-start prepends a strong `⚠️ MeMesh <ver> is DEPRECATED` banner and `memesh update-status` surfaces the same line until you upgrade. The check is cached at `~/.memesh/update-check.<version>.json` so a transient network failure can't dim the warning.
299
301
 
300
302
  ---
@@ -360,19 +362,24 @@ memesh config set llm.api-key sk-ant-...
360
362
  Or use the dashboard Settings tab (visual setup):
361
363
 
362
364
  ```bash
363
- memesh # opens dashboard → Settings tab
365
+ memesh serve # opens dashboard → Settings tab
364
366
  ```
365
367
 
366
- ### Bring-your-own embeddings (optional)
368
+ **Mine your past sessions into memory.** `memesh dream run --from-transcripts` reads this project's Claude Code session transcripts, asks the LLM for the decisions and lessons buried in the conversation, and stages them as proposals — nothing enters your graph automatically. Review each with `memesh dream show <id>` and accept the ones worth keeping. To run it on a schedule, enable `memesh config set transcriptMining true` and point a cron/launchd entry at `memesh dream run --from-transcripts --if-due` — it self-throttles (default once every 24h per project) and stays staging-only. See [API_REFERENCE](docs/api/API_REFERENCE.md#memesh-dream).
369
+
370
+ ### Semantic search / embeddings (optional)
367
371
 
368
- Embeddings default to a local ONNX model (`Xenova/all-MiniLM-L6-v2`, 384-dim) — no API key, nothing leaves your machine, and the default FTS5 recall path doesn't need them at all. To use a hosted or local-server embedder instead:
372
+ By default MeMesh does **keyword-only** recall (FTS5) — no API key, no model download, nothing leaves your machine. Semantic (meaning-based) search is opt-in and needs an embedder. Point one of these at it:
369
373
 
370
374
  ```bash
371
- memesh config set embedder.provider openai # or: ollama
375
+ memesh config set embedder.provider ollama # local, needs `ollama serve`
376
+ memesh config set embedder.model nomic-embed-text
377
+ # or, for a hosted embedder:
378
+ memesh config set embedder.provider openai
372
379
  memesh config set embedder.model text-embedding-3-small
373
380
  ```
374
381
 
375
- The embedder is configured **independently of the chat LLM** — changing `llm.provider` never silently changes your embeddings. If you switch to an embedder with a different dimension (e.g. 384 → 1536), MeMesh rebuilds the vector index automatically on the next write. Supported `embedder.provider` values: `onnx` (default, local), `openai`, `ollama`.
382
+ The embedder is configured **independently of the chat LLM** — changing `llm.provider` never silently changes your embeddings. If you switch to an embedder with a different dimension (e.g. 768 → 1536), MeMesh rebuilds the vector index automatically on the next write. Supported `embedder.provider` values: `ollama` (local), `openai` (hosted). With none set, recall stays on keyword search.
376
383
 
377
384
  | | Level 0 (default) | Level 1 (Smart Mode) |
378
385
  |---|---|---|
@@ -385,7 +392,7 @@ The embedder is configured **independently of the chat LLM** — changing `llm.p
385
392
 
386
393
  ---
387
394
 
388
- ## All 9 Memory Tools
395
+ ## All 8 Memory Tools
389
396
 
390
397
  | Tool | What it does |
391
398
  |------|-------------|
@@ -464,5 +471,5 @@ Dashboard: `cd dashboard && npm install && npm run dev`
464
471
  ---
465
472
 
466
473
  <p align="center">
467
- <strong>MIT</strong> — Made by <a href="https://pcircle.ai">PCIRCLE AI</a>
474
+ <strong>MIT</strong> — Made by <a href="https://pcircle.com">PCIRCLE AI</a>
468
475
  </p>
package/README.pt.md CHANGED
@@ -83,7 +83,7 @@ flowchart TB
83
83
  | Usar o skill `/memesh` numa conversa do Claude Code | Path A (plugin) |
84
84
  | Auto-captura no Claude Code (sessão → lições → recall seguinte) | Path A (plugin) |
85
85
  | Rodar `memesh remember` / `memesh recall` / `memesh doctor` em qualquer terminal | Path B (npm-global) |
86
- | Abrir o dashboard via `memesh` (sem atraso de inicialização do `npx`) | Path B (npm-global) |
86
+ | Abrir o dashboard via `memesh serve` (sem atraso de inicialização do `npx`) | Path B (npm-global) |
87
87
  | Conectar `memesh-mcp` ao Cursor, Cline ou outro cliente MCP | Path B (npm-global) |
88
88
  | Tudo acima | **Instale ambos** — não conflitam |
89
89
 
@@ -108,7 +108,20 @@ Se você só usa memesh pelo chat do Claude Code (nunca digita `memesh` num term
108
108
 
109
109
  ## Comece em 60 Segundos
110
110
 
111
- ### Passo 1: Instale
111
+ ### Opção A — Plugin do Claude Code (instalação em uma linha)
112
+
113
+ Se você usa o Claude Code, instale o MeMesh como plugin de dentro da CLI:
114
+
115
+ ```
116
+ /plugin marketplace add PCIRCLE-AI/memesh-llm-memory
117
+ /plugin install memesh@pcircle-memesh
118
+ ```
119
+
120
+ O Claude Code conecta hooks, skills e o servidor MCP automaticamente. Você ganha auto-captura em sessão, recall proativo, o skill `/memesh` na conversa e `remember` / `recall` / `forget` / `learn` como ferramentas MCP para o agente.
121
+
122
+ ### Opção B — npm global (otimização opcional)
123
+
124
+ Se quiser o binário direto no seu `PATH` (para que `memesh` funcione em qualquer terminal sem o atraso do `npx`), ou expor `memesh-mcp` como comando stdio de caminho fixo para clientes MCP fora do Claude Code (Cursor, Cline):
112
125
 
113
126
  ```bash
114
127
  npm install -g @pcircle/memesh
@@ -127,6 +140,12 @@ Os hooks coexistem com qualquer hook customizado em `~/.claude/hooks/` — `inst
127
140
 
128
141
  ### Passo 2: Armazene uma decisão
129
142
 
143
+ ```bash
144
+ memesh remember "Use OAuth 2.0 with PKCE for the new auth"
145
+ ```
146
+
147
+ Ou use a forma explícita quando quiser um nome e um tipo estáveis para filtrar depois:
148
+
130
149
  ```bash
131
150
  memesh remember --name "auth-decision" --type "decision" --obs "Use OAuth 2.0 with PKCE"
132
151
  ```
@@ -149,7 +168,7 @@ memesh doctor
149
168
  Abra o dashboard para explorar sua memória:
150
169
 
151
170
  ```bash
152
- memesh
171
+ memesh serve
153
172
  ```
154
173
 
155
174
  <p align="center">
@@ -258,7 +277,7 @@ Toda a configuração é feita por variáveis de ambiente. Os padrões são loca
258
277
  |---|---|---|
259
278
  | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | Sobrescreve a localização do banco SQLite. |
260
279
  | `MEMESH_AUTO_CAPTURE` | `true` | Desativa completamente os hooks de auto-captura (`Stop`, `PreCompact`). |
261
- | `MEMESH_AUTO_DETECT_LLM` | não definido (autodetecção **ligada**) | Defina como `0` para que o memesh NÃO use uma chave de API encontrada no ambiente do shell. Por padrão, se `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` estiver definida e você não tiver configurado um provedor em `~/.memesh/config.json`, o memesh a usa para as funções LLM de escrita (consolidação, extração de lições, autotagging, dream). Os embeddings não são afetados — permanecem em ONNX local (384-dim) a menos que você defina `embedder.provider` explicitamente. |
280
+ | `MEMESH_AUTO_DETECT_LLM` | não definido (autodetecção **ligada**) | Defina como `0` para que o memesh NÃO use uma chave de API encontrada no ambiente do shell. Por padrão, se `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` estiver definida e você não tiver configurado um provedor em `~/.memesh/config.json`, o memesh a usa para as funções LLM de escrita (consolidação, extração de lições, autotagging, dream). Os embeddings não são afetados — permanecem apenas por palavras-chave (FTS5) a menos que você defina `embedder.provider` como `ollama` ou `openai`. |
262
281
  | `MEMESH_ENABLE_AGENTIC_ORCHESTRATION` | unset | Defina como `1` para habilitar um protocolo experimental de modelo de trabalho (enquadramento CTO / Orchestrator / Agents). Adiciona um banner de início de sessão, um nudge para comandos Bash e telemetria `verify_agent_work`. A eficácia do protocolo está sendo instrumentada, ainda não comprovada — opte se quiser participar. **Padrão é OFF**: as funcionalidades de memória core funcionam sem essa flag. |
263
282
  | `MEMESH_AUTO_UPDATE` | `off` | Política de auto-update. `off` (padrão) nunca faz auto-update; `patch` permite `X.Y.Z → X.Y.Z+N`; `minor` adiciona `X.Y.Z → X.Y+1.0`; `major` permite qualquer bump. Quando permitido, um `npm install -g` desanexado dispara no fim da sessão (hook Stop) para nunca bloquear seu trabalho — os resultados aparecem em `~/.memesh/auto-update.log`. Também configurável como `autoUpdate` em `~/.memesh/config.json` (env vence). Quando a versão instalada é depreciada pelos mantenedores (advisory de segurança), `patch` é forçado mesmo em `off` — bumps minor / major continuam manuais para evitar drift silencioso de comportamento. |
264
283
  | `OPENAI_API_KEY` | não definido | Sua chave da OpenAI. Usada automaticamente para as funções LLM a menos que você defina `MEMESH_AUTO_DETECT_LLM=0` ou configure um provedor explicitamente. |
@@ -266,6 +285,8 @@ Toda a configuração é feita por variáveis de ambiente. Os padrões são loca
266
285
 
267
286
  `memesh doctor` imprime a configuração resolvida para você ver o que está ativo.
268
287
 
288
+ **Provedores LLM de fallback (Smart Mode).** No dashboard, em **Settings → “Fallback providers”**, você pode definir uma cadeia de failover ordenada — o memesh tenta cada provedor por vez quando o principal está fora do ar. Adicione um fallback local [Ollama](https://ollama.com), ou um na nuvem (OpenAI / Anthropic, com uma API key). Compromisso de privacidade: quando um fallback na nuvem é usado, o texto da memória — que pode ser privado — é enviado a esse provedor, o que importa se você roda só local por privacidade.
289
+
269
290
  Quando o npm sinaliza uma versão instalada como depreciada (tipicamente um advisory de segurança), o próximo início de sessão antepõe um banner forte `⚠️ MeMesh <ver> is DEPRECATED` e `memesh update-status` mostra a mesma linha até você atualizar. A verificação fica em cache em `~/.memesh/update-check.<version>.json` para que uma falha de rede transitória não atenue o aviso.
270
291
 
271
292
  ---
@@ -331,19 +352,21 @@ memesh config set llm.api-key sk-ant-...
331
352
  Ou use a aba Settings do dashboard (setup visual):
332
353
 
333
354
  ```bash
334
- memesh # abre dashboard → aba Settings
355
+ memesh serve # abre dashboard → aba Settings
335
356
  ```
336
357
 
358
+ **Minere memória das suas sessões passadas.** `memesh dream run --from-transcripts` lê as transcrições de sessão do Claude Code deste projeto, pede ao LLM as decisões e lições escondidas na conversa e as prepara como propostas — nada entra no seu grafo automaticamente. Revise cada uma com `memesh dream show <id>` e aceite as que valerem a pena.
359
+
337
360
  ### Use seus próprios embeddings (opcional)
338
361
 
339
- Os embeddings usam por padrão um modelo ONNX local (`Xenova/all-MiniLM-L6-v2`, 384-dim) — sem chave de API, nada sai da sua máquina, e o recall FTS5 padrão nem precisa deles. Para usar um embedder hospedado ou de servidor local:
362
+ Por padrão o MeMesh faz recall **apenas por palavras-chave** (FTS5) — sem chave de API, sem download de modelo, nada sai da sua máquina. A busca semântica (por significado) é opcional e precisa de um embedder. Configure um:
340
363
 
341
364
  ```bash
342
365
  memesh config set embedder.provider openai # or: ollama
343
366
  memesh config set embedder.model text-embedding-3-small
344
367
  ```
345
368
 
346
- O embedder é configurado **independentemente do LLM de chat** — mudar `llm.provider` nunca muda seus embeddings silenciosamente. Se você trocar para uma dimensão diferente (ex.: 384 → 1536), o MeMesh reconstrói o índice vetorial automaticamente na próxima escrita. Valores de `embedder.provider` suportados: `onnx` (padrão, local), `openai`, `ollama`.
369
+ O embedder é configurado **independentemente do LLM de chat** — mudar `llm.provider` nunca muda seus embeddings silenciosamente. Se você trocar para uma dimensão diferente (ex.: 768 → 1536), o MeMesh reconstrói o índice vetorial automaticamente na próxima escrita. Valores de `embedder.provider` suportados: `ollama` (local), `openai` (hospedado). Sem nenhum, o recall permanece na busca por palavras-chave.
347
370
 
348
371
  | | Level 0 (padrão) | Level 1 (Smart Mode) |
349
372
  |---|---|---|
@@ -356,7 +379,7 @@ O embedder é configurado **independentemente do LLM de chat** — mudar `llm.pr
356
379
 
357
380
  ---
358
381
 
359
- ## Todas as 9 Ferramentas de Memória
382
+ ## Todas as 8 Ferramentas de Memória
360
383
 
361
384
  | Ferramenta | O que faz |
362
385
  |------|-------------|
@@ -435,5 +458,5 @@ Dashboard: `cd dashboard && npm install && npm run dev`
435
458
  ---
436
459
 
437
460
  <p align="center">
438
- <strong>MIT</strong> — Feito por <a href="https://pcircle.ai">PCIRCLE AI</a>
461
+ <strong>MIT</strong> — Feito por <a href="https://pcircle.com">PCIRCLE AI</a>
439
462
  </p>
package/README.th.md CHANGED
@@ -83,7 +83,7 @@ flowchart TB
83
83
  | ใช้ skill `/memesh` ในการสนทนา Claude Code | Path A (plugin) |
84
84
  | Auto-capture ใน Claude Code (session → บทเรียน → recall ครั้งถัดไป) | Path A (plugin) |
85
85
  | รัน `memesh remember` / `memesh recall` / `memesh doctor` ใน terminal | Path B (npm-global) |
86
- | เปิด dashboard ผ่าน `memesh` (ไม่มีดีเลย์ของ `npx`) | Path B (npm-global) |
86
+ | เปิด dashboard ผ่าน `memesh serve` (ไม่มีดีเลย์ของ `npx`) | Path B (npm-global) |
87
87
  | เสียบ `memesh-mcp` เข้ากับ Cursor, Cline หรือ MCP client อื่น | Path B (npm-global) |
88
88
  | ทั้งหมดข้างต้น | **ติดตั้งทั้งสอง** — ไม่ขัดแย้งกัน |
89
89
 
@@ -142,6 +142,12 @@ Hooks เหล่านี้อยู่ร่วมกับ custom hooks ท
142
142
 
143
143
  ### ขั้นตอนที่ 2: เก็บการตัดสินใจ
144
144
 
145
+ ```bash
146
+ memesh remember "Use OAuth 2.0 with PKCE for the new auth"
147
+ ```
148
+
149
+ หรือใช้รูปแบบชัดเจนเมื่อต้องการชื่อและชนิดที่คงที่สำหรับกรองภายหลัง:
150
+
145
151
  ```bash
146
152
  memesh remember --name "auth-decision" --type "decision" --obs "Use OAuth 2.0 with PKCE"
147
153
  ```
@@ -164,7 +170,7 @@ memesh doctor
164
170
  เปิดแดชบอร์ดเพื่อสำรวจหน่วยความจำ:
165
171
 
166
172
  ```bash
167
- memesh
173
+ memesh serve
168
174
  ```
169
175
 
170
176
  <p align="center">
@@ -273,7 +279,7 @@ memesh export-schema \
273
279
  |---|---|---|
274
280
  | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | เปลี่ยนตำแหน่งฐานข้อมูล SQLite |
275
281
  | `MEMESH_AUTO_CAPTURE` | `true` | ปิดการใช้ hook จับข้อมูลอัตโนมัติทั้งหมด (`Stop`, `PreCompact`) |
276
- | `MEMESH_AUTO_DETECT_LLM` | ไม่ได้ตั้งค่า (ตรวจจับอัตโนมัติ **เปิด**) | ตั้งเป็น `0` เพื่อไม่ให้ memesh ใช้คีย์ API ที่พบในสภาพแวดล้อมของเชลล์ โดยค่าเริ่มต้น หากตั้ง `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` ไว้ และคุณยังไม่ได้กำหนดผู้ให้บริการใน `~/.memesh/config.json` memesh จะใช้คีย์นั้นสำหรับฟีเจอร์ LLM ฝั่งเขียน (การสกัดบทเรียน, auto-tagging, dream) ส่วน embeddings ไม่ได้รับผลกระทบ — ยังคงเป็น ONNX ในเครื่อง (384 มิติ) เว้นแต่คุณจะตั้ง `embedder.provider` อย่างชัดเจน |
282
+ | `MEMESH_AUTO_DETECT_LLM` | ไม่ได้ตั้งค่า (ตรวจจับอัตโนมัติ **เปิด**) | ตั้งเป็น `0` เพื่อไม่ให้ memesh ใช้คีย์ API ที่พบในสภาพแวดล้อมของเชลล์ โดยค่าเริ่มต้น หากตั้ง `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` ไว้ และคุณยังไม่ได้กำหนดผู้ให้บริการใน `~/.memesh/config.json` memesh จะใช้คีย์นั้นสำหรับฟีเจอร์ LLM ฝั่งเขียน (การสกัดบทเรียน, auto-tagging, dream) ส่วน embeddings ไม่ได้รับผลกระทบ — ยังคงเป็นการค้นหาด้วยคีย์เวิร์ดอย่างเดียว (FTS5) เว้นแต่คุณจะตั้ง `embedder.provider` เป็น `ollama` หรือ `openai` |
277
283
  | `MEMESH_ENABLE_AGENTIC_ORCHESTRATION` | ไม่ตั้ง | ตั้งเป็น `1` เพื่อเปิดใช้โปรโตคอล working-model เชิงทดลอง (กรอบ CTO / Orchestrator / Agents) เพิ่มแบนเนอร์ตอนเริ่มเซสชัน การเตือนคำสั่ง Bash และเทเลเมตรี `verify_agent_work` ประสิทธิผลของโปรโตคอลกำลังถูกเก็บข้อมูล ยังไม่ได้พิสูจน์ — opt-in ถ้าต้องการเข้าร่วม **ค่าเริ่มต้นปิด**: ฟีเจอร์หน่วยความจำหลักทำงานได้โดยไม่ต้องเปิดธงนี้ |
278
284
  | `MEMESH_AUTO_UPDATE` | `off` | นโยบายอัปเดตอัตโนมัติ `off` (ค่าเริ่มต้น) ไม่อัปเดตเลย; `patch` อนุญาต `X.Y.Z → X.Y.Z+N`; `minor` เพิ่ม `X.Y.Z → X.Y+1.0`; `major` อนุญาตทุกการเพิ่มเวอร์ชัน เมื่ออนุญาต `npm install -g` แบบ detached จะทำงานเมื่อจบเซสชัน (Stop hook) เพื่อไม่บล็อกงานของคุณ — ผลลัพธ์ลงใน `~/.memesh/auto-update.log` ตั้งใน `~/.memesh/config.json` ผ่านคีย์ `autoUpdate` ก็ได้ (env ชนะ) เมื่อเวอร์ชันที่ติดตั้งถูก deprecate (security advisory) `patch` จะถูกบังคับเปิดแม้ตั้งเป็น `off` — minor / major ยังต้องทำมือเพื่อหลีกเลี่ยงการเปลี่ยนพฤติกรรมเงียบ ๆ |
279
285
  | `OPENAI_API_KEY` | ไม่ได้ตั้งค่า | คีย์ OpenAI ของคุณ ใช้โดยอัตโนมัติสำหรับฟีเจอร์ LLM เว้นแต่คุณจะตั้ง `MEMESH_AUTO_DETECT_LLM=0` หรือกำหนดผู้ให้บริการอย่างชัดเจน |
@@ -281,6 +287,8 @@ memesh export-schema \
281
287
 
282
288
  `memesh doctor` พิมพ์การตั้งค่าที่ resolve แล้วเพื่อให้คุณเห็นว่าอะไรทำงานอยู่
283
289
 
290
+ **ผู้ให้บริการ LLM สำรอง (Smart Mode)** ใน **Settings → “Fallback providers”** ของ dashboard คุณตั้งลูกโซ่ failover ตามลำดับได้ — เมื่อผู้ให้บริการหลักล่ม memesh จะลองตัวถัดไปในรายการตามลำดับ เพิ่มตัวสำรองแบบโลคัล [Ollama](https://ollama.com) หรือแบบคลาวด์ (OpenAI / Anthropic ต้องมี API key) ก็ได้ ข้อแลกเปลี่ยนด้านความเป็นส่วนตัว: เมื่อใช้ตัวสำรองแบบคลาวด์ ข้อความในหน่วยความจำ (ซึ่งอาจเป็นข้อมูลส่วนตัว) จะถูกส่งไปยังผู้ให้บริการนั้น จึงสำคัญถ้าคุณรันแบบโลคัลล้วนเพื่อความเป็นส่วนตัว
291
+
284
292
  เมื่อ npm ระบุว่าเวอร์ชันที่ติดตั้งถูก deprecate (โดยทั่วไปคือ security advisory) เซสชันถัดไปจะแสดงแบนเนอร์ `⚠️ MeMesh <ver> is DEPRECATED` แบบหนักนำหน้า และ `memesh update-status` จะแสดงบรรทัดเดียวกันจนกว่าคุณจะอัปเกรด การตรวจสอบถูก cache ที่ `~/.memesh/update-check.<version>.json` เพื่อไม่ให้ความล้มเหลวเครือข่ายชั่วคราวลดความสว่างของคำเตือน
285
293
 
286
294
  ---
@@ -346,19 +354,21 @@ memesh config set llm.api-key sk-ant-...
346
354
  หรือใช้แท็บ Settings แดชบอร์ด (การตั้งค่าสายตา):
347
355
 
348
356
  ```bash
349
- memesh # opens dashboard → Settings tab
357
+ memesh serve # opens dashboard → Settings tab
350
358
  ```
351
359
 
360
+ **ขุดเซสชันที่ผ่านมาให้เป็นหน่วยความจำ** `memesh dream run --from-transcripts` จะอ่านบันทึกเซสชัน Claude Code ของโปรเจกต์นี้ ถาม LLM หาการตัดสินใจและบทเรียนที่ซ่อนอยู่ในบทสนทนา แล้วพักไว้เป็นข้อเสนอ — ไม่มีอะไรเข้าสู่กราฟความรู้โดยอัตโนมัติ ตรวจดูทีละรายการด้วย `memesh dream show <id>` แล้ว accept เฉพาะอันที่ควรเก็บ
361
+
352
362
  ### ใช้ embeddings ของคุณเอง (ไม่บังคับ)
353
363
 
354
- โดยค่าเริ่มต้น embeddings ใช้โมเดล ONNX ในเครื่อง (`Xenova/all-MiniLM-L6-v2`, 384 มิติ) — ไม่ต้องใช้คีย์ API ไม่มีข้อมูลออกจากเครื่อง และการ recall แบบ FTS5 เริ่มต้นก็ไม่ต้องใช้เลย หากต้องการใช้ embedder แบบโฮสต์หรือเซิร์ฟเวอร์ในเครื่อง:
364
+ โดยค่าเริ่มต้น MeMesh ทำ recall **ด้วยคีย์เวิร์ดอย่างเดียว** (FTS5) — ไม่ต้องใช้คีย์ API ไม่ต้องดาวน์โหลดโมเดล ไม่มีข้อมูลออกจากเครื่อง การค้นหาเชิงความหมาย (semantic) เป็นตัวเลือกเสริมและต้องใช้ embedder ตั้งค่าอย่างใดอย่างหนึ่ง:
355
365
 
356
366
  ```bash
357
367
  memesh config set embedder.provider openai # or: ollama
358
368
  memesh config set embedder.model text-embedding-3-small
359
369
  ```
360
370
 
361
- embedder ถูกตั้งค่า**แยกจาก LLM แชท** — การเปลี่ยน `llm.provider` จะไม่เปลี่ยน embeddings ของคุณอย่างเงียบ ๆ หากเปลี่ยนไปใช้มิติที่ต่างกัน (เช่น 384 → 1536) MeMesh จะสร้างดัชนีเวกเตอร์ใหม่โดยอัตโนมัติในการเขียนครั้งถัดไป ค่า `embedder.provider` ที่รองรับ: `onnx` (ค่าเริ่มต้น ในเครื่อง), `openai`, `ollama`
371
+ embedder ถูกตั้งค่า**แยกจาก LLM แชท** — การเปลี่ยน `llm.provider` จะไม่เปลี่ยน embeddings ของคุณอย่างเงียบ ๆ หากเปลี่ยนไปใช้มิติที่ต่างกัน (เช่น 768 → 1536) MeMesh จะสร้างดัชนีเวกเตอร์ใหม่โดยอัตโนมัติในการเขียนครั้งถัดไป ค่า `embedder.provider` ที่รองรับ: `ollama` (ในเครื่อง), `openai` (โฮสต์) หากไม่ตั้งค่าใดเลย recall จะยังคงเป็นการค้นหาด้วยคีย์เวิร์ด
362
372
 
363
373
  | | ระดับ 0 (ค่าเริ่มต้น) | ระดับ 1 (Smart Mode) |
364
374
  |---|---|---|
@@ -371,7 +381,7 @@ embedder ถูกตั้งค่า**แยกจาก LLM แชท** —
371
381
 
372
382
  ---
373
383
 
374
- ## เครื่องมือหน่วยความจำทั้ง 9 ตัว
384
+ ## เครื่องมือหน่วยความจำทั้ง 8 ตัว
375
385
 
376
386
  | เครื่องมือ | ทำอะไร |
377
387
  |---|---|
@@ -449,5 +459,5 @@ Dashboard: `cd dashboard && npm install && npm run dev`
449
459
  ---
450
460
 
451
461
  <p align="center">
452
- <strong>MIT</strong> — สร้างโดย <a href="https://pcircle.ai">PCIRCLE AI</a>
462
+ <strong>MIT</strong> — สร้างโดย <a href="https://pcircle.com">PCIRCLE AI</a>
453
463
  </p>
package/README.vi.md CHANGED
@@ -29,7 +29,7 @@ Package này là tầng bộ nhớ cục bộ của dòng sản phẩm MeMesh. N
29
29
 
30
30
  ---
31
31
 
32
- ## Proof — 95.60% R@5 trên LongMemEval-S
32
+ ## Bằng chứng — 95.60% R@5 trên LongMemEval-S
33
33
 
34
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
35
 
@@ -83,7 +83,7 @@ flowchart TB
83
83
  | Dùng skill `/memesh` trong cuộc trò chuyện Claude Code | Path A (plugin) |
84
84
  | Tự động capture trong Claude Code (session → bài học → recall lần sau) | Path A (plugin) |
85
85
  | Chạy `memesh remember` / `memesh recall` / `memesh doctor` ở bất kỳ terminal nào | Path B (npm-global) |
86
- | Mở dashboard qua `memesh` (không bị trễ khởi động `npx`) | Path B (npm-global) |
86
+ | Mở dashboard qua `memesh serve` (không bị trễ khởi động `npx`) | Path B (npm-global) |
87
87
  | Cắm `memesh-mcp` vào Cursor, Cline hoặc client MCP khác | Path B (npm-global) |
88
88
  | Tất cả các mục trên | **Cài cả hai** — không xung đột |
89
89
 
@@ -108,7 +108,20 @@ Nếu bạn chỉ dùng memesh qua chat Claude Code (không bao giờ gõ `memes
108
108
 
109
109
  ## Bắt đầu trong 60 giây
110
110
 
111
- ### Bước 1: Cài đặt
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):
112
125
 
113
126
  ```bash
114
127
  npm install -g @pcircle/memesh
@@ -127,6 +140,12 @@ Các hooks này cùng tồn tại với bất kỳ hook tùy chỉnh nào trong
127
140
 
128
141
  ### Bước 2: Lưu một quyết định
129
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
+
130
149
  ```bash
131
150
  memesh remember --name "auth-decision" --type "decision" --obs "Use OAuth 2.0 with PKCE"
132
151
  ```
@@ -149,7 +168,7 @@ memesh doctor
149
168
  Mở dashboard để khám phá bộ nhớ của bạn:
150
169
 
151
170
  ```bash
152
- memesh
171
+ memesh serve
153
172
  ```
154
173
 
155
174
  <p align="center">
@@ -258,7 +277,7 @@ Toàn bộ cấu hình thông qua biến môi trường. Các giá trị mặc
258
277
  |---|---|---|
259
278
  | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | Ghi đè vị trí của database SQLite. |
260
279
  | `MEMESH_AUTO_CAPTURE` | `true` | Tắt hoàn toàn các hooks auto-capture (`Stop`, `PreCompact`). |
261
- | `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 ONNX cục bộ (384 chiều) trừ khi bạn đặt `embedder.provider` một cách ràng. |
280
+ | `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`. |
262
281
  | `MEMESH_ENABLE_AGENTIC_ORCHESTRATION` | chưa đặt | Đặt thành `1` để bật một giao thức working-model thử nghiệm (CTO / Orchestrator / Agents framing). Thêm session-start banner, một Bash command nudge, và telemetry `verify_agent_work`. Hiệu quả của giao thức đang được instrument, chưa được chứng minh — opt in nếu bạn muốn tham gia. **Mặc định là OFF**: các tính năng bộ nhớ cốt lõi vẫn hoạt động mà không cần flag này. |
263
282
  | `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. |
264
283
  | `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. |
@@ -266,6 +285,8 @@ Toàn bộ cấu hình thông qua biến môi trường. Các giá trị mặc
266
285
 
267
286
  `memesh doctor` in ra cấu hình đã resolve để bạn thấy cái gì đang active.
268
287
 
288
+ **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ư.
289
+
269
290
  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.
270
291
 
271
292
  ---
@@ -331,23 +352,25 @@ memesh config set llm.api-key sk-ant-...
331
352
  Hoặc dùng dashboard Settings tab (visual setup):
332
353
 
333
354
  ```bash
334
- memesh # mở dashboard → Settings tab
355
+ memesh serve # mở dashboard → Settings tab
335
356
  ```
336
357
 
358
+ **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ữ.
359
+
337
360
  ### Dùng embeddings của riêng bạn (tùy chọn)
338
361
 
339
- Mặc định embeddings dùng hình ONNX cục bộ (`Xenova/all-MiniLM-L6-v2`, 384 chiều) — không cần khóa API, không có gì rời khỏi máy bạn, recall FTS5 mặc định thậm chí không cần đến. Để dùng embedder lưu trữ đám mây hoặc máy chủ cục bộ:
362
+ 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) tùy chọn cần một embedder. Hãy cấu hình một trong số:
340
363
 
341
364
  ```bash
342
365
  memesh config set embedder.provider openai # or: ollama
343
366
  memesh config set embedder.model text-embedding-3-small
344
367
  ```
345
368
 
346
- 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ụ 384 → 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ợ: `onnx` (mặc định, cục bộ), `openai`, `ollama`.
369
+ 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.
347
370
 
348
371
  | | Level 0 (default) | Level 1 (Smart Mode) |
349
372
  |---|---|---|
350
- | **Search** | FTS5 + sqlite-vec, 95.60% R@5 | giữ nguyên — recall luôn LLM-free ở mọi level |
373
+ | **Tìm kiếm** | FTS5 + sqlite-vec, 95.60% R@5 | giữ nguyên — recall luôn LLM-free ở mọi level |
351
374
  | **Auto-capture** | Rule-based patterns | + LLM extracts decisions & lessons |
352
375
  | **Auto-tagging** | Chỉ thẻ thủ công | + LLM tự động gắn nhãn entity mới |
353
376
  | **Phân tích lỗi** | Không có sẵn | + LLM chuyển session errors thành structured lessons |
@@ -356,7 +379,7 @@ Embedder được cấu hình **độc lập với LLM chat** — thay đổi `l
356
379
 
357
380
  ---
358
381
 
359
- ## Cả 9 Memory Tools
382
+ ## Cả 8 Memory Tools
360
383
 
361
384
  | Tool | Nó làm gì |
362
385
  |------|-------------|
@@ -435,5 +458,5 @@ Dashboard: `cd dashboard && npm install && npm run dev`
435
458
  ---
436
459
 
437
460
  <p align="center">
438
- <strong>MIT</strong> — Được tạo bởi <a href="https://pcircle.ai">PCIRCLE AI</a>
461
+ <strong>MIT</strong> — Được tạo bởi <a href="https://pcircle.com">PCIRCLE AI</a>
439
462
  </p>
package/README.zh-CN.md CHANGED
@@ -83,7 +83,7 @@ flowchart TB
83
83
  | 在 Claude Code 对话里用 `/memesh` skill | Path A(plugin)|
84
84
  | 在 Claude Code 启用自动 capture(session → 教训 → 下次 recall) | Path A(plugin)|
85
85
  | 在任何 terminal 跑 `memesh remember` / `memesh recall` / `memesh doctor` | Path B(npm-global)|
86
- | 用 `memesh` 直接开 dashboard(没有 `npx` 启动延迟) | Path B(npm-global)|
86
+ | 用 `memesh serve` 直接开 dashboard(没有 `npx` 启动延迟) | Path B(npm-global)|
87
87
  | 把 `memesh-mcp` 接到 Cursor、Cline 或其他 MCP client | Path B(npm-global)|
88
88
  | 以上全要 | **两条都装** — 不会冲突 |
89
89
 
@@ -129,7 +129,7 @@ npm install -g @pcircle/memesh
129
129
 
130
130
  > **首次安装注意事项(一次性):**
131
131
  > - **原生模块** — `better-sqlite3` 和 `sqlite-vec` 在 macOS(arm64/x64)、Linux(x64/arm64)和 Windows x64 上均通过预构建二进制安装。在不常见的平台或预构建失败时,需要可用的 C/C++ 工具链。
132
- > - **embedding 模型** 第一次触发本地 embedding 的调用(例如带语义模式的 `recall`)会下载 `Xenova/all-MiniLM-L6-v2`(~80 MB)到 `~/.memesh/models/`。后续调用是即时的。默认检索路径(FTS5)不需要这个下载。
132
+ > - **语义搜索是可选的**默认检索路径是关键词搜索(FTS5),不需要模型也不需要下载。基于语义的搜索需要一个 embedder:在本地运行 [Ollama](https://ollama.com),或配置一个云端 embedder(见下方“嵌入”)。没有配置时,memesh 只使用关键词搜索。
133
133
 
134
134
  ### 第一步半:把 MeMesh 接入 Claude Code(仅 npm 路径)
135
135
 
@@ -176,7 +176,7 @@ memesh doctor
176
176
  打开仪表板浏览你的内存:
177
177
 
178
178
  ```bash
179
- memesh
179
+ memesh serve
180
180
  ```
181
181
 
182
182
  <p align="center">
@@ -285,7 +285,7 @@ memesh export-schema \
285
285
  |---|---|---|
286
286
  | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | 覆盖 SQLite 数据库位置。 |
287
287
  | `MEMESH_AUTO_CAPTURE` | `true` | 完全禁用自动捕获 hooks(`Stop`、`PreCompact`)。 |
288
- | `MEMESH_AUTO_DETECT_LLM` | 未设置(自动检测**开启**) | 设为 `0` 让 memesh 不使用它在 shell 环境中找到的 API 密钥。默认情况下,如果设置了 `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` 且你没有在 `~/.memesh/config.json` 中配置提供商,memesh 会用它来跑写入侧的 LLM 功能(整合、经验提取、自动打标签、dream)。嵌入不受影响 —— 除非你显式设置 `embedder.provider`,否则保持本地 ONNX(384 维)。 |
288
+ | `MEMESH_AUTO_DETECT_LLM` | 未设置(自动检测**开启**) | 设为 `0` 让 memesh 不使用它在 shell 环境中找到的 API 密钥。默认情况下,如果设置了 `ANTHROPIC_API_KEY` / `OPENAI_API_KEY` / `OLLAMA_HOST` 且你没有在 `~/.memesh/config.json` 中配置提供商,memesh 会用它来跑写入侧的 LLM 功能(整合、经验提取、自动打标签、dream)。嵌入不受影响 —— 除非你把 `embedder.provider` 显式设置为 `ollama` 或 `openai`,否则保持仅关键词(FTS5)。 |
289
289
  | `MEMESH_ENABLE_AGENTIC_ORCHESTRATION` | 未设置 | 设为 `1` 启用一个实验性工作模型协议(CTO / Orchestrator / Agents 框架)。会增加一个 session-start 横幅、Bash 命令提示,以及 `verify_agent_work` 遥测。该协议的有效性正在被检测中、尚未被证实 — 想参与实验时再开启。**默认 OFF**:核心内存功能不依赖此 flag。 |
290
290
  | `MEMESH_AUTO_UPDATE` | `off` | 自动升级策略。`off`(默认)从不自动升级;`patch` 允许 `X.Y.Z → X.Y.Z+N`;`minor` 增加 `X.Y.Z → X.Y+1.0`;`major` 允许任意版本跳升。允许时,一个分离的 `npm install -g` 会在会话结束(Stop hook)触发,所以从不阻塞你的工作 — 结果落在 `~/.memesh/auto-update.log`。也可以在 `~/.memesh/config.json` 里写为 `autoUpdate`(环境变量优先)。当已安装版本被维护者标记为 deprecated(安全建议)时,`patch` 会被强制允许,即便策略是 `off` — minor / major 升级仍保持手动,避免行为静默漂移。 |
291
291
  | `OPENAI_API_KEY` | 未设置 | 你的 OpenAI 密钥。除非你设置 `MEMESH_AUTO_DETECT_LLM=0` 或显式配置提供商,否则会自动用于 LLM 功能。 |
@@ -293,6 +293,8 @@ memesh export-schema \
293
293
 
294
294
  `memesh doctor` 会打印解析后的配置,你可以看到当前生效的内容。
295
295
 
296
+ **备用 LLM 提供商(Smart Mode)。** 在 dashboard 的 **Settings → “Fallback providers”** 可以设置一条有顺序的故障转移链——当主要提供商不可用时,memesh 会依次改用列表里的下一个。可以加本地的 [Ollama](https://ollama.com) 备用,或云端的(OpenAI / Anthropic,需要 API key)。隐私权衡:一旦用到云端备用,记忆内容(可能是私密的)会被发送到该提供商,所以如果你为了隐私只跑本地,这点需要注意。
297
+
296
298
  当 npm 把已安装版本标记为 deprecated(通常为安全建议)时,下次 session-start 会先显示一条强烈的 `⚠️ MeMesh <ver> is DEPRECATED` 横幅,并且 `memesh update-status` 在你升级前会持续显示同一行。检查结果会缓存到 `~/.memesh/update-check.<version>.json`,避免一次临时网络故障让警告变弱。
297
299
 
298
300
  ---
@@ -358,23 +360,25 @@ memesh config set llm.api-key sk-ant-...
358
360
  或使用仪表板设置标签页(可视化配置):
359
361
 
360
362
  ```bash
361
- memesh # 打开仪表板 → 设置标签页
363
+ memesh serve # 打开仪表板 → 设置标签页
362
364
  ```
363
365
 
366
+ **把过去的会话挖成记忆。** `memesh dream run --from-transcripts` 会读取这个项目的 Claude Code 会话记录,请 LLM 找出藏在对话里的决策与教训,再把它们暂存为提案——不会自动写入你的知识图谱。用 `memesh dream show <id>` 逐一查看,挑值得保留的 accept。
367
+
364
368
  ### 自带嵌入(可选)
365
369
 
366
- 嵌入默认使用本地 ONNX 模型(`Xenova/all-MiniLM-L6-v2`,384 维)—— 无需 API 密钥,数据不离开你的机器,而且默认的 FTS5 召回根本不需要它。若要改用托管或本地服务器的嵌入器:
370
+ 默认情况下 MeMesh 只做**关键词**召回(FTS5)—— 无需 API 密钥,无需下载模型,数据不离开你的机器。语义(基于含义的)搜索是可选的,需要一个嵌入器。配置其中之一:
367
371
 
368
372
  ```bash
369
373
  memesh config set embedder.provider openai # or: ollama
370
374
  memesh config set embedder.model text-embedding-3-small
371
375
  ```
372
376
 
373
- 嵌入器**独立于对话 LLM** 配置 —— 更改 `llm.provider` 绝不会悄悄改变你的嵌入。如果切换到不同维度(如 384 → 1536),MeMesh 会在下次写入时自动重建向量索引。支持的 `embedder.provider` 取值:`onnx`(默认,本地)、`openai`、`ollama`。
377
+ 嵌入器**独立于对话 LLM** 配置 —— 更改 `llm.provider` 绝不会悄悄改变你的嵌入。如果切换到不同维度(如 768 → 1536),MeMesh 会在下次写入时自动重建向量索引。支持的 `embedder.provider` 取值:`ollama`(本地)、`openai`(托管)。两者都不设置时,召回保持关键词搜索。
374
378
 
375
379
  | | 级别 0(默认) | 级别 1(智能模式) |
376
380
  |---|---|---|
377
- | **搜索** | FTS5 + sqlite-vec,95.60% R@5(每次回忆约 4ms) | 不变 — 回忆在每个级别都是无 LLM 的 |
381
+ | **搜索** | FTS5 + sqlite-vec,95.60% R@5 | 不变 — 回忆在每个级别都是无 LLM 的 |
378
382
  | **自动捕获** | 基于规则的模式 | + LLM 提取决策和经验教训 |
379
383
  | **自动打标签** | 仅手动标签 | + LLM 为新记忆生成标签 |
380
384
  | **失败分析** | 不可用 | + LLM 把会话错误转化为结构化经验教训 |
@@ -383,7 +387,7 @@ memesh config set embedder.model text-embedding-3-small
383
387
 
384
388
  ---
385
389
 
386
- ## 全部 9 个内存工具
390
+ ## 全部 8 个内存工具
387
391
 
388
392
  | 工具 | 它做什么 |
389
393
  |------|--------|
@@ -461,5 +465,5 @@ npm run test:e2e-dashboard
461
465
  ---
462
466
 
463
467
  <p align="center">
464
- <strong>MIT</strong> — 由 <a href="https://pcircle.ai">PCIRCLE AI</a> 开发
468
+ <strong>MIT</strong> — 由 <a href="https://pcircle.com">PCIRCLE AI</a> 开发
465
469
  </p>