@creatoria/miniapp-mcp 0.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.
- package/README.md +469 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +144 -0
- package/dist/cli.js.map +1 -0
- package/dist/config/defaults.d.ts +73 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +118 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/loader.d.ts +50 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +189 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/core/element-ref.d.ts +44 -0
- package/dist/core/element-ref.d.ts.map +1 -0
- package/dist/core/element-ref.js +213 -0
- package/dist/core/element-ref.js.map +1 -0
- package/dist/core/logger.d.ts +55 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +378 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/output.d.ts +21 -0
- package/dist/core/output.d.ts.map +1 -0
- package/dist/core/output.js +56 -0
- package/dist/core/output.js.map +1 -0
- package/dist/core/report-generator.d.ts +24 -0
- package/dist/core/report-generator.d.ts.map +1 -0
- package/dist/core/report-generator.js +212 -0
- package/dist/core/report-generator.js.map +1 -0
- package/dist/core/session.d.ts +83 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +306 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/timeout.d.ts +49 -0
- package/dist/core/timeout.d.ts.map +1 -0
- package/dist/core/timeout.js +67 -0
- package/dist/core/timeout.js.map +1 -0
- package/dist/core/tool-logger.d.ts +83 -0
- package/dist/core/tool-logger.d.ts.map +1 -0
- package/dist/core/tool-logger.js +453 -0
- package/dist/core/tool-logger.js.map +1 -0
- package/dist/core/validation.d.ts +39 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +93 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +85 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/assert.d.ts +108 -0
- package/dist/tools/assert.d.ts.map +1 -0
- package/dist/tools/assert.js +291 -0
- package/dist/tools/assert.js.map +1 -0
- package/dist/tools/automator.d.ts +45 -0
- package/dist/tools/automator.d.ts.map +1 -0
- package/dist/tools/automator.js +186 -0
- package/dist/tools/automator.js.map +1 -0
- package/dist/tools/element.d.ts +253 -0
- package/dist/tools/element.d.ts.map +1 -0
- package/dist/tools/element.js +615 -0
- package/dist/tools/element.js.map +1 -0
- package/dist/tools/index.d.ts +97 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +1565 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/miniprogram.d.ts +79 -0
- package/dist/tools/miniprogram.d.ts.map +1 -0
- package/dist/tools/miniprogram.js +245 -0
- package/dist/tools/miniprogram.js.map +1 -0
- package/dist/tools/network.d.ts +65 -0
- package/dist/tools/network.d.ts.map +1 -0
- package/dist/tools/network.js +205 -0
- package/dist/tools/network.js.map +1 -0
- package/dist/tools/page.d.ts +108 -0
- package/dist/tools/page.d.ts.map +1 -0
- package/dist/tools/page.js +307 -0
- package/dist/tools/page.js.map +1 -0
- package/dist/tools/record.d.ts +86 -0
- package/dist/tools/record.d.ts.map +1 -0
- package/dist/tools/record.js +316 -0
- package/dist/tools/record.js.map +1 -0
- package/dist/tools/snapshot.d.ts +82 -0
- package/dist/tools/snapshot.d.ts.map +1 -0
- package/dist/tools/snapshot.js +258 -0
- package/dist/tools/snapshot.js.map +1 -0
- package/dist/types.d.ts +240 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/docs/SIMPLE_USAGE.md +210 -0
- package/docs/api/README.md +244 -0
- package/docs/api/assert.md +1015 -0
- package/docs/api/automator.md +345 -0
- package/docs/api/element.md +1454 -0
- package/docs/api/miniprogram.md +558 -0
- package/docs/api/network.md +883 -0
- package/docs/api/page.md +909 -0
- package/docs/api/record.md +963 -0
- package/docs/api/snapshot.md +792 -0
- package/docs/architecture.E-Docs.md +1359 -0
- package/docs/architecture.F1.md +720 -0
- package/docs/architecture.F2.md +871 -0
- package/docs/architecture.F3.md +905 -0
- package/docs/architecture.md +90 -0
- package/docs/charter.A1.align.yaml +170 -0
- package/docs/charter.A2.align.yaml +199 -0
- package/docs/charter.A3.align.yaml +242 -0
- package/docs/charter.A4.align.yaml +227 -0
- package/docs/charter.B1.align.yaml +179 -0
- package/docs/charter.B2.align.yaml +200 -0
- package/docs/charter.B3.align.yaml +200 -0
- package/docs/charter.B4.align.yaml +188 -0
- package/docs/charter.C1.align.yaml +190 -0
- package/docs/charter.C2.align.yaml +202 -0
- package/docs/charter.C3.align.yaml +211 -0
- package/docs/charter.C4.align.yaml +263 -0
- package/docs/charter.C5.align.yaml +220 -0
- package/docs/charter.D1.align.yaml +190 -0
- package/docs/charter.D2.align.yaml +234 -0
- package/docs/charter.D3.align.yaml +206 -0
- package/docs/charter.E-Docs.align.yaml +294 -0
- package/docs/charter.F1.align.yaml +193 -0
- package/docs/charter.F2.align.yaml +248 -0
- package/docs/charter.F3.align.yaml +287 -0
- package/docs/charter.G.align.yaml +174 -0
- package/docs/charter.align.yaml +111 -0
- package/docs/examples/session-report-usage.md +449 -0
- package/docs/maintenance.md +682 -0
- package/docs/playwright-mcp/350/260/203/347/240/224.md +53 -0
- package/docs/setup-guide.md +775 -0
- package/docs/tasks.A1.atomize.md +296 -0
- package/docs/tasks.A2.atomize.md +408 -0
- package/docs/tasks.A3.atomize.md +564 -0
- package/docs/tasks.A4.atomize.md +496 -0
- package/docs/tasks.B1.atomize.md +352 -0
- package/docs/tasks.B2.atomize.md +561 -0
- package/docs/tasks.B3.atomize.md +508 -0
- package/docs/tasks.B4.atomize.md +504 -0
- package/docs/tasks.C1.atomize.md +540 -0
- package/docs/tasks.C2.atomize.md +665 -0
- package/docs/tasks.C3.atomize.md +745 -0
- package/docs/tasks.C4.atomize.md +908 -0
- package/docs/tasks.C5.atomize.md +755 -0
- package/docs/tasks.D1.atomize.md +547 -0
- package/docs/tasks.D2.atomize.md +619 -0
- package/docs/tasks.D3.atomize.md +790 -0
- package/docs/tasks.E-Docs.atomize.md +1204 -0
- package/docs/tasks.atomize.md +189 -0
- package/docs/troubleshooting.md +855 -0
- package/docs//345/256/214/346/225/264/345/256/236/347/216/260/346/226/271/346/241/210.md +155 -0
- package/docs//345/274/200/345/217/221/344/273/273/345/212/241/350/256/241/345/210/222.md +110 -0
- package/docs//345/276/256/344/277/241/345/260/217/347/250/213/345/272/217/350/207/252/345/212/250/345/214/226API/345/256/214/346/225/264/346/226/207/346/241/243.md +894 -0
- package/docs//345/276/256/344/277/241/345/260/217/347/250/213/345/272/217/350/207/252/345/212/250/345/214/226/345/256/214/346/225/264/346/223/215/344/275/234/346/211/213/345/206/214.md +1885 -0
- package/docs//346/216/245/345/217/243/346/226/271/346/241/210.md +565 -0
- package/docs//347/254/254/344/270/200/347/211/210/346/234/254/346/226/271/346/241/210.md +380 -0
- package/package.json +87 -0
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
# Automator API
|
|
2
|
+
|
|
3
|
+
> Automator 工具提供微信开发者工具的启动、连接、断开和关闭功能,是使用 MCP Server 的第一步。
|
|
4
|
+
|
|
5
|
+
## 工具列表
|
|
6
|
+
|
|
7
|
+
| 工具名称 | 描述 | 必需参数 |
|
|
8
|
+
|---------|------|----------|
|
|
9
|
+
| `miniprogram_launch` | 启动微信开发者工具和小程序 | projectPath |
|
|
10
|
+
| `miniprogram_connect` | 连接到已运行的开发者工具 | 无 |
|
|
11
|
+
| `miniprogram_disconnect` | 断开连接但保持工具运行 | 无 |
|
|
12
|
+
| `miniprogram_close` | 关闭小程序并清理所有资源 | 无 |
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## miniprogram_launch
|
|
17
|
+
|
|
18
|
+
启动微信开发者工具并加载小程序项目。
|
|
19
|
+
|
|
20
|
+
### 参数
|
|
21
|
+
|
|
22
|
+
| 参数名 | 类型 | 必需 | 默认值 | 描述 |
|
|
23
|
+
|--------|------|------|--------|------|
|
|
24
|
+
| `projectPath` | string | ✅ | - | 小程序项目目录的绝对路径 |
|
|
25
|
+
| `cliPath` | string | ⭐ | 自动检测 | 微信开发者工具 CLI 路径(macOS 自动检测) |
|
|
26
|
+
| `port` | number | ⭐ | 9420 | 自动化端口号 |
|
|
27
|
+
|
|
28
|
+
### 返回值
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
{
|
|
32
|
+
success: true,
|
|
33
|
+
message: "Successfully launched mini program",
|
|
34
|
+
projectPath: "/path/to/project",
|
|
35
|
+
port: 9420
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 错误处理
|
|
40
|
+
|
|
41
|
+
- **项目路径不存在**: `Error: Project path does not exist: {path}`
|
|
42
|
+
- **CLI 路径无效**: `Error: WeChat DevTools CLI not found at: {path}`
|
|
43
|
+
- **端口被占用**: `Error: Port {port} is already in use`
|
|
44
|
+
- **启动超时**: `Error: Failed to launch mini program: timeout`
|
|
45
|
+
|
|
46
|
+
### 使用示例
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
// 示例 1: 基础用法(macOS 自动检测 CLI)
|
|
50
|
+
const result = await miniprogram_launch({
|
|
51
|
+
projectPath: "/Users/username/my-miniprogram"
|
|
52
|
+
})
|
|
53
|
+
console.log(result.message) // "Successfully launched mini program"
|
|
54
|
+
|
|
55
|
+
// 示例 2: 指定 CLI 路径和端口
|
|
56
|
+
const result = await miniprogram_launch({
|
|
57
|
+
projectPath: "/Users/username/my-miniprogram",
|
|
58
|
+
cliPath: "/Applications/wechatwebdevtools.app/Contents/MacOS/cli",
|
|
59
|
+
port: 9421
|
|
60
|
+
})
|
|
61
|
+
|
|
62
|
+
// 示例 3: 环境变量配置(推荐)
|
|
63
|
+
// 在 MCP 客户端配置中设置 PROJECT_PATH 和 CLI_PATH
|
|
64
|
+
const result = await miniprogram_launch({
|
|
65
|
+
projectPath: process.env.PROJECT_PATH
|
|
66
|
+
})
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### 注意事项
|
|
70
|
+
|
|
71
|
+
- ⚠️ **macOS 自动检测**: 仅支持默认安装路径 `/Applications/wechatwebdevtools.app`
|
|
72
|
+
- ⚠️ **Windows/Linux**: 必须手动指定 `cliPath`
|
|
73
|
+
- 💡 **推荐做法**: 使用环境变量 `PROJECT_PATH` 和 `CLI_PATH`,避免硬编码路径
|
|
74
|
+
- 💡 **端口冲突**: 如果 9420 被占用,可指定其他端口(如 9421)
|
|
75
|
+
|
|
76
|
+
### 相关工具
|
|
77
|
+
|
|
78
|
+
- [`miniprogram_connect`](#miniprogram_connect) - 连接到已运行的实例
|
|
79
|
+
- [`miniprogram_close`](#miniprogram_close) - 关闭开发者工具
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## miniprogram_connect
|
|
84
|
+
|
|
85
|
+
连接到已经运行的微信开发者工具实例(需要工具已启动并开启自动化端口)。
|
|
86
|
+
|
|
87
|
+
### 参数
|
|
88
|
+
|
|
89
|
+
| 参数名 | 类型 | 必需 | 默认值 | 描述 |
|
|
90
|
+
|--------|------|------|--------|------|
|
|
91
|
+
| `port` | number | ⭐ | 9420 | 自动化端口号 |
|
|
92
|
+
|
|
93
|
+
### 返回值
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
{
|
|
97
|
+
success: true,
|
|
98
|
+
message: "Successfully connected to mini program",
|
|
99
|
+
port: 9420
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 错误处理
|
|
104
|
+
|
|
105
|
+
- **连接失败**: `Error: Failed to connect to WeChat DevTools at port {port}`
|
|
106
|
+
- **工具未运行**: `Error: WeChat DevTools is not running`
|
|
107
|
+
- **端口未开启**: `Error: Automation port {port} is not enabled`
|
|
108
|
+
|
|
109
|
+
### 使用示例
|
|
110
|
+
|
|
111
|
+
```javascript
|
|
112
|
+
// 示例 1: 连接到默认端口
|
|
113
|
+
const result = await miniprogram_connect()
|
|
114
|
+
console.log(result.message) // "Successfully connected to mini program"
|
|
115
|
+
|
|
116
|
+
// 示例 2: 连接到自定义端口
|
|
117
|
+
const result = await miniprogram_connect({
|
|
118
|
+
port: 9421
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
// 示例 3: 错误处理
|
|
122
|
+
try {
|
|
123
|
+
await miniprogram_connect()
|
|
124
|
+
} catch (error) {
|
|
125
|
+
console.error("连接失败:", error.message)
|
|
126
|
+
// 解决方案:
|
|
127
|
+
// 1. 检查微信开发者工具是否已启动
|
|
128
|
+
// 2. 检查端口是否正确
|
|
129
|
+
// 3. 检查是否已开启自动化端口(设置 → 安全 → 服务端口)
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 注意事项
|
|
134
|
+
|
|
135
|
+
- ⚠️ **前置条件**: 微信开发者工具必须已启动
|
|
136
|
+
- ⚠️ **端口配置**: 需要在开发者工具中开启自动化端口(设置 → 安全 → 服务端口)
|
|
137
|
+
- 💡 **使用场景**: 适合调试时手动启动工具,然后通过 MCP 连接
|
|
138
|
+
- 💡 **区别**: `launch` 会启动工具,`connect` 仅连接
|
|
139
|
+
|
|
140
|
+
### 相关工具
|
|
141
|
+
|
|
142
|
+
- [`miniprogram_launch`](#miniprogram_launch) - 启动开发者工具
|
|
143
|
+
- [`miniprogram_disconnect`](#miniprogram_disconnect) - 断开连接
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## miniprogram_disconnect
|
|
148
|
+
|
|
149
|
+
断开与小程序的连接,但保持微信开发者工具继续运行。
|
|
150
|
+
|
|
151
|
+
### 参数
|
|
152
|
+
|
|
153
|
+
无参数。
|
|
154
|
+
|
|
155
|
+
### 返回值
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
{
|
|
159
|
+
success: true,
|
|
160
|
+
message: "Successfully disconnected from mini program"
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### 错误处理
|
|
165
|
+
|
|
166
|
+
- **未连接**: 如果没有活动连接,操作将被忽略(不报错)
|
|
167
|
+
|
|
168
|
+
### 使用示例
|
|
169
|
+
|
|
170
|
+
```javascript
|
|
171
|
+
// 示例 1: 基础用法
|
|
172
|
+
const result = await miniprogram_disconnect()
|
|
173
|
+
console.log(result.message) // "Successfully disconnected from mini program"
|
|
174
|
+
|
|
175
|
+
// 示例 2: 断开后重新连接
|
|
176
|
+
await miniprogram_disconnect()
|
|
177
|
+
// 手动在开发者工具中操作...
|
|
178
|
+
await miniprogram_connect() // 重新连接
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### 注意事项
|
|
182
|
+
|
|
183
|
+
- 💡 **工具保持运行**: 断开后开发者工具仍在运行,可以手动操作
|
|
184
|
+
- 💡 **资源释放**: Session 中的 miniProgram 引用会被清除,但 pages 和 elements 缓存保留
|
|
185
|
+
- 💡 **使用场景**: 需要手动操作开发者工具时使用
|
|
186
|
+
|
|
187
|
+
### 相关工具
|
|
188
|
+
|
|
189
|
+
- [`miniprogram_connect`](#miniprogram_connect) - 重新连接
|
|
190
|
+
- [`miniprogram_close`](#miniprogram_close) - 完全关闭
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## miniprogram_close
|
|
195
|
+
|
|
196
|
+
关闭当前小程序会话并清理所有资源,包括断开连接、关闭开发者工具进程(如果是通过 `launch` 启动的)。
|
|
197
|
+
|
|
198
|
+
### 参数
|
|
199
|
+
|
|
200
|
+
无参数。
|
|
201
|
+
|
|
202
|
+
### 返回值
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
{
|
|
206
|
+
success: true,
|
|
207
|
+
message: "Session closed successfully"
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### 错误处理
|
|
212
|
+
|
|
213
|
+
- **清理失败**: 即使部分清理失败,也会尝试完成所有清理步骤
|
|
214
|
+
|
|
215
|
+
### 使用示例
|
|
216
|
+
|
|
217
|
+
```javascript
|
|
218
|
+
// 示例 1: 基础用法
|
|
219
|
+
const result = await miniprogram_close()
|
|
220
|
+
console.log(result.message) // "Session closed successfully"
|
|
221
|
+
|
|
222
|
+
// 示例 2: 完整流程
|
|
223
|
+
await miniprogram_launch({ projectPath: "/path/to/project" })
|
|
224
|
+
// ... 执行自动化操作 ...
|
|
225
|
+
await miniprogram_close() // 清理资源
|
|
226
|
+
|
|
227
|
+
// 示例 3: 错误场景也应该关闭
|
|
228
|
+
try {
|
|
229
|
+
await miniprogram_launch({ projectPath: "/path/to/project" })
|
|
230
|
+
// ... 可能出错的操作 ...
|
|
231
|
+
} finally {
|
|
232
|
+
await miniprogram_close() // 确保资源被释放
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 注意事项
|
|
237
|
+
|
|
238
|
+
- ⚠️ **完全清理**: 会清除 Session 中的所有状态(miniProgram、pages、elements)
|
|
239
|
+
- ⚠️ **进程关闭**: 如果是通过 `launch` 启动的,会关闭开发者工具进程
|
|
240
|
+
- ⚠️ **幂等操作**: 多次调用安全,不会报错
|
|
241
|
+
- 💡 **推荐做法**: 自动化脚本结束时务必调用 `close` 释放资源
|
|
242
|
+
|
|
243
|
+
### 相关工具
|
|
244
|
+
|
|
245
|
+
- [`miniprogram_disconnect`](#miniprogram_disconnect) - 仅断开连接,保持工具运行
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 完整示例:生命周期管理
|
|
250
|
+
|
|
251
|
+
```javascript
|
|
252
|
+
// 完整的自动化脚本示例
|
|
253
|
+
async function runAutomation() {
|
|
254
|
+
try {
|
|
255
|
+
// 1. 启动
|
|
256
|
+
await miniprogram_launch({
|
|
257
|
+
projectPath: "/Users/username/my-miniprogram"
|
|
258
|
+
})
|
|
259
|
+
console.log("✅ 小程序已启动")
|
|
260
|
+
|
|
261
|
+
// 2. 执行自动化操作
|
|
262
|
+
await miniprogram_navigate({
|
|
263
|
+
method: "navigateTo",
|
|
264
|
+
url: "/pages/index/index"
|
|
265
|
+
})
|
|
266
|
+
console.log("✅ 已导航到首页")
|
|
267
|
+
|
|
268
|
+
// 3. 更多操作...
|
|
269
|
+
const result = await page_query({ selector: ".btn" })
|
|
270
|
+
await element_tap({ refId: result.refId })
|
|
271
|
+
|
|
272
|
+
} catch (error) {
|
|
273
|
+
console.error("❌ 自动化失败:", error.message)
|
|
274
|
+
} finally {
|
|
275
|
+
// 4. 清理资源(无论成功失败都执行)
|
|
276
|
+
await miniprogram_close()
|
|
277
|
+
console.log("✅ 资源已清理")
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
runAutomation()
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## 故障排除
|
|
287
|
+
|
|
288
|
+
### 问题 1: macOS 无法找到 CLI
|
|
289
|
+
|
|
290
|
+
**错误**: `WeChat DevTools CLI not found`
|
|
291
|
+
|
|
292
|
+
**解决方案**:
|
|
293
|
+
1. 检查开发者工具是否安装在默认路径 `/Applications/wechatwebdevtools.app`
|
|
294
|
+
2. 如果安装在其他位置,手动指定 `cliPath`
|
|
295
|
+
3. 使用环境变量 `CLI_PATH`
|
|
296
|
+
|
|
297
|
+
### 问题 2: 端口连接失败
|
|
298
|
+
|
|
299
|
+
**错误**: `Failed to connect to WeChat DevTools at port 9420`
|
|
300
|
+
|
|
301
|
+
**解决方案**:
|
|
302
|
+
1. 打开开发者工具 → 设置 → 安全 → 开启服务端口
|
|
303
|
+
2. 检查端口号是否正确(默认 9420)
|
|
304
|
+
3. 确保没有防火墙阻止连接
|
|
305
|
+
4. 尝试使用 `miniprogram_connect` 而非 `launch`(如果工具已手动启动)
|
|
306
|
+
|
|
307
|
+
### 问题 3: 启动超时
|
|
308
|
+
|
|
309
|
+
**错误**: `Failed to launch mini program: timeout`
|
|
310
|
+
|
|
311
|
+
**解决方案**:
|
|
312
|
+
1. 检查项目路径是否正确
|
|
313
|
+
2. 确保项目是有效的小程序项目(包含 app.json)
|
|
314
|
+
3. 尝试手动启动开发者工具,然后使用 `connect`
|
|
315
|
+
4. 检查系统资源(CPU、内存)
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## 技术细节
|
|
320
|
+
|
|
321
|
+
### 连接方式
|
|
322
|
+
|
|
323
|
+
- **launch**: 使用 `automator.launch()` 启动新实例
|
|
324
|
+
- **connect**: 使用 `automator.connect()` 连接现有实例
|
|
325
|
+
- **协议**: WebSocket (ws://127.0.0.1:{port})
|
|
326
|
+
|
|
327
|
+
### 资源管理
|
|
328
|
+
|
|
329
|
+
- **Session**: 全局单例,管理连接状态
|
|
330
|
+
- **自动清理**: 30 分钟不活动自动清理
|
|
331
|
+
- **手动清理**: 调用 `miniprogram_close()` 立即清理
|
|
332
|
+
|
|
333
|
+
### 并发限制
|
|
334
|
+
|
|
335
|
+
- **单连接模型**: 一次只能连接一个小程序实例
|
|
336
|
+
- **串行操作**: 工具调用串行执行(MCP 协议特性)
|
|
337
|
+
|
|
338
|
+
---
|
|
339
|
+
|
|
340
|
+
**相关文档**:
|
|
341
|
+
- [MiniProgram API](./miniprogram.md) - 小程序操作
|
|
342
|
+
- [配置指南](../setup-guide.md) - 环境配置
|
|
343
|
+
- [故障排除](../troubleshooting.md) - 常见问题
|
|
344
|
+
|
|
345
|
+
**最后更新**: 2025-10-02
|