@pcircle/memesh 4.0.2 → 4.1.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 (63) hide show
  1. package/README.de.md +115 -86
  2. package/README.es.md +107 -78
  3. package/README.fr.md +111 -82
  4. package/README.ja.md +117 -88
  5. package/README.ko.md +111 -82
  6. package/README.md +54 -3
  7. package/README.pt.md +103 -74
  8. package/README.th.md +117 -88
  9. package/README.vi.md +113 -84
  10. package/README.zh-CN.md +114 -85
  11. package/README.zh-TW.md +115 -86
  12. package/dashboard/dist/index.html +4 -4
  13. package/dist/core/config.d.ts.map +1 -1
  14. package/dist/core/config.js +6 -10
  15. package/dist/core/config.js.map +1 -1
  16. package/dist/core/doctor.d.ts +40 -0
  17. package/dist/core/doctor.d.ts.map +1 -0
  18. package/dist/core/doctor.js +217 -0
  19. package/dist/core/doctor.js.map +1 -0
  20. package/dist/core/embedder.js.map +1 -1
  21. package/dist/core/install-channel.d.ts +30 -0
  22. package/dist/core/install-channel.d.ts.map +1 -0
  23. package/dist/core/install-channel.js +83 -0
  24. package/dist/core/install-channel.js.map +1 -0
  25. package/dist/core/schema-export.d.ts.map +1 -1
  26. package/dist/core/schema-export.js +34 -0
  27. package/dist/core/schema-export.js.map +1 -1
  28. package/dist/core/skill-usage-log.d.ts +11 -0
  29. package/dist/core/skill-usage-log.d.ts.map +1 -0
  30. package/dist/core/skill-usage-log.js +121 -0
  31. package/dist/core/skill-usage-log.js.map +1 -0
  32. package/dist/core/updater.d.ts +11 -0
  33. package/dist/core/updater.d.ts.map +1 -0
  34. package/dist/core/updater.js +28 -0
  35. package/dist/core/updater.js.map +1 -0
  36. package/dist/core/verifier.d.ts +37 -0
  37. package/dist/core/verifier.d.ts.map +1 -0
  38. package/dist/core/verifier.js +142 -0
  39. package/dist/core/verifier.js.map +1 -0
  40. package/dist/core/version-check.d.ts +28 -4
  41. package/dist/core/version-check.d.ts.map +1 -1
  42. package/dist/core/version-check.js +167 -21
  43. package/dist/core/version-check.js.map +1 -1
  44. package/dist/transports/cli/cli.js +154 -16
  45. package/dist/transports/cli/cli.js.map +1 -1
  46. package/dist/transports/http/server.d.ts.map +1 -1
  47. package/dist/transports/http/server.js +48 -1
  48. package/dist/transports/http/server.js.map +1 -1
  49. package/dist/transports/mcp/handlers.d.ts +93 -0
  50. package/dist/transports/mcp/handlers.d.ts.map +1 -1
  51. package/dist/transports/mcp/handlers.js +51 -1
  52. package/dist/transports/mcp/handlers.js.map +1 -1
  53. package/dist/transports/schemas.d.ts +28 -0
  54. package/dist/transports/schemas.d.ts.map +1 -1
  55. package/dist/transports/schemas.js +25 -0
  56. package/dist/transports/schemas.js.map +1 -1
  57. package/hooks/hooks.json +10 -0
  58. package/package.json +5 -3
  59. package/plugin.json +2 -2
  60. package/scripts/hooks/pre-bash-orchestration-nudge.js +150 -0
  61. package/scripts/hooks/pre-edit-recall.js +0 -0
  62. package/scripts/hooks/session-start.js +55 -2
  63. package/skills/agentic-orchestration/SKILL.md +399 -0
