@pcircle/memesh 4.6.0 → 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 (92) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/AGENTS.md +21 -0
  4. package/README.de.md +12 -13
  5. package/README.md +12 -14
  6. package/README.zh-TW.md +12 -13
  7. package/dashboard/dist/index.html +14 -13
  8. package/dist/core/analytics.d.ts +9 -0
  9. package/dist/core/analytics.d.ts.map +1 -1
  10. package/dist/core/analytics.js +36 -18
  11. package/dist/core/analytics.js.map +1 -1
  12. package/dist/core/briefing.d.ts.map +1 -1
  13. package/dist/core/briefing.js +1 -0
  14. package/dist/core/briefing.js.map +1 -1
  15. package/dist/core/config.d.ts +0 -1
  16. package/dist/core/config.d.ts.map +1 -1
  17. package/dist/core/config.js.map +1 -1
  18. package/dist/core/demo.d.ts.map +1 -1
  19. package/dist/core/demo.js +1 -1
  20. package/dist/core/demo.js.map +1 -1
  21. package/dist/core/doctor.d.ts.map +1 -1
  22. package/dist/core/doctor.js +25 -6
  23. package/dist/core/doctor.js.map +1 -1
  24. package/dist/core/dreamer.d.ts +2 -2
  25. package/dist/core/dreamer.d.ts.map +1 -1
  26. package/dist/core/dreamer.js +221 -0
  27. package/dist/core/dreamer.js.map +1 -1
  28. package/dist/core/embedder.d.ts +4 -1
  29. package/dist/core/embedder.d.ts.map +1 -1
  30. package/dist/core/embedder.js +67 -17
  31. package/dist/core/embedder.js.map +1 -1
  32. package/dist/core/graph.d.ts +12 -0
  33. package/dist/core/graph.d.ts.map +1 -1
  34. package/dist/core/graph.js +56 -1
  35. package/dist/core/graph.js.map +1 -1
  36. package/dist/core/guards.d.ts +20 -0
  37. package/dist/core/guards.d.ts.map +1 -0
  38. package/dist/core/guards.js +103 -0
  39. package/dist/core/guards.js.map +1 -0
  40. package/dist/core/kg-backfill.d.ts +5 -1
  41. package/dist/core/kg-backfill.d.ts.map +1 -1
  42. package/dist/core/kg-backfill.js +155 -2
  43. package/dist/core/kg-backfill.js.map +1 -1
  44. package/dist/core/operations.d.ts +13 -2
  45. package/dist/core/operations.d.ts.map +1 -1
  46. package/dist/core/operations.js +93 -15
  47. package/dist/core/operations.js.map +1 -1
  48. package/dist/core/serializer.d.ts.map +1 -1
  49. package/dist/core/serializer.js +8 -0
  50. package/dist/core/serializer.js.map +1 -1
  51. package/dist/core/types.d.ts +1 -0
  52. package/dist/core/types.d.ts.map +1 -1
  53. package/dist/core/why.d.ts +54 -0
  54. package/dist/core/why.d.ts.map +1 -0
  55. package/dist/core/why.js +168 -0
  56. package/dist/core/why.js.map +1 -0
  57. package/dist/core/work-topology.d.ts +3 -0
  58. package/dist/core/work-topology.d.ts.map +1 -1
  59. package/dist/core/work-topology.js +11 -2
  60. package/dist/core/work-topology.js.map +1 -1
  61. package/dist/db.d.ts +31 -4
  62. package/dist/db.d.ts.map +1 -1
  63. package/dist/db.js +163 -31
  64. package/dist/db.js.map +1 -1
  65. package/dist/skills-manifest.json +29 -19
  66. package/dist/storage/sqlite.d.ts.map +1 -1
  67. package/dist/storage/sqlite.js +1 -1
  68. package/dist/storage/sqlite.js.map +1 -1
  69. package/dist/transports/cli/cli.js +198 -61
  70. package/dist/transports/cli/cli.js.map +1 -1
  71. package/dist/transports/http/server.d.ts.map +1 -1
  72. package/dist/transports/http/server.js +43 -5
  73. package/dist/transports/http/server.js.map +1 -1
  74. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  75. package/dist/transports/mcp/handlers.js +2 -2
  76. package/dist/transports/mcp/handlers.js.map +1 -1
  77. package/dist/transports/schemas.d.ts +8 -0
  78. package/dist/transports/schemas.d.ts.map +1 -1
  79. package/dist/transports/schemas.js +7 -0
  80. package/dist/transports/schemas.js.map +1 -1
  81. package/hooks/hooks.json +10 -0
  82. package/package.json +1 -1
  83. package/scripts/hooks/_generated/guards.js +110 -0
  84. package/scripts/hooks/_generated/sqlite.js +1 -1
  85. package/scripts/hooks/_generated/work-topology.js +11 -2
  86. package/scripts/hooks/_shared.js +77 -4
  87. package/scripts/hooks/guard-check.js +76 -0
  88. package/scripts/hooks/post-commit.js +27 -0
  89. package/scripts/hooks/pre-edit-recall.js +157 -121
  90. package/scripts/hooks/session-start.js +34 -23
  91. package/scripts/hooks/session-summary.js +43 -90
  92. package/skills/memesh/SKILL.md +11 -0
