@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.th.md DELETED
@@ -1,460 +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>หน่วยความจำภายในเครื่องสำหรับ Claude Code และเอเจนต์ MCP</strong><br />
7
- ไฟล์ SQLite เพียงตัวเดียว ไม่ต้อง Docker ไม่ต้องบริการบนคลาวด์
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
- > **โปรเจกต์อยู่ระหว่างพัฒนาอย่างต่อเนื่อง** — ฟีเจอร์มีการอัปเดตอย่างต่อเนื่องและอาจเปลี่ยนแปลงระหว่างเวอร์ชัน หากพบบักหรือมีคำขอฟีเจอร์ กรุณา[เปิด issue](https://github.com/PCIRCLE-AI/memesh-llm-memory/issues)
21
-
22
- ## ปัญหา
23
-
24
- เอเจนต์คิดโค้ดลืมสิ่งที่เกิดขึ้นระหว่างเซสชัน ทุกการตัดสินใจด้านสถาปัตยกรรม การแก้บั๊ก การทดสอบที่ล้มเหลว และบทเรียนที่ยากที่สุดต้องอธิบายซ้ำ Claude Code เริ่มต้นใหม่ ค้นพบข้อจำกัดเดิม และใช้ context ไปกับสิ่งที่น่าจะรู้อยู่แล้ว
25
-
26
- **MeMesh ให้หน่วยความจำภายในเครื่องที่ยั่งยืน ค้นหาได้ และวิวัฒนาได้สำหรับเอเจนต์คิดโค้ด**
27
-
28
- แพคเกจนี้เป็นชั้นหน่วยความจำภายในของผลิตภัณฑ์ MeMesh ออกแบบให้เล็กและเปิดต้นฉบับ ติดตั้งด้วย npm เก็บหน่วยความจำในไฟล์ `~/.memesh/knowledge-graph.db` และเชื่อมต่อกับ Claude Code หรือไคลเอนต์ที่รองรับ MCP ผลิตภัณฑ์เวิร์กสเปซบนคลาวด์และระบบปฏิบัติการขององค์กรควรแยกออกจาก README และแผนพัฒนาของแพคเกจนี้
29
-
30
- ---
31
-
32
- ## หลักฐาน — 95.60% R@5 บน LongMemEval-S
33
-
34
- เครื่องมือเรียกคืนของ MeMesh ใช้ **FTS5 เพียงอย่างเดียว** (ไม่มี LLM ไม่มี embedding บนเส้นทางหลัก) วัดผลด้วยเบนช์มาร์กสาธารณะ [LongMemEval-S](https://huggingface.co/datasets/xiaowu0162/longmemeval) (500 คำถาม สัญญาอนุญาต MIT):
35
-
36
- | ระบบ | R@5 | ที่มา |
37
- |---|---|---|
38
- | **MeMesh (Mode A, via `recallEnhanced()`)** | **95.60%** | [benchmarks/longmemeval/RESULTS.md](benchmarks/longmemeval/RESULTS.md) |
39
- | MemPalace | 96.6% | รายงานของผู้พัฒนาเอง |
40
- | Supermemory | ~82% | ประมาณการของผู้พัฒนา |
41
- | Zep | 63.8% | เปเปอร์ LongMemEval |
42
- | Mem0 | 49.0% | เปเปอร์ LongMemEval |
43
-
44
- คำสั่งสำหรับทำซ้ำ SHA256 ของชุดข้อมูล ผลดิบรายคำถาม และการวิเคราะห์ความล้มเหลวที่รู้จัก ทั้งหมดอยู่ใน [`benchmarks/longmemeval/`](benchmarks/longmemeval/) รันซ้ำได้ใน ~10 วินาที
45
-
46
- ---
47
-
48
- ## ภาพรวมเส้นทางการติดตั้ง
49
-
50
- MeMesh มี **เส้นทางการติดตั้งสองเส้นที่อยู่ร่วมกันได้** ผู้ใช้ส่วนใหญ่ต้องการทั้งคู่ ทั้งสองเขียนลงใน **ฐานข้อมูลความจำเดียวกัน** (`~/.memesh/knowledge-graph.db`) ดังนั้นความจำที่บันทึกในแชท Claude Code จะปรากฏใน shell และในทางกลับกัน
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
- **คุณต้องการเส้นทางไหน?**
80
-
81
- | สิ่งที่คุณต้องการทำ | เส้นทางการติดตั้ง |
82
- |---|---|
83
- | ใช้ skill `/memesh` ในการสนทนา Claude Code | Path A (plugin) |
84
- | Auto-capture ใน Claude Code (session → บทเรียน → recall ครั้งถัดไป) | Path A (plugin) |
85
- | รัน `memesh remember` / `memesh recall` / `memesh doctor` ใน terminal | Path B (npm-global) |
86
- | เปิด dashboard ผ่าน `memesh serve` (ไม่มีดีเลย์ของ `npx`) | Path B (npm-global) |
87
- | เสียบ `memesh-mcp` เข้ากับ Cursor, Cline หรือ MCP client อื่น | Path B (npm-global) |
88
- | ทั้งหมดข้างต้น | **ติดตั้งทั้งสอง** — ไม่ขัดแย้งกัน |
89
-
90
- > **ความเข้าใจผิดที่พบบ่อย**: plugin ของ Claude Code **ไม่** ใส่ `memesh` ลงใน `PATH` ของ shell ถ้าคุณรันแค่ `/plugin install` แล้วพิมพ์ `memesh reindex` ใน terminal คุณจะเห็น `command not found` — เป็นเรื่องปกติ ต้องเพิ่ม `npm install -g @pcircle/memesh` ด้วย เพื่อใช้คำสั่งใน shell
91
-
92
- ### ⚠️ การติดตั้ง plugin ไม่ได้ติดตั้ง CLI
93
-
94
- นี่คือความสับสนที่พบบ่อยที่สุด อ่านครั้งเดียวจะประหยัดเวลาในอนาคต:
95
-
96
- - `/plugin install memesh@pcircle-memesh` จากภายใน Claude Code → ติดตั้ง **เฉพาะ Path A**ให้ MCP tools, hooks, skill `/memesh`**ไม่ได้** ใส่ `memesh` ลงใน `PATH` ของ shell
97
- - `memesh reindex` / `memesh update` / `memesh doctor` ใน terminal → ต้องใช้ **Path B** (npm-global) ถ้าไม่มี: `zsh: command not found: memesh`
98
- - **การติดตั้งที่แนะนำสำหรับผู้ใช้ Claude Code**: **ติดตั้งทั้งสอง** อยู่ร่วมกัน ใช้ DB เดียวกัน ไม่ขัดแย้งกัน
99
-
100
- ```bash
101
- # หลังจาก /plugin install ... ให้รันคำสั่งนี้ด้วย:
102
- npm install -g @pcircle/memesh
103
- ```
104
-
105
- ถ้าคุณใช้ memesh ผ่านแชท Claude Code เท่านั้น (ไม่เคยพิมพ์ `memesh` ใน terminal), Path A อย่างเดียวก็พอ คนอื่นๆ ให้ติดตั้งทั้งสอง
106
-
107
- ---
108
-
109
- ## เริ่มต้นใน 60 วินาที
110
-
111
- ### ตัวเลือก A — Claude Code plugin (ติดตั้งด้วยบรรทัดเดียว)
112
-
113
- ถ้าใช้ Claude Code ติดตั้ง MeMesh เป็น plugin จากใน CLI ได้เลย:
114
-
115
- ```
116
- /plugin marketplace add PCIRCLE-AI/memesh-llm-memory
117
- /plugin install memesh@pcircle-memesh
118
- ```
119
-
120
- Claude Code จะเชื่อม hooks, skills และ MCP server ให้อัตโนมัติ คุณจะได้ auto-capture ในระหว่าง session, การเรียกคืนแบบเชิงรุก, `/memesh` skill (remember / recall / learn / forget) ในบทสนทนา Claude Code และเครื่องมือ `remember` / `recall` / `forget` / `learn` แบบ MCP สำหรับเอเจนต์ — โดยไม่ต้องลง global หรือสั่ง build เพิ่ม
121
-
122
- ### ตัวเลือก B — npm global (ตัวเลือกเสริม)
123
-
124
- ถ้าต้องการ binary บน shell `PATH` (เพื่อให้ `memesh`, `memesh-mcp` ฯลฯ ใช้ได้ใน terminal ใดก็ได้โดยไม่ต้องผ่าน `npx`) หรือต้องการเปิด `memesh-mcp` ให้ MCP client อื่น (Cursor, Cline, terminal-only flows):
125
-
126
- ```bash
127
- npm install -g @pcircle/memesh
128
- ```
129
-
130
- ### ขั้นตอนที่ 1.5: เชื่อม MeMesh เข้ากับ Claude Code (เฉพาะเส้นทาง npm)
131
-
132
- ถ้าติดตั้งผ่าน **ตัวเลือก A** (`/plugin install memesh@pcircle-memesh`) ข้ามขั้นนี้ไปได้ — Claude Code เชื่อม plugin hooks ให้แล้ว
133
-
134
- ถ้าติดตั้งผ่าน **ตัวเลือก B** (`npm install -g`) CLI อยู่บน PATH และ MCP server ลงทะเบียนแล้ว แต่ session hooks ของ Claude Code **ไม่ได้** เชื่อมอัตโนมัติ ถ้าไม่มี hooks เหล่านี้ คุณยังใช้ `memesh remember` / `recall` แบบ manual ได้ แต่**วงรอบจับข้อมูลอัตโนมัติ** (session → บทเรียน → เรียกคืนเชิงรุกใน session ถัดไป) จะเงียบ
135
-
136
- ```bash
137
- memesh install-hooks # เพิ่ม hooks ของ memesh ลงใน ~/.claude/settings.json
138
- memesh doctor # ยืนยันว่า "Hooks wired into Claude Code" PASS
139
- ```
140
-
141
- Hooks เหล่านี้อยู่ร่วมกับ custom hooks ที่คุณมีใน `~/.claude/hooks/` — `install-hooks` เขียนแบบเพิ่ม ไม่เขียนทับของคุณ หากต้องการลบ: `memesh uninstall-hooks`
142
-
143
- ### ขั้นตอนที่ 2: เก็บการตัดสินใจ
144
-
145
- ```bash
146
- memesh remember "Use OAuth 2.0 with PKCE for the new auth"
147
- ```
148
-
149
- หรือใช้รูปแบบชัดเจนเมื่อต้องการชื่อและชนิดที่คงที่สำหรับกรองภายหลัง:
150
-
151
- ```bash
152
- memesh remember --name "auth-decision" --type "decision" --obs "Use OAuth 2.0 with PKCE"
153
- ```
154
-
155
- ### ขั้นตอนที่ 3: เรียกใช้ภายหลัง
156
-
157
- ```bash
158
- memesh recall "login security"
159
- # → Finds "OAuth 2.0 with PKCE" even though you searched different words
160
- ```
161
-
162
- **เพียงเท่านี้** MeMesh จำและเรียกคืนข้อมูลข้ามเซสชันได้แล้ว
163
-
164
- หากต้องการตรวจสอบการติดตั้งและเส้นทางการเชื่อมต่อภายในตั้งแต่ต้นจนจบ:
165
-
166
- ```bash
167
- memesh doctor
168
- ```
169
-
170
- เปิดแดชบอร์ดเพื่อสำรวจหน่วยความจำ:
171
-
172
- ```bash
173
- memesh serve
174
- ```
175
-
176
- <p align="center">
177
- <img src="docs/images/dashboard-search.png" alt="MeMesh Search — find any memory instantly" width="100%" />
178
- </p>
179
-
180
- <p align="center">
181
- <img src="docs/images/dashboard-analytics.png" alt="MeMesh Analytics — health score, timeline, patterns, knowledge coverage" width="100%" />
182
- </p>
183
-
184
- <p align="center">
185
- <img src="docs/images/dashboard-graph.png" alt="MeMesh Graph — interactive knowledge graph with type filters and ego mode" width="100%" />
186
- </p>
187
-
188
- ---
189
-
190
- ## สำหรับใครบ้าง
191
-
192
- | ถ้าคุณเป็น... | MeMesh ช่วยคุณ... |
193
- |---|---|
194
- | **นักพัฒนาที่ใช้ Claude Code** | เรียกคืนการตัดสินใจโครงการ บทเรียนเฉพาะไฟล์ และความล้มเหลวที่ผ่านมาโดยอัตโนมัติขณะทำงาน |
195
- | **ผู้ใช้เอเจนต์คิดโค้ดขั้นสูง** | ใช้ชั้นหน่วยความจำภายในตัวเดียวร่วมกันบนเครื่องมือที่รองรับ MCP |
196
- | **ทีมทดลองเวิร์กโฟลว์คิดโค้ด AI** | ส่งออก/นำเข้าความรู้โครงการโดยไม่ต้องสถาปัตยกรรมบนคลาวด์ |
197
- | **นักพัฒนาเอเจนต์** | เพิ่มหน่วยความจำภายในผ่าน MCP HTTP หรือ CLI |
198
-
199
- ---
200
-
201
- ## ออกแบบสำหรับเอเจนต์คิดโค้ดตั้งแต่แรก
202
-
203
- <table>
204
- <tr>
205
- <td width="33%" align="center">
206
-
207
- **Claude Code / Desktop**
208
- ```bash
209
- memesh-mcp
210
- ```
211
- เครื่องมือ MCP + hook Claude Code
212
-
213
- </td>
214
- <td width="33%" align="center">
215
-
216
- **ไคลเอนต์ HTTP ใด ๆ**
217
- ```bash
218
- curl localhost:3737/v1/recall \
219
- -H "Content-Type: application/json" \
220
- -d '{"query":"auth"}'
221
- ```
222
- `memesh serve` (REST API)
223
-
224
- </td>
225
- <td width="33%" align="center">
226
-
227
- **LLM ใด ๆ (รูปแบบ OpenAI)**
228
- ```bash
229
- memesh export-schema \
230
- --format openai
231
- ```
232
- วางเครื่องมือในการเรียก API ใด ๆ
233
-
234
- </td>
235
- </tr>
236
- </table>
237
-
238
- ---
239
-
240
- ## ทำไมไม่ใช้ OpenMemory Cursor Memories Mem0 หรือ Zep
241
-
242
- | | **MeMesh** | OpenMemory | Cursor Memories | Mem0 | Zep / Graphiti |
243
- |---|---|---|---|---|---|
244
- | **เหมาะสมสุด** | หน่วยความจำภายในสำหรับเอเจนต์คิดโค้ด | หน่วยความจำ MCP ข้ามไคลเอนต์ | หน่วยความจำโครงการ Cursor | หน่วยความจำแอปพลิเคชัน/เอเจนต์ที่มีการจัดการ | กราฟความรู้ชั่วคราว |
245
- | **รูปแบบการติดตั้ง** | `npm install -g @pcircle/memesh` | ไหลของแอปพลิเคชัน/เซิร์ฟเวอร์ภายใน | สร้างเข้า Cursor | Cloud API / SDK / MCP | การตั้งค่าบริการ/เฟรมเวิร์ก |
246
- | **ที่เก็บข้อมูล** | ไฟล์ SQLite ภายในตัวเดียว | สแต็คหน่วยความจำภายใน | กฎ/หน่วยความจำที่จัดการโดย Cursor | สแต็กบนคลาวด์หรือโครงการของตนเอง | ฐานข้อมูลกราฟ |
247
- | **ต้องใช้คลาวด์** | ไม่ | ไม่สำหรับโหมดภายใน | ขึ้นอยู่กับการตั้งค่าบัญชี/หน่วยความจำ Cursor | ใช่สำหรับแพลตฟอร์ม | บ่อยครั้งใช่/โครงการของตนเอง |
248
- | **hook Claude Code** | ระดับแรก | เครื่องมือ MCP | ไม่ | เครื่องมือ MCP | ไม่เฉพาะ Claude Code |
249
- | **แดชบอร์ด** | สร้างเข้า | สร้างเข้า | การตั้งค่า Cursor | แดชบอร์ดแพลตฟอร์ม | เครื่องมือแพลตฟอร์ม/กราฟ |
250
- | **การสลับกัน** | ชั้นภายในที่เรียบง่าย ไม่ใช่ขนาดองค์กร | ขอบเขตแอปพลิเคชันภายในที่กว้างขึ้น | ล็อคอยู่กับ Cursor | แพลตฟอร์มที่มีการจัดการแข็งแกร่ง ลดความเป็นท้องถิ่น | โมเดลกราฟแข็งแกร่ง การตั้งค่าที่หนัก |
251
-
252
- **MeMesh เปลี่ยนโครงสร้างพื้นฐาน Enterprise Scale ที่มีการจัดการเป็นการตั้งค่าภายในแบบทันที ที่เก็บข้อมูลที่ตรวจสอบได้ และ hook เวิร์กโฟลว์เอเจนต์คิดโค้ด**
253
-
254
- ---
255
-
256
- ## สิ่งที่เกิดขึ้นโดยอัตโนมัติใน Claude Code
257
-
258
- ไม่ต้องจำข้อมูลทุกอย่างด้วยตนเอง MeMesh มี **6 hook** ที่บันทึกและแทรกความรู้ขณะทำงาน:
259
-
260
- | เมื่อ | MeMesh ทำอะไร |
261
- |---|---|
262
- | **เริ่มเซสชันทุกครั้ง** | โหลดหน่วยความจำที่เกี่ยวข้องมากที่สุด + คำเตือนจากบทเรียนที่ผ่านมา + แบนเนอร์การ orchestrate เอเจนต์ |
263
- | **ก่อนแก้ไขไฟล์** | เรียกคืนหน่วยความจำที่เชื่อมโยงกับไฟล์หรือโครงการก่อนที่ Claude เขียนโค้ด |
264
- | **เมื่อคุณขอให้จำ** | ตรวจจับความตั้งใจ "remember this" / "記下來" และเตือน Claude ให้เขียนแบบสองทาง (memesh + MEMORY.md) |
265
- | **หลังทุก `git commit`** | บันทึกสิ่งที่เปลี่ยนแปลง พร้อมสถิติ diff |
266
- | **เมื่อ Claude หยุด** | บันทึกไฟล์ที่แก้ไข บั๊กที่แก้ไข และสร้างบทเรียนโครงสร้างจากความล้มเหลวโดยอัตโนมัติ |
267
- | **ก่อนการบีบอัด context** | บันทึกความรู้ก่อนที่จะหายไปจากขีดจำกัด context |
268
-
269
- > **ปิด ได้ตลอดเวลา:** `export MEMESH_AUTO_CAPTURE=false`
270
-
271
- ---
272
-
273
- ## การตั้งค่า
274
-
275
- การตั้งค่าทั้งหมดทำผ่านตัวแปรสภาพแวดล้อม ค่าเริ่มต้นทำงานภายในเครื่องล้วน ๆ และไม่มีเครือข่าย — ไม่ต้องตั้งค่าอะไรเพื่อให้ระบบใช้งานได้
276
-
277
- | ตัวแปร | ค่าเริ่มต้น | ทำอะไร |
278
- |---|---|---|
279
- | `MEMESH_DB_PATH` | `~/.memesh/knowledge-graph.db` | เปลี่ยนตำแหน่งฐานข้อมูล SQLite |
280
- | `MEMESH_AUTO_CAPTURE` | `true` | ปิดการใช้ hook จับข้อมูลอัตโนมัติทั้งหมด (`Stop`, `PreCompact`) |
281
- | `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` |
282
- | `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 ยังต้องทำมือเพื่อหลีกเลี่ยงการเปลี่ยนพฤติกรรมเงียบ ๆ |
283
- | `OPENAI_API_KEY` | ไม่ได้ตั้งค่า | คีย์ OpenAI ของคุณ ใช้โดยอัตโนมัติสำหรับฟีเจอร์ LLM เว้นแต่คุณจะตั้ง `MEMESH_AUTO_DETECT_LLM=0` หรือกำหนดผู้ให้บริการอย่างชัดเจน |
284
- | `OLLAMA_HOST` | `http://localhost:11434` | เปลี่ยนปลายทาง Ollama เมื่อใช้ผู้ให้บริการ Ollama ภายในเครื่อง |
285
-
286
- `memesh doctor` พิมพ์การตั้งค่าที่ resolve แล้วเพื่อให้คุณเห็นว่าอะไรทำงานอยู่
287
-
288
- **ผู้ให้บริการ LLM สำรอง (Smart Mode)** ใน **Settings → “Fallback providers”** ของ dashboard คุณตั้งลูกโซ่ failover ตามลำดับได้ — เมื่อผู้ให้บริการหลักล่ม memesh จะลองตัวถัดไปในรายการตามลำดับ เพิ่มตัวสำรองแบบโลคัล [Ollama](https://ollama.com) หรือแบบคลาวด์ (OpenAI / Anthropic ต้องมี API key) ก็ได้ ข้อแลกเปลี่ยนด้านความเป็นส่วนตัว: เมื่อใช้ตัวสำรองแบบคลาวด์ ข้อความในหน่วยความจำ (ซึ่งอาจเป็นข้อมูลส่วนตัว) จะถูกส่งไปยังผู้ให้บริการนั้น จึงสำคัญถ้าคุณรันแบบโลคัลล้วนเพื่อความเป็นส่วนตัว
289
-
290
- เมื่อ npm ระบุว่าเวอร์ชันที่ติดตั้งถูก deprecate (โดยทั่วไปคือ security advisory) เซสชันถัดไปจะแสดงแบนเนอร์ `⚠️ MeMesh <ver> is DEPRECATED` แบบหนักนำหน้า และ `memesh update-status` จะแสดงบรรทัดเดียวกันจนกว่าคุณจะอัปเกรด การตรวจสอบถูก cache ที่ `~/.memesh/update-check.<version>.json` เพื่อไม่ให้ความล้มเหลวเครือข่ายชั่วคราวลดความสว่างของคำเตือน
291
-
292
- ---
293
-
294
- ## แดชบอร์ด
295
-
296
- 8 แท็บ 11 ภาษา ไม่มีการพึ่งพิ่นภายนอก เข้าถึงได้ที่ `http://localhost:3737/dashboard` เมื่อเซิร์ฟเวอร์ทำงาน
297
-
298
- | แท็บ | เห็นอะไร |
299
- |---|---|
300
- | **Insights** | ข้อมูลเชิงลึกเกี่ยวกับหน่วยความจำ — บทสรุปรายสัปดาห์และข้อเสนอรูปแบบจากเครื่องมือ dreamer; ยอมรับ/ปฏิเสธด้วยคลิกเดียว |
301
- | **Search** | ค้นหาข้อความแบบเต็มรูป + ความคล้ายคลึงเวกเตอร์ข้ามหน่วยความจำทั้งหมด |
302
- | **Browse** | รายการหน่วยความจำทั้งหมดแบบหน้าต่อหน้า พร้อมเก็บ/คืนสถานะ |
303
- | **Analytics** | Memory Health Score ไทม์ไลน์ 30 วัน ความเร็ว PM + ตัวชี้วัดการเชื่อมต่อ KG รูปแบบการทำงาน คำแนะนำการทำความสะอาด |
304
- | **Graph** | กราฟความรู้แบบโต้ตอบด้วยแรงโดยตรง พร้อมตัวกรองประเภท ค้นหา โหมด ego แผนความร้อนความเสมียน |
305
- | **Lessons** | บทเรียนโครงสร้างจากความล้มเหลวที่ผ่านมา (ข้อผิดพลาด สาเหตุ การแก้ไข การป้องกัน) |
306
- | **Manage** | เก็บและคืนสถานะอักษร |
307
- | **Settings** | การตั้งค่าผู้ให้บริการ LLM ตัวเลือกภาษาแบบทันที |
308
-
309
- ---
310
-
311
- ## คุณสมบัติอัจฉริยะ
312
-
313
- **🧠 ค้นหาอัจฉริยะ** — ค้นหา "login security" และค้นหาหน่วยความจำเกี่ยวกับ "OAuth PKCE" MeMesh ใช้ FTS5 + sqlite-vec บนเส้นทางหลัก โดยไม่ใช้ LLM ส่วนเสริมเวกเตอร์ยังเข้าถึงถ้อยคำที่เกี่ยวข้องได้
314
-
315
- **🌏 ค้นหาในภาษาที่ไม่เว้นวรรคระหว่างคำ** — ภาษาจีน ญี่ปุ่น เกาหลี ไทย ลาว เขมร และคาตากานะครึ่งความกว้าง จะถูกทำดัชนีเป็นคู่อักขระที่ต่อเนื่องกัน ดังนั้นความทรงจำที่บันทึกว่า "สำรองข้อมูลก่อนย้ายฐานข้อมูล" จึงค้นเจอได้ด้วยคำว่า "สำรอง" ไม่ต้องพิมพ์ข้อความเต็มให้ตรงทุกตัวอักษร ข้อความจะถูกทำให้เป็นรูปแบบมาตรฐาน (NFC) ทั้งตอนบันทึกและตอนค้นหา ความทรงจำที่พิมพ์บน macOS หรือด้วย IME ภาษาเกาหลีหรือเวียดนามจึงค้นเจอได้ทั้งสองรูปแบบ
316
-
317
- **📊 การจัดอันดับแบบให้คะแนน** — ผลลัพธ์อันดับตามความเกี่ยวข้อง (30%) + ความเพิ่งพ้อง (25%) + ความถี่ (18%) + ความมั่นใจ (17%) + ผลกระทบการเรียกคืน (10%)
318
-
319
- **🔄 วิวัฒนาการของความรู้** — การตัดสินใจเปลี่ยนแปลง `forget` เก็บหน่วยความจำเก่า (ไม่เคยลบ) `supersedes` ความสัมพันธ์เชื่อมโยงเก่า → ใหม่ AI เห็นรุ่นล่าสุดเสมอ
320
-
321
- **⚠️ การตรวจจับความขัดแย้ง** — ถ้าคุณมีหน่วยความจำสองอันที่ขัดแย้งกัน MeMesh เตือนคุณ
322
-
323
- **🕸️ การเชื่อมต่อกราฟความรู้** — `memesh kg backfill-relations --all-rules` เชื่อมโยงเอนทิตีกำพร้าโดยใช้การร่วมเกิดของแท็ก การจัดกลุ่มโครงการ บริบทเซสชัน และความคล้ายคลึงของชื่อ — ไม่ต้องใช้ LLM
324
-
325
- **📦 การแบ่งปันทีม** — `memesh export > team-knowledge.json` → แบ่งปันกับทีม → `memesh import team-knowledge.json`
326
- บันเดิลนำเข้าสามารถค้นหาได้ แต่ MeMesh ไม่ได้แทรกหน่วยความจำนำเข้าโดยอัตโนมัติลงใน hook Claude จนกว่าคุณจะตรวจสอบหรือเก็บเป็นท้องถิ่นอีกครั้ง
327
-
328
- ---
329
-
330
- ## ตัวอย่างการใช้งาน
331
-
332
- > "MeMesh จำได้ว่าเราเลือก PKCE แทน implicit flow เมื่อสามสัปดาห์ที่แล้ว เมื่อฉันถามคำถาม Claude เกี่ยวกับการตรวจสอบสิทธิ์อีกครั้ง มันรู้อยู่แล้ว ไม่ต้องอธิบายใหม่"
333
- > — **นักพัฒนาคนเดียว สร้าง SaaS**
334
-
335
- > "เราส่งออกหน่วยความจำของทีมทุกวันศุกร์และนำเข้าจันทร์ Claude ของทุกคนเริ่มสัปดาห์รู้ว่าทีมเรียนรู้อะไรสัปดาห์ที่แล้ว"
336
- > — **เริ่มต้นขนาด 3 คน ฐานความรู้ร่วมกัน**
337
-
338
- > "แดชบอร์ดแสดงให้เห็นว่า 90% ของหน่วยความจำของฉันเป็นบันทึกเซสชันที่สร้างอัตโนมัติ ฉันเริ่มใช้ `remember` อย่างตั้งใจสำหรับการตัดสินใจด้านสถาปัตยกรรม เปลี่ยนเกม"
339
- > — **นักพัฒนาที่ค้นพบแท็บ Analytics**
340
-
341
- ---
342
-
343
- ## ปลดล็อค Smart Mode (ทางเลือก)
344
-
345
- MeMesh ทำงานแบบออฟไลน์โดยค่าเริ่มต้น — การเรียกคืนไม่ใช้ LLM เลย (95.60% R@5 บน LongMemEval-S ทันทีที่ติดตั้ง) เพิ่มคีย์ API LLM เฉพาะเมื่อต้องการโฟลว์วิเคราะห์ที่เสริมด้วย LLM เท่านั้น ได้แก่ การสกัดเซสชันที่ฉลาดขึ้น การติดแท็กหน่วยความจำใหม่อัตโนมัติ การสร้างบทเรียนจากความล้มเหลว และการบีบอัดด้วย `dream`:
346
-
347
- ```bash
348
- memesh config set llm.provider anthropic
349
- memesh config set llm.api-key sk-ant-...
350
- ```
351
-
352
- หรือใช้แท็บ Settings แดชบอร์ด (การตั้งค่าสายตา):
353
-
354
- ```bash
355
- memesh serve # opens dashboard → Settings tab
356
- ```
357
-
358
- **ขุดเซสชันที่ผ่านมาให้เป็นหน่วยความจำ** `memesh dream run --from-transcripts` จะอ่านบันทึกเซสชัน Claude Code ของโปรเจกต์นี้ ถาม LLM หาการตัดสินใจและบทเรียนที่ซ่อนอยู่ในบทสนทนา แล้วพักไว้เป็นข้อเสนอ — ไม่มีอะไรเข้าสู่กราฟความรู้โดยอัตโนมัติ ตรวจดูทีละรายการด้วย `memesh dream show <id>` แล้ว accept เฉพาะอันที่ควรเก็บ
359
-
360
- ### ใช้ embeddings ของคุณเอง (ไม่บังคับ)
361
-
362
- โดยค่าเริ่มต้น MeMesh ทำ recall **ด้วยคีย์เวิร์ดอย่างเดียว** (FTS5) — ไม่ต้องใช้คีย์ API ไม่ต้องดาวน์โหลดโมเดล ไม่มีข้อมูลออกจากเครื่อง การค้นหาเชิงความหมาย (semantic) เป็นตัวเลือกเสริมและต้องใช้ embedder ตั้งค่าอย่างใดอย่างหนึ่ง:
363
-
364
- ```bash
365
- memesh config set embedder.provider openai # or: ollama
366
- memesh config set embedder.model text-embedding-3-small
367
- ```
368
-
369
- embedder ถูกตั้งค่า**แยกจาก LLM แชท** — การเปลี่ยน `llm.provider` จะไม่เปลี่ยน embeddings ของคุณอย่างเงียบ ๆ หากเปลี่ยนไปใช้มิติที่ต่างกัน (เช่น 768 → 1536) MeMesh จะสร้างดัชนีเวกเตอร์ใหม่โดยอัตโนมัติในการเขียนครั้งถัดไป ค่า `embedder.provider` ที่รองรับ: `ollama` (ในเครื่อง), `openai` (โฮสต์) หากไม่ตั้งค่าใดเลย recall จะยังคงเป็นการค้นหาด้วยคีย์เวิร์ด
370
-
371
- | | ระดับ 0 (ค่าเริ่มต้น) | ระดับ 1 (Smart Mode) |
372
- |---|---|---|
373
- | **Search** | FTS5 + sqlite-vec, 95.60% R@5 | คงเดิม — recall ไม่ใช้ LLM ในทุก level |
374
- | **Auto-capture** | รูปแบบตามกฎ | + LLM สกัดการตัดสินใจ & บทเรียน |
375
- | **Auto-tagging** | แท็กด้วยตนเองเท่านั้น | + LLM สร้างแท็กให้ entity ใหม่ |
376
- | **วิเคราะห์ความล้มเหลว** | ไม่พร้อมใช้ | + LLM แปลง session errors เป็น structured lessons |
377
- | **Compression** | ไม่พร้อมใช้ | `dream` บีบอัดหน่วยความจำ |
378
- | **Cost** | ฟรี ไม่ต้องคีย์ API | ~$0.0001 ต่อ analysis call (Haiku) |
379
-
380
- ---
381
-
382
- ## เครื่องมือหน่วยความจำทั้ง 7 ตัว
383
-
384
- | เครื่องมือ | ทำอะไร |
385
- |---|---|
386
- | `remember` | เก็บความรู้พร้อมการสังเกต ความสัมพันธ์ และแท็ก |
387
- | `recall` | ค้นหา FTS5 + sqlite-vec พร้อมการให้คะแนนหลายปัจจัย (ความเกี่ยวข้อง, ความเพิ่งพ้อง, ความถี่, ความมั่นใจ, ผลกระทบการเรียกคืน) — ไม่ใช้ LLM ใน hot path |
388
- | `forget` | เก็บแบบนุ่ม (ไม่เคยลบ) หรือลบการสังเกตเฉพาะ |
389
- | `export` | แบ่งปันหน่วยความจำเป็น JSON ระหว่างโครงการหรือสมาชิกทีม |
390
- | `import` | นำเข้าหน่วยความจำพร้อมกลยุทธ์ผสาน (ข้าม / เขียนทับ / ผนวก) |
391
- | `learn` | บันทึกบทเรียนโครงสร้างจากข้อผิดพลาด (ข้อผิดพลาด สาเหตุ การแก้ไข การป้องกัน) |
392
- | `user_patterns` | วิเคราะห์รูปแบบการทำงาน — ตารางเวลา เครื่องมือ จุดแข็ง พื้นที่เรียนรู้ |
393
-
394
- ---
395
-
396
- ## สถาปัตยกรรม
397
-
398
- ```
399
- ┌─────────────────┐
400
- │ Core Engine │
401
- │ (7 operations) │
402
- └────────┬────────┘
403
- ┌─────────────────┼─────────────────┐
404
- │ │ │
405
- CLI (memesh) HTTP API (serve) MCP (memesh-mcp)
406
- │ │ │
407
- └─────────────────┼─────────────────┘
408
-
409
- SQLite + FTS5 + sqlite-vec
410
- (~/.memesh/knowledge-graph.db)
411
- ```
412
-
413
- Core เป็นอิสระจากเฟรมเวิร์ก ตรรมชาติเดียวกันทำงานจากเทอร์มินัล HTTP หรือ MCP
414
-
415
- ---
416
-
417
- ## การอัปเกรด
418
-
419
- Claude Code plugin marketplace ปักหมุดเวอร์ชันตอนติดตั้ง และ **ไม่** อัปเดตอัตโนมัติ วิธีรับเวอร์ชันใหม่:
420
-
421
- **ตัวเลือก A — `/plugin` UI**: ถอนการติดตั้ง `memesh@pcircle-memesh` แล้วติดตั้งใหม่ Claude Code จะดึงเวอร์ชันล่าสุดจาก marketplace
422
-
423
- **ตัวเลือก B — สคริปต์บรรทัดเดียว** (ไม่ต้องคลิก UI, idempotent):
424
-
425
- ```bash
426
- # ถ้า plugin ของคุณเป็น v4.2.5 ขึ้นไป สคริปต์อยู่ในนั้นแล้ว:
427
- bash ~/.claude/plugins/cache/pcircle-memesh/memesh/<current-version>/scripts/upgrade-plugin.sh
428
-
429
- # ถ้าคุณติดตั้งก่อน v4.2.5 (คือ v4.2.4 หรือ v4.2.3)
430
- # สคริปต์ยังไม่อยู่ใน plugin ของคุณ ใช้สำเนา npm-global แทน:
431
- bash "$(npm prefix -g)/lib/node_modules/@pcircle/memesh/scripts/upgrade-plugin.sh"
432
-
433
- # (สมมติว่าคุณรัน `npm install -g @pcircle/memesh` แล้ว ถ้ายังก็ทำตอนนี้เลย —
434
- # ผู้ใช้ส่วนใหญ่ต้องการทั้งสองเส้นทาง ดู "ภาพรวมเส้นทางการติดตั้ง" ด้านบน)
435
- ```
436
-
437
- สคริปต์จะ fast-forward marketplace cache, ติดตั้งเวอร์ชันใหม่ใน `~/.claude/plugins/cache/`, ลง runtime deps และชี้ `installed_plugins.json` ไปยังเวอร์ชันใหม่ รีสตาร์ท Claude Code เพื่อให้ MCP server reconnect
438
-
439
- **การติดตั้งแบบ npm-global** (`npm install -g @pcircle/memesh`) อัปเดตได้ด้วย `memesh update` Source checkouts: `git pull && npm install && npm run build`
440
-
441
- ตอนเริ่ม session ระบบแสดง banner บรรทัดเดียว (throttle ทุก 24 ชั่วโมงต่อเวอร์ชัน) เมื่อมีเวอร์ชันใหม่ และ `memesh doctor` รายงานเวอร์ชันเป้าหมายพร้อมคำสั่งที่เหมาะกับ channel นั้น
442
-
443
- ---
444
-
445
- ## การร่วมพัฒนา
446
-
447
- ```bash
448
- git clone https://github.com/PCIRCLE-AI/memesh-llm-memory
449
- cd memesh-llm-memory && npm install && npm run build
450
- npm test
451
- npm run test:e2e-dashboard
452
- ```
453
-
454
- Dashboard: `cd dashboard && npm install && npm run dev`
455
-
456
- ---
457
-
458
- <p align="center">
459
- <strong>MIT</strong> — สร้างโดย <a href="https://pcircle.com">PCIRCLE AI</a>
460
- </p>