package/README.zh-CN.md CHANGED
@@ -1,10 +1,13 @@
1
+ <!-- translated from README.md @ ab9d25f8d9cb7c78c4cc271717709e2efb4bac76 -->
2
+ <!-- DO NOT edit this file by hand. The maintainer regenerates it from README.md via a private toolkit script (see internal docs). Manual edits will be overwritten on next sync. -->
3
+
1
4
  🌐 [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
5
 
3
6
  <p align="center">
4
7
  <h1 align="center">MeMesh LLM Memory</h1>
5
8
  <p align="center">
6
- <strong>最轻量的通用 AI 记忆层。</strong><br />
7
- 一个 SQLite 文件。任何 LLM。零云端依赖。
9
+ <strong>为 Claude Code 和 MCP 编码代理设计的本地内存层。</strong><br />
10
+ 一个 SQLite 文件。无需 Docker。无需云服务。
8
11
  </p>
9
12
  <p align="center">
10
13
  <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>
@@ -16,15 +19,17 @@
16
19
 
17
20
  ---
18
21
 
19
- ## 问题所在
22
+ ## 问题
23
+
24
+ 编码代理在会话间会遗忘。每个架构决策、每次 bug 修复、失败的测试用例、每一次来之不易的经验教训都需要重新解释一遍。Claude Code 每次都从零开始,重新发现老约束,浪费上下文在早该掌握的东西上。
20
25
 
21
- 你的 AI 在每次对话结束后都会忘记一切。每一个决策、每一次修复、每一个学到的教训——全部归零。你不断重新解释相同的背景,Claude 反复重新发现相同的模式,而你的 AI 知识库每次都从零开始。
26
+ **MeMesh 为编码代理提供持久化、可搜索、不断演进的本地内存。**
22
27
 
23
- **MeMesh 让每个 AI 都能拥有持久、可搜索、持续进化的记忆。**
28
+ 本包是 MeMesh 产品系列的本地内存层。我们刻意保持简洁并开源:用 npm 安装,内存文件保存在 `~/.memesh/knowledge-graph.db`,连接到 Claude Code 或任何兼容 MCP 的客户端即可。托管工作区和企业级操作系统产品应当独立于本包的 README 和路线图。
24
29
 
25
30
  ---
26
31
 
27
- ## 60 秒快速上手
32
+ ## 60 秒快速开始
28
33
 
29
34
  ### 第一步:安装
30
35
 
@@ -32,53 +37,59 @@
32
37
  npm install -g @pcircle/memesh
33
38
  ```
34
39
 
35
- ### 第二步:AI 开始记忆
40
+ ### 第二步:记录一个决策
36
41
 
37
42
  ```bash
38
43
  memesh remember --name "auth-decision" --type "decision" --obs "Use OAuth 2.0 with PKCE"
39
44
  ```
40
45
 
41
- ### 第三步:AI 召回记忆
46
+ ### 第三步:之后随时调用
42
47
 
43
48
  ```bash
44
49
  memesh recall "login security"
45
- # → 搜索「login security」也能找到「OAuth 2.0 with PKCE
50
+ # → 即使用词不同,也能找到 "OAuth 2.0 with PKCE"
46
51
  ```
47
52
 
48
- **就这样。** MeMesh 已开始在不同对话之间记忆与召回。
53
+ **就这样。** MeMesh 现在已经在会话间记忆和回忆了。
49
54
 
50
- 运行以下命令探索你的记忆库:
55
+ 想验证安装和本地接线是否完整:
56
+
57
+ ```bash
58
+ memesh doctor
59
+ ```
60
+
61
+ 打开仪表板浏览你的内存:
51
62
 
52
63
  ```bash
53
64
  memesh
54
65
  ```
55
66
 
56
67
  <p align="center">
57
- <img src="docs/images/dashboard-search.png" alt="MeMesh Search — 瞬间找到任何记忆" width="100%" />
68
+ <img src="docs/images/dashboard-search.png" alt="MeMesh 搜索 — 瞬间找到任何记忆" width="100%" />
58
69
  </p>
59
70
 
60
71
  <p align="center">
61
- <img src="docs/images/dashboard-analytics.png" alt="MeMesh Analytics深入了解 AI 的知识" width="100%" />
72
+ <img src="docs/images/dashboard-analytics.png" alt="MeMesh 分析健康评分、时间线、模式、知识覆盖" width="100%" />
62
73
  </p>
63
74
 
64
75
  <p align="center">
65
- <img src="docs/images/dashboard-graph.png" alt="MeMesh Graph交互式知识图谱,支持类型筛选与自我模式" width="100%" />
76
+ <img src="docs/images/dashboard-graph.png" alt="MeMesh 知识图交互式知识图,支持类型过滤和中心模式" width="100%" />
66
77
  </p>
67
78
 
68
79
  ---
69
80
 
70
81
  ## 这是为谁设计的?
71
82
 
72
- | 如果你是… | MeMesh 能帮你… |
73
- |---------------|---------------------|
74
- | **使用 Claude Code 的开发者** | 自动记忆决策、模式与每次对话中的心得 |
75
- | **以 LLM 打造产品的团队** | 通过导出/导入共享团队知识,让每个人的 AI 上下文保持一致 |
76
- | **AI Agent 开发者** | 通过 MCP、HTTP API 或 Python SDK 赋予 Agent 持久记忆 |
77
- | **同时使用多款 AI 工具的重度用户** | 一个记忆层,兼容 ClaudeGPTLLaMA、Ollama 或任何 MCP 客户端 |
83
+ | 你是... | MeMesh 帮助你... |
84
+ |--------|-----------------|
85
+ | **使用 Claude Code 的开发者** | 工作时自动回忆项目决策、文件特定的经验教训和过去的失败 |
86
+ | **编码代理重度用户** | MCP 兼容工具间共享一个本地内存层 |
87
+ | **团队试验 AI 编码工作流** | 导出/导入项目知识,无需引入托管基础设施 |
88
+ | **代理开发者** | 通过 MCPHTTPCLI Python SDK 添加本地内存 |
78
89
 
79
90
  ---
80
91
 
81
- ## 与所有工具兼容
92
+ ## 为编码代理优先设计
82
93
 
83
94
  <table>
84
95
  <tr>
@@ -88,28 +99,28 @@ memesh
88
99
  ```bash
89
100
  memesh-mcp
90
101
  ```
91
- MCP 协议(自动配置)
102
+ MCP 工具 + Claude Code 钩子
92
103
 
93
104
  </td>
94
105
  <td width="33%" align="center">
95
106
 
96
- **Python / LangChain**
97
- ```python
98
- from memesh import MeMesh
99
- m = MeMesh()
100
- m.recall("auth")
107
+ **任何 HTTP 客户端**
108
+ ```bash
109
+ curl localhost:3737/v1/recall \
110
+ -H "Content-Type: application/json" \
111
+ -d '{"query":"auth"}'
101
112
  ```
102
- `pip install memesh`
113
+ `memesh serve` (REST API)
103
114
 
104
115
  </td>
105
116
  <td width="33%" align="center">
106
117
 
107
- **任何 LLMOpenAI 格式)**
118
+ **任何 LLM (OpenAI 格式)**
108
119
  ```bash
109
120
  memesh export-schema \
110
121
  --format openai
111
122
  ```