@@ -8,7 +8,7 @@
8
8
  "name": "memesh",
9
9
  "source": "./",
10
10
  "description": "MeMesh — agentic memory for coding agents. Captured from the agent's real work via hooks, recalled when it acts. One SQLite file, zero cloud required.",
11
- "version": "4.6.0",
11
+ "version": "4.6.1",
12
12
  "author": {
13
13
  "name": "PCIRCLE AI"
14
14
  },
@@ -4,7 +4,7 @@
4
4
  "author": {
5
5
  "name": "PCIRCLE AI"
6
6
  },
7
- "version": "4.6.0",
7
+ "version": "4.6.1",
8
8
  "homepage": "https://github.com/PCIRCLE-AI/memesh",
9
9
  "repository": "https://github.com/PCIRCLE-AI/memesh",
10
10
  "license": "MIT",
package/AGENTS.md CHANGED
@@ -52,6 +52,23 @@ host is recallable from all of them. Not installed yet? Follow
52
52
  `observation` parameter removes just that fact and keeps the entity active.
53
53
  Prefer it over archiving the whole entity.
54
54
 
55
+ ## What you must never invent
56
+
57
+ - If MeMesh is unavailable or a recall returns nothing, **say so and work
58
+ without it** — never fabricate a memory, and never cite a `[mem:id]`
59
+ handle that was not actually shown to you. A wrong "remembered" fact is
60
+ worse than no memory: it arrives wearing the authority of the graph.
61
+ - Recall windows are bounded (the `limit` parameter, 30 by default), so do
62
+ not infer graph-wide counts or "there is no memory about X" from the
63
+ number of hits one query returns. Absence of results is absence of
64
+ results, not evidence of absence — vary the wording or narrow by tag
65
+ before concluding anything.
66
+ - Every recall answer carries a `retrieval` block that says how it was
67
+ produced — read it instead of guessing: `truncated: true` means the
68
+ window filled and more may exist; `degraded: true` means semantic search
69
+ is configured but could not run, so you are seeing keyword-only results
70
+ right now (worth telling the user, and `memesh doctor` explains why).
71
+
55
72
  ## What Claude Code already does — do not double-write
56
73
 
57
74
  Under Claude Code with the MeMesh plugin, hooks capture automatically:
@@ -64,6 +81,10 @@ Under Claude Code with the MeMesh plugin, hooks capture automatically:
64
81
  - **Stop** captures session knowledge and turns failures into lessons.
65
82
  - **PreCompact** saves important knowledge before history is compressed.
66
83
  - **UserPromptSubmit** detects "remember this" intent in the prompt.
84
+ - **PreToolUse (Bash)** fires accepted lesson-guards: a fenced warning
85
+ citing the source lesson (`[mem:id]`) when a command matches a mistake
86
+ the graph has recorded. Heed it, and cite the lesson if it changes what
87
+ you do.
67
88
 
68
89
  So under Claude Code: skip step 1 of the loop (the topology is already
69
90
  injected), and do not `remember` commits or session summaries by hand. Manual
package/README.de.md CHANGED
@@ -219,11 +219,11 @@ memesh serve
219
219
  ```
220
220
 
221
221
  <p align="center">
222
- <img src="docs/images/dashboard-search.png" alt="MeMesh Search — find any memory instantly" width="100%" />
222
+ <img src="docs/images/dashboard-search.png" alt="MeMesh — find any memory instantly" width="100%" />
223
223
  </p>
224
224
 
225
225
  <p align="center">
226
- <img src="docs/images/dashboard-analytics.png" alt="MeMesh Analytics — health score, timeline, patterns, knowledge coverage" width="100%" />
226
+ <img src="docs/images/dashboard-analytics.png" alt="MeMesh analytics — health score, timeline, patterns, knowledge coverage" width="100%" />
227
227
  </p>
228
228
 
229
229
  <p align="center">
@@ -342,7 +342,7 @@ Reproduktionsbefehle, Datensatz-SHA256, rohe Ergebnisse pro Frage und Analyse be
342
342
 
343
343
  ## Was läuft in Claude Code automatisch ab
344
344
 
345
- Sie müssen nicht manuell alles speichern. MeMesh verfügt über **6 Hooks**, die Wissen während der Arbeit erfassen und injizieren:
345
+ Sie müssen nicht manuell alles speichern. MeMesh verfügt über **7 Hooks**, die Wissen während der Arbeit erfassen und injizieren:
346
346
 
347
347
  | Wenn | Was MeMesh tut |
348
348
  |------|------------------|
@@ -351,6 +351,7 @@ Sie müssen nicht manuell alles speichern. MeMesh verfügt über **6 Hooks**, di
351
351
  | **Nach jedem `git commit`** | Erfasst Ihre Änderungen mit Diff-Statistiken |
352
352
  | **Wenn Claude stoppt** | Erfasst bearbeitete Dateien und behobene Fehler; generiert automatisch strukturierte Lektionen aus Fehlern |
353
353
  | **Vor Context-Verdichtung** | Speichert Wissen, bevor es durch Context-Limits verloren geht |
354
+ | **Vor riskanten Befehlen und Edits** | Löst die von Ihnen akzeptierten Lektions-Guards aus — eine Warnung genau in dem Moment, in dem sich ein erfasster Fehler wiederholen würde |
354
355
 
355
356
  > **Jederzeit abschalten:** `export MEMESH_AUTO_CAPTURE=false`
356
357
 
@@ -379,17 +380,14 @@ Wenn npm eine installierte Version als veraltet kennzeichnet (typischerweise ein
379
380
 
380
381
  ## Dashboard
381
382
 
382
- 8 Reiter, 11 Sprachen, keine externen Abhängigkeiten. Zugang unter `http://localhost:3737/dashboard` wenn der Server läuft.
383
+ 5 Reiter, 11 Sprachen, keine externen Abhängigkeiten. Zugang unter `http://localhost:3737/dashboard` wenn der Server läuft.
383
384
 
384
385
  | Reiter | Was Sie sehen |
385
386
  |--------|-------------|
386
- | **Insights** | Speicher-Insights wöchentliche Zusammenfassungen und Mustervorschläge der Dreamer-Engine; Ein-Klick-Akzeptieren/Ablehnen |
387
- | **Search** | Volltextsuche + Vektorsimilarität über alle Memories |
388
- | **Browse** | Paginierte Liste aller Entitäten mit Archiv-/Restore-Funktion |
389
- | **Analytics** | Memory Health Score, 30-Tage-Timeline, PM-Velocity + KG-Konnektivitätskennzahlen, Arbeitsmuster, Bereinigungsvorschläge |
387
+ | **Home** | Was memesh für Sie getan hat — Dreamer-Insights zuerst: wöchentliche Zusammenfassungen und Mustervorschläge mit Ein-Klick-Akzeptieren/Ablehnen; die komplette Analyse (Memory Health Score, 30-Tage-Timeline, PM-Velocity + KG-Konnektivität, Arbeitsmuster) liegt in einem bei Bedarf ausklappbaren Bereich |
388
+ | **Memories** | Die ganze Bibliothek hinter einer Oberfläche — Sofortfilter plus Enter für server-gerankte Suche (Volltext + Vektor), Scope-Chips für die Arbeitsebene (Ziele/Entscheidungen/Lektionen/Pläne) vs. Belege vs. alle vs. archiviert, ein Cluster-Kompositionsbalken, aufklappbare Details pro Zeile (Lektionen behalten ihre strukturierte Fehler/Grundursache/Behebung/Prävention-Ansicht), Archivieren/Wiederherstellen inline |
389
+ | **Project** | Die Geschichte eines Projekts die Roadmap-Ansicht (Phasen, Meilensteine, Schlüssellektionen) hinter einem Projektwähler |
390
390
  | **Graph** | Interaktiver kraft-gerichteter Wissensgraph mit Typfiltern, Suche, Ego-Modus, Aktualitäts-Heatmap |