112
- 粘贴到任何 API 调用
123
+ 粘贴工具到任何 API 调用
113
124
 
114
125
  </td>
115
126
  </tr>
@@ -117,32 +128,34 @@ memesh export-schema \
117
128
 
118
129
  ---
119
130
 
120
- ## 为何不用 Mem0 / Zep?
131
+ ## 为什么不用 OpenMemory、Cursor Memories、Mem0 Zep?
121
132
 
122
- | | **MeMesh** | Mem0 | Zep |
123
- |---|---|---|---|
124
- | **安装时间** | 5 | 30–60 分钟 | 30+ 分钟 |
125
- | **配置方式** | `npm i -g` 完成 | Neo4j + VectorDB + API 密钥 | Neo4j + 配置 |
126
- | **存储方式** | 单一 SQLite 文件 | Neo4j + Qdrant | Neo4j |
127
- | **离线使用** | 支持,始终如此 | 不支持 | 不支持 |
128
- | **仪表板** | 内置(7 个标签页 + 分析) | | |
129
- | **依赖包** | 6 | 20+ | 10+ |
130
- | **价格** | 永久免费 | 免费方案/付费 | 免费方案/付费 |
133
+ | | **MeMesh** | OpenMemory | Cursor Memories | Mem0 | Zep / Graphiti |
134
+ |---|---|---|---|---|---|
135
+ | **最佳适用场景** | 编码代理的本地内存 | 本地/跨客户端 MCP 内存 | Cursor 原生项目内存 | 托管应用/代理内存 | 时间知识图 |
136
+ | **安装形式** | `npm install -g @pcircle/memesh` | 本地应用/服务器流程 | 内置于 Cursor | API / SDK / MCP | 服务/框架配置 |
137
+ | **存储方式** | 单个本地 SQLite 文件 | 本地内存栈 | Cursor 管理的规则/内存 | 托管或自托管栈 | 图数据库 |
138
+ | **是否需要云** | | 本地模式不需要 | 取决于 Cursor 账户/设置 | 平台需要 | 通常需要/自托管 |
139
+ | **Claude Code 钩子** | 一级支持 | MCP 工具 | | MCP 工具 | 不针对 Claude Code |
140
+ | **仪表板** | 内置 | 内置 | Cursor 设置 | 平台仪表板 | 平台/图形工具 |
141
+ | **权衡** | 简洁的本地方案,不适用企业规模 | 更宽泛的本地应用足迹 | 绑定 Cursor | 强大的托管平台,本地化程度低 | 强大的图模型,配置更复杂 |
131
142
 