391
- | **Lessons** | Strukturierte Lektionen aus vergangenen Fehlern (Fehler, Grundursache, Behebung, Prävention) |
392
- | **Manage** | Entitäten archivieren und wiederherstellen |
393
391
  | **Settings** | LLM-Provider-Konfiguration, sofortiger Sprachwahlschalter |
394
392
 
395
393
  ---
@@ -422,7 +420,7 @@ Importierte Bundles bleiben durchsuchbar, aber MeMesh injiziert importierte Memo
422
420
  > — **3er-Startup mit gemeinsamer Wissensbasis**
423
421
 
424
422
  > "Das Dashboard zeigte mir, dass 90 % meiner Memories automatisch generierte Session-Logs waren. Ich begann, `remember` bewusst für Architekturentscheidungen zu nutzen. Ein Spielwechsel."
425
- > — **Entwickler, der den Analytics-Reiter entdeckte**
423
+ > — **Entwickler, der das Analytics-Panel entdeckte**
426
424
 
427
425
  ---
428
426
 
@@ -449,10 +447,11 @@ Standardmäßig macht MeMesh reines Keyword-Recall (FTS5) — kein API-Schlüsse
449
447
 
450
448
  ```bash
451
449
  memesh config set embedder.provider openai # or: ollama
452
- memesh config set embedder.model text-embedding-3-small
453
450
  ```
454
451
 
455
- Der Embedder wird **unabhängig vom Chat-LLM** konfiguriert — `llm.provider` zu ändern ändert nie stillschweigend deine Embeddings. Wechselst du zu einer anderen Dimension (z. B. 768 → 1536), baut MeMesh den Vektorindex beim nächsten Schreibvorgang automatisch neu auf. Unterstützte `embedder.provider`-Werte: `ollama` (lokal), `openai` (gehostet). Ohne Einstellung bleibt das Recall bei der Keyword-Suche.
452
+ Der Embedder wird **unabhängig vom Chat-LLM** konfiguriert — `llm.provider` zu ändern ändert nie stillschweigend deine Embeddings. Jeder Anbieter legt sein Modell und seine Dimension selbst fest (`ollama` nomic-embed-text mit 768, `openai` text-embedding-3-small mit 1536); das Modell ist nicht separat wählbar, weil ein Vektorindex auf eine Dimension festgelegt ist und ein zweites Modell Vektoren aus einem anderen Embedding-Raum hineinschreiben würde.
453
+
454
+ Wechselst du zu einer anderen Dimension (z. B. 768 → 1536), wird **nichts gelöscht**. MeMesh behält den bestehenden Index und weist beim Öffnen darauf hin, `memesh reindex` auszuführen: der neue Index wird neben dem alten aufgebaut und erst übernommen, wenn jede Erinnerung einen Vektor hat — ein abgebrochener Neuaufbau kostet dich also nichts und wird an der Abbruchstelle fortgesetzt. In diesem Zeitraum ist die semantische Suche aus und das Recall läuft nur über die Keyword-Suche; `recall` meldet das als `degraded`, statt eine Suche vorzugeben. Unterstützte `embedder.provider`-Werte: `ollama` (lokal), `openai` (gehostet). Ohne Einstellung bleibt das Recall bei der Keyword-Suche.
456
455
 
457
456
  | | Stufe 0 (Standard) | Stufe 1 (Smart Mode) |
458
457
  |---|---|---|
package/README.md CHANGED
@@ -231,11 +231,11 @@ memesh serve
231
231
  ```
232
232
 
233
233
  <p align="center">
234
- <img src="docs/images/dashboard-search.png" alt="MeMesh Search — find any memory instantly" width="100%" />
234
+ <img src="docs/images/dashboard-search.png" alt="MeMesh — find any memory instantly" width="100%" />
235
235
  </p>
236
236
 
237
237
  <p align="center">
238
- <img src="docs/images/dashboard-analytics.png" alt="MeMesh Analytics — health score, timeline, patterns, knowledge coverage" width="100%" />
238
+ <img src="docs/images/dashboard-analytics.png" alt="MeMesh analytics — health score, timeline, patterns, knowledge coverage" width="100%" />
239
239
  </p>
240
240
 
241
241
  <p align="center">
@@ -354,7 +354,7 @@ Re-runnable in ~10 seconds. Full instructions, dataset SHA256, raw per-question
354
354
 
355
355
  ## What Happens Automatically In Claude Code
356
356
 
357
- You don't need to manually remember everything. MeMesh has **6 hooks** that capture and inject knowledge while you work:
357
+ You don't need to manually remember everything. MeMesh has **7 hooks** that capture and inject knowledge while you work:
358
358
 
359
359
  | When | What MeMesh does |
360
360
  |------|------------------|
@@ -364,6 +364,7 @@ You don't need to manually remember everything. MeMesh has **6 hooks** that capt
364
364
  | **After every `git commit`** | Records what you changed, with diff stats |
365
365
  | **When Claude stops** | Captures files edited, errors fixed, and auto-generates structured lessons from failures |
366
366
  | **Before context compaction** | Saves knowledge before it's lost to context limits |
367
+ | **Before risky commands and edits** | Fires the lesson-guards you accepted — a warning at the exact moment a recorded mistake is about to repeat |
367
368
 
368
369
  > **Opt out anytime:** `export MEMESH_AUTO_CAPTURE=false`
369
370
 
@@ -392,17 +393,14 @@ When npm flags an installed version as deprecated (typically a security advisory
392
393
 
393
394
  ## Dashboard
394
395
 
395
- 8 tabs, 11 languages, zero external dependencies. Access at `http://localhost:3737/dashboard` when the server is running.
396
+ 5 tabs, 11 languages, zero external dependencies. Access at `http://localhost:3737/dashboard` when the server is running.
396
397
 
397
398
  | Tab | What you see |
398
399
  |-----|-------------|
399
- | **Insights** | Memory insights — weekly recaps and pattern proposals from the dreamer engine; one-click accept/reject |
400
- | **Search** | Full-text + vector similarity search across all memories |
401
- | **Browse** | Paginated list of all entities with archive/restore |
402
- | **Analytics** | Memory Health Score, 30-day timeline, PM velocity + KG connectivity metrics, work patterns, cleanup suggestions |
400
+ | **Home** | What memesh did for you dreamer insights lead: weekly recaps and pattern proposals with one-click accept/reject; the full analytics stack (Memory Health Score, 30-day timeline, PM velocity + KG connectivity, work patterns) folds into an on-demand expander |
401
+ | **Memories** | The whole library behind one surface — instant filter plus Enter for server-ranked search (full-text + vector), scope chips for the work layer (goals/decisions/lessons/plans) vs evidence vs all vs archived, a cluster composition bar, per-row expandable detail (lessons keep their structured error/root-cause/fix/prevention view), archive/restore inline |
402
+ | **Project** | One project's history the roadmap view (phases, milestones, key lessons) behind a project selector |
403
403
  | **Graph** | Interactive force-directed knowledge graph with type filters, search, ego mode, recency heatmap |
404
- | **Lessons** | Structured lessons from past failures (error, root cause, fix, prevention) |
405
- | **Manage** | Archive and restore entities |
406
404
  | **Settings** | LLM provider config, instant language selector |
407
405
 
408
406
  ---
@@ -435,7 +433,7 @@ Imported bundles stay searchable, but MeMesh does not auto-inject imported memor
435
433
  > — **3-person startup, shared knowledge base**
436
434
 
437
435
  > "The dashboard showed me that 90% of my memories were auto-generated session logs. I started using `remember` deliberately for architecture decisions. Game changer."
438
- > — **Developer who discovered the Analytics tab**
436
+ > — **Developer who discovered the analytics panel**
439
437
 
440
438
  ---
441
439
 