132
- **MeMesh 的取舍:** 放弃企业级多租户功能,换来**即时安装、零基础设施、百分之百隐私**。
143
+ **MeMesh 用即插即用的本地设置、可检视的存储和编码代理工作流钩子,换取企业级托管基础设施。**
133
144
 
134
145
  ---
135
146
 
136
- ## 自动运作的功能
147
+ ## Claude Code 中的自动化流程
137
148
 
138
- 你不需要手动记忆每一件事。MeMesh 有 **4 个 Hook**,在你不做任何事的情况下自动捕获知识:
149
+ 你不需要手动记住一切。MeMesh 有 **6 个钩子**在你工作时自动捕获和注入知识:
139
150
 
140
- | 时机 | MeMesh 做了什么 |
141
- |------|------------------|
142
- | **每次会话开始** | 加载最相关的记忆 + 来自过去教训的主动警告 |
143
- | **每次 `git commit` 后** | 记录你的变更内容与差异统计 |
144
- | **Claude 结束时** | 捕获已编辑的文件、已修复的错误,并自动从失败中生成结构化教训 |
145
- | **上下文压缩前** | 在知识因上下文限制消失前保存起来 |
151
+ | 触发条件 | MeMesh 的动作 |
152
+ |---------|------------|
153
+ | **每个会话开始** | 加载最相关的记忆 + 来自过去经验教训的主动警告 + 代理编排横幅 |
154
+ | **编辑文件前** | 回忆与该文件或项目相关的记忆,然后 Claude 才开始写代码 |
155
+ | **执行 bash 命令前** | 推动 Claude 派遣高可验证性命令(测试、构建、lint、迁移、部署、基准测试)作为后台代理 |
156
+ | **每次 `git commit` 后** | 记录你的改动,附带 diff 统计 |
157
+ | **Claude 停止时** | 捕获编辑过的文件、修复的错误、自动从失败中生成结构化经验教训 |
158
+ | **上下文压缩前** | 在知识被上下文限制吞没前保存 |
146
159
 
147
160
  > **随时退出:** `export MEMESH_AUTO_CAPTURE=false`
148
161
 
@@ -150,70 +163,85 @@ memesh export-schema \
150
163
 
151
164
  ## 仪表板
152
165
 
153
- 7 个标签页、11 种语言、零外部依赖。服务器运行后在 `http://localhost:3737/dashboard` 访问。
166
+ 7 个标签页,11 种语言,零外部依赖。服务器运行时访问 `http://localhost:3737/dashboard`。
154
167
 
155
- | 标签页 | 内容 |
156
- |--------|------|
157
- | **Search** | 跨所有记忆的全文搜索 + 向量相似度搜索 |
158
- | **Browse** | 所有实体的分页列表,支持归档/恢复 |
159
- | **Analytics** | 记忆健康分数(0-100)、30 天时间轴、价值指标、知识覆盖率、清理建议、你的工作模式 |
160
- | **Graph** | 交互式力导向知识图谱,支持类型筛选、搜索、自我模式、时间热力图 |
161
- | **Lessons** | 从过去失败中生成的结构化教训(错误、根因、修复方法、预防措施) |
162
- | **Manage** | 归档与恢复实体 |
163
- | **Settings** | LLM 提供者配置、语言选择 |
168
+ | 标签页 | 你看到什么 |
169
+ |--------|---------|
170
+ | **搜索** | 全文 + 向量相似度搜索,覆盖所有记忆 |
171
+ | **浏览** | 所有实体的分页列表,支持归档/恢复 |
172
+ | **分析** | 内存健康评分(0-100)、30 天时间线、价值指标、知识覆盖、清理建议、你的工作模式 |
173
+ | **知识图** | 交互式力导向图,支持类型过滤、搜索、中心模式、新近度热力图 |
174
+ | **经验教训** | 来自过去失败的结构化经验教训(错误、根本原因、修复、预防) |
175
+ | **管理** | 归档和恢复实体 |
176
+ | **设置** | LLM 提供商配置、即时语言切换器 |
164
177
 
165
178
  ---
166
179
 
167
- ## 智能功能
180
+ ## 聪慧功能
168
181
 
169
- **🧠 智能搜索** — 搜索「login security」就能找到关于「OAuth PKCE」的记忆。MeMesh 使用你配置的 LLM 将查询扩展为相关词汇。
182
+ **🧠 智能搜索** — 搜索"登录安全"会找到"OAuth PKCE"相关的记忆。MeMesh 用你配置的 LLM 扩展查询。
183
+
184
+ **📊 评分排序** — 结果按相关性(30%)+ 新近度(25%)+ 频率(15%)+ 置信度(15%)+ 回忆影响(10%)+ 时间有效性(5%)排序。
185
+
186
+ **🔄 知识演进** — 决策会变化。`forget` 归档旧记忆(永不删除)。`supersedes` 关系链接 旧 → 新。你的 AI 总是看到最新版本。
187
+
188
+ **⚠️ 冲突检测** — 如果你有两条相互矛盾的记忆,MeMesh 会警告你。
189
+
190
+ **📦 团队共享** — `memesh export > team-knowledge.json` → 与团队分享 → `memesh import team-knowledge.json`
191
+ 导入的包保持可搜索,但 MeMesh 不会自动将导入的记忆注入到 Claude 钩子中,直到你审查或本地重新存储它们。
192
+
193
+ ---
170
194
 
171
- **📊 评分排名** — 结果依相关性(35%)+ 最近使用时间(25%)+ 使用频率(20%)+ 可信度(15%)+ 信息时效性(5%)排序。
195
+ ## 使用示例
172
196
 
173
- **🔄 知识演进** 决策会改变。`forget` 是归档旧记忆(从不真正删除)。`supersedes` 关系将旧记忆与新记忆链接。你的 AI 始终看到最新版本。
197
+ > "MeMesh 记得我们三周前选择了 PKCE 而不是隐式流。我再次问 Claude 有关身份验证的问题时,它已经知道——无需重新解释。"
198
+ > — **独立开发者,正在构建 SaaS**
174
199
 
175
- **⚠️ 冲突检测** 若有两条记忆相互矛盾,MeMesh 会发出警告。
200
+ > "我们每周五导出团队的内存,周一导入。每个人的 Claude 周一开始时都知道团队上周学到了什么。"
201
+ > — **3 人初创公司,共享知识库**
176
202
 
177
- **📦 团队共享** — `memesh export > team-knowledge.json` 分享给团队 `memesh import team-knowledge.json`
203
+ > "仪表板显示我 90% 的记忆是自动生成的会话日志。我开始有意使用 `remember` 记录架构决策。彻底改变了游戏规则。"
204
+ > — **发现分析标签页的开发者**
178
205
 
179
206
  ---
180
207
 
181
- ## 启用智能模式(可选)
208
+ ## 解锁智能模式(可选)
182
209
 
183
- MeMesh 默认完全离线运作。加入 LLM API 密钥即可解锁更聪明的搜索:
210
+ MeMesh 默认离线工作。仅当你需要查询扩展、更聪慧的提取和压缩时,才添加 LLM API 密钥:
184
211
 
185
212
  ```bash
186
213
  memesh config set llm.provider anthropic
187
214
  memesh config set llm.api-key sk-ant-...
188
215
  ```
189
216
 
190
- 或使用仪表板的设置标签页(可视化配置):
217
+ 或使用仪表板设置标签页(可视化配置):
191
218
 
192
219
  ```bash
193
220
  memesh # 打开仪表板 → 设置标签页
194
221
  ```
195
222
 
196
- | | 0 级(默认) | 1 级(智能模式) |
223
+ | | 级别 0(默认) | 级别 1(智能模式) |
197
224
  |---|---|---|
198
- | **搜索** | FTS5 关键字匹配 | + LLM 查询扩展(约 97% 召回率) |
199
- | **自动捕获** | 规则式模式 | + LLM 提取决策与心得 |
200
- | **压缩** | 不支持 | `consolidate` 压缩冗长记忆 |
201
- | **费用** | 免费,无需 API 密钥 | 约 $0.0001 每次搜索(Haiku) |
225
+ | **搜索** | FTS5 关键词匹配 | + LLM 查询扩展(~97% 召回率) |
226
+ | **自动捕获** | 基于规则的模式 | + LLM 提取决策和经验教训 |
227
+ | **压缩** | 不可用 | `consolidate` 压缩冗长的记忆 |
228
+ | **成本** | 免费,无需 API 密钥 | ~$0.0001 每次搜索(Haiku) |
202
229
 
203
230
  ---
204
231
 
205
- ## 全部 8 个记忆工具
232
+ ## 全部 9 个内存工具
206
233
 
207
- | 工具 | 功能说明 |
208
- |------|-------------|
209
- | `remember` | 存储知识,支持观察记录、关联关系与标签 |
210
- | `recall` | 智能搜索,结合多因子评分与 LLM 查询扩展 |
211
- | `forget` | 软归档(从不真正删除)或移除特定观察记录 |
234
+ | 工具 | 它做什么 |
235
+ |------|--------|
236
+ | `remember` | 存储知识,附带观察、关系和标签 |
237
+ | `recall` | 智能搜索,多因素评分和 LLM 查询扩展 |
238
+ | `forget` | 软归档(永不删除)或移除特定观察 |
212
239
  | `consolidate` | LLM 驱动的冗长记忆压缩 |
213
- | `export` | 将记忆以 JSON 格式分享给其他项目或团队成员 |
214
- | `import` | 导入记忆,支持合并策略(跳过 / 覆盖 / 追加) |
215
- | `learn` | 记录来自错误的结构化教训(错误、根因、修复方法、预防措施) |
216
- | `user_patterns` | 分析你的工作模式 — 时间安排、工具、优势、学习方向 |
240
+ | `export` | 在项目或团队成员间共享内存,格式为 JSON |
241
+ | `import` | 导入内存,支持合并策略(跳过 / 覆盖 / 追加) |
242
+ | `learn` | 从错误中记录结构化经验教训(错误、根本原因、修复、预防) |
243
+ | `user_patterns` | 分析你的工作模式——日程、工具、优势、学习领域 |
244
+ | `verify_agent_work` | 为后台代理工作保存验证报告;对照 `git diff` 验证声称的文件改动 |
217
245
 
218
246
  ---
219
247
 
@@ -234,7 +262,7 @@ memesh # 打开仪表板 → 设置标签页
234
262
  (~/.memesh/knowledge-graph.db)
235
263
  ```
236
264
 
237
- 核心引擎与框架无关。无论从终端、HTTP 还是 MCP 调用,逻辑完全相同。
265
+ 核心是框架无关的。相同逻辑从终端、HTTP MCP 运行。
238
266
 
239
267
  ---
240
268
 
@@ -243,7 +271,8 @@ memesh # 打开仪表板 → 设置标签页
243
271
  ```bash
244
272
  git clone https://github.com/PCIRCLE-AI/memesh-llm-memory
245
273
  cd memesh-llm-memory && npm install && npm run build
246
- npm test -- --run # 413 tests
274
+ npm test # 489 个测试
275
+ npm run test:e2e-dashboard
247
276
  ```
248
277
 
249
278
  仪表板:`cd dashboard && npm install && npm run dev`