@@ -514,13 +512,13 @@ By default MeMesh does **keyword-only** recall (FTS5) — no API key, no model d
514
512
 
515
513
  ```bash
516
514
  memesh config set embedder.provider ollama # local, needs `ollama serve`
517
- memesh config set embedder.model nomic-embed-text
518
515
  # or, for a hosted embedder:
519
516
  memesh config set embedder.provider openai
520
- memesh config set embedder.model text-embedding-3-small
521
517
  ```
522
518
 
523
- 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.
519
+ The embedder is configured **independently of the chat LLM** — changing `llm.provider` never silently changes your embeddings. Each provider pins its own model and width (`ollama` nomic-embed-text at 768, `openai` text-embedding-3-small at 1536); the model is not separately selectable, because a vector index is fixed at one width and a second model would put vectors from a different embedding space into it.
520
+
521
+ If you switch to an embedder with a different dimension (e.g. 768 → 1536), **nothing is deleted**. MeMesh keeps the existing index and tells you on open to run `memesh reindex`, which builds the new index beside the old one and switches over only once every memory has a vector — so an interrupted rebuild costs you nothing and resumes where it stopped. During that window semantic search is off and recall runs on keyword search alone; `recall` reports this as `degraded` rather than implying it searched. Supported `embedder.provider` values: `ollama` (local), `openai` (hosted). With none set, recall stays on keyword search.
524
522
 
525
523
  | | Level 0 (default) | Level 1 (Smart Mode) |
526
524
  |---|---|---|
package/README.zh-TW.md CHANGED
@@ -227,11 +227,11 @@ memesh serve
227
227
  ```
228
228
 
229
229
  <p align="center">
230
- <img src="docs/images/dashboard-search.png" alt="MeMesh 搜尋 — 瞬間找到任何記憶" width="100%" />
230
+ <img src="docs/images/dashboard-search.png" alt="MeMesh — 瞬間找到任何記憶" width="100%" />
231
231
  </p>
232
232
 
233
233
  <p align="center">
234
- <img src="docs/images/dashboard-analytics.png" alt="MeMesh 分析 — 健康分數、時間線、模式、知識涵蓋範圍" width="100%" />
234
+ <img src="docs/images/dashboard-analytics.png" alt="MeMesh 分析面板 — 健康分數、時間線、模式、知識涵蓋範圍" width="100%" />
235
235
  </p>
236
236
 
237
237
  <p align="center">
@@ -350,7 +350,7 @@ MeMesh 的檢索引擎**只用 FTS5**(熱路徑上不使用 LLM、不使用嵌
350
350
 
351
351
  ## Claude Code 自動進行的事情
352
352
 
353
- 你不需要手動記住所有事情。MeMesh 有 **6 個 hooks**,會在你工作時自動擷取與注入知識:
353
+ 你不需要手動記住所有事情。MeMesh 有 **7 個 hooks**,會在你工作時自動擷取與注入知識:
354
354
 
355
355
  | 何時 | MeMesh 做什麼 |
356
356
  |------|------------------|
@@ -360,6 +360,7 @@ MeMesh 的檢索引擎**只用 FTS5**(熱路徑上不使用 LLM、不使用嵌
360
360
  | **每次 `git commit` 之後** | 記錄你的變更,包含 diff 統計 |
361
361
  | **Claude 停止時** | 擷取已編輯的檔案、已修復的錯誤,並從失敗自動產生結構化教訓 |
362
362
  | **上下文壓縮前** | 在知識被上下文限制丟掉之前先保存 |
363
+ | **危險指令與編輯前** | 觸發你接受過的教訓守衛——在記錄過的錯誤即將重演的那一刻發出警告 |
363
364
 
364
365
  > **隨時退出:** `export MEMESH_AUTO_CAPTURE=false`
365
366
 
@@ -388,17 +389,14 @@ MeMesh 的檢索引擎**只用 FTS5**(熱路徑上不使用 LLM、不使用嵌
388
389
 
389
390
  ## 儀表板
390
391
 
391
- 8 個分頁、11 種語言、零外部相依性。伺服器執行時可在 `http://localhost:3737/dashboard` 存取。
392
+ 5 個分頁、11 種語言、零外部相依性。伺服器執行時可在 `http://localhost:3737/dashboard` 存取。
392
393
 
393
394
  | 分頁 | 你會看到 |
394
395
  |-----|-------------|
395
- | **Insights** | 記憶洞察來自 dreamer 引擎的每週摘要和模式提案;一鍵接受/拒絕 |
396
- | **Search** | 全文 + 向量相似度搜尋所有記憶 |
397
- | **Browse** | 所有實體的分頁列表,可以歸檔/復原 |
398
- | **Analytics** | 記憶健康分數、30 天時間線、PM 速度 + KG 連通性指標、工作模式、清理建議 |
396
+ | **Home** | memesh 為你做了什麼 dreamer 洞察開場:每週摘要和模式提案,一鍵接受/拒絕;完整的分析內容(記憶健康分數、30 天時間線、PM 速度 + KG 連通性、工作模式)收在可展開的區塊裡,需要時再打開 |
397
+ | **Memories** | 整座記憶庫集中在同一個介面 — 即時過濾,按 Enter 由伺服器排名搜尋(全文 + 向量);範圍籤在工作層(目標/決策/教訓/計畫)、佐證、全部、已歸檔之間切換;叢集組成長條;每列可展開細節(教訓保留結構化的錯誤/根本原因/修復/預防檢視);歸檔/復原直接在列上操作 |
398
+ | **Project** | 單一專案的歷史 — 透過專案選擇器檢視路線圖(階段、里程碑、關鍵教訓) |
399
399
  | **Graph** | 互動式力導向知識圖,具有類型篩選、搜尋、自我中心模式、近期熱力圖 |
400
- | **Lessons** | 來自過去失敗的結構化教訓(錯誤、根本原因、修復、預防) |
401
- | **Manage** | 歸檔和復原實體 |
402
400
  | **Settings** | LLM 供應商設定、即時語言選擇器 |
403
401
 
404
402
  ---
@@ -431,7 +429,7 @@ MeMesh 的檢索引擎**只用 FTS5**(熱路徑上不使用 LLM、不使用嵌
431
429
  > — **3 人新創公司,共享知識庫**
432
430
 
433
431
  > 「儀表板顯示我 90% 的記憶是自動生成的對話日誌。我開始有意使用 `remember` 來記錄架構決策。改變了遊戲規則。」
434
- > — **發現分析分頁的開發者**
432
+ > — **發現分析面板的開發者**
435
433
 
436
434
  ---
437
435
 
@@ -458,10 +456,11 @@ memesh serve # 開啟儀表板 → Settings 分頁
458
456
 
459
457
  ```bash
460
458
  memesh config set embedder.provider openai # or: ollama
461
- memesh config set embedder.model text-embedding-3-small
462
459
  ```
463
460
 
464
- 嵌入器**獨立於對話 LLM** 設定 —— 更改 `llm.provider` 絕不會悄悄改變你的嵌入。如果切換到不同維度( 768 → 1536),MeMesh 會在下次寫入時自動重建向量索引。支援的 `embedder.provider` 取值:`ollama`(本地)、`openai`(託管)。兩者都不設定時,召回保持關鍵字搜尋。
461
+ 嵌入器**獨立於對話 LLM** 設定 —— 更改 `llm.provider` 絕不會悄悄改變你的嵌入。每個 provider 自己固定模型與維度(`ollama` → nomic-embed-text 768 維、`openai` text-embedding-3-small 1536 );模型不另外提供選項,因為一個向量索引的維度是固定的,換第二個模型會把另一個嵌入空間的向量寫進同一個索引。
462
+
463
+ 如果切換到不同維度(如 768 → 1536),**不會刪掉任何東西**。MeMesh 保留現有索引,並在開啟時提示你執行 `memesh reindex`:新索引會建在舊索引旁邊,等到每一筆記憶都有向量才切換過去 —— 所以重建中途被打斷不會損失任何東西,下次會從斷點繼續。這段期間語意搜尋是關閉的,召回只走關鍵字搜尋;`recall` 會回報 `degraded`,不會假裝搜過了。支援的 `embedder.provider` 取值:`ollama`(本地)、`openai`(託管)。兩者都不設定時,召回保持關鍵字搜尋。
465
464
 
466
465
  | | 等級 0(預設) | 等級 1(智慧模式) |
467
466
  |---|---|---|