Skip to content

Commit ad336d3

Browse files
committed
更新备忘录:记录小程序自动化连接修复v8.3五阶段流程+端口发现+铁律
1 parent e6aca51 commit ad336d3

1 file changed

Lines changed: 48 additions & 0 deletions

File tree

开发备忘录.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -933,6 +933,54 @@ MCP配置文件位置:`~/.codeium/windsurf/mcp_config.json`(即 `C:\Users\
933933

934934
---
935935

936+
**v10.3 小程序自动化连接修复(2026-03-08 下午)**
937+
938+
**问题**:小程序蓝本测试报"桥接服务器启动超时",连接automator失败。
939+
940+
**根因分析**
941+
1. 旧版`launch()`在启动时做`cli close`+`cli open`重启,导致模拟器重新初始化(截图显示"模拟器启动失败: TypeError: Failed to fetch")
942+
2. 桥接服务器启动时在`server.listen`回调里做6次重试连接(阻塞18秒),Python端轮询HTTP时`connected`一直是false
943+
3. Python端只检查`connected=true`,但HTTP服务器虽然在监听却还没连上automator
944+
945+
**关键端口发现(极其重要!)**
946+
| 端口 | 用途 | 来源 |
947+
|------|------|------|
948+
| **49492** | 开发者工具HTTP服务端口(CLI命令用) | 设置→安全设置→服务端口 |
949+
| **9420** | automator WebSocket端口(自动化用) | `cli auto --auto-port 9420`指定 |
950+
| **9421** | 桥接服务器HTTP端口(Python↔Node通信) | 代码固定 |
951+
952+
**这三个端口是不同的!** `--auto-port 9420`确实有效,不要和服务端口49492混淆。
953+
954+
**修复方案(launch() v8.3 五阶段流程)**
955+
```
956+
阶段1: cli auto(不重启!避免模拟器崩溃。项目未打开才open+auto)
957+
阶段2: TCP探测WS端口9420就绪(最多20秒)
958+
阶段3: 启动桥接HTTP服务器(不自动连接automator)
959+
阶段4: 等HTTP服务器响应(最多5秒,不管connected状态)
960+
阶段5: POST connect命令主动触发连接(重试8次×5秒=40秒)
961+
```
962+
963+
**修复结果**
964+
```
965+
cli auto 完成 (rc=0)
966+
WS端口 9420 已就绪(第1秒)
967+
HTTP服务器已就绪(0.5秒)
968+
小程序自动化已连接 | 端口:9420 | 第1次 ← 一次就连上!
969+
```
970+
971+
**修改文件**
972+
- `src/controller/miniprogram.py`:重写launch()五阶段+_run_cli()+_check_tcp_port()+_kill_bridge()
973+
- `src/controller/miniprogram_bridge_server.js`:v8.3启动时不自动连接,等POST connect命令
974+
975+
**Git提交**:e6aca51
976+
977+
**铁律补充**
978+
- **不要在launch()里做cli close+cli open重启**:会导致模拟器重新初始化失败
979+
- **桥接服务器启动时不要自动连接automator**:让Python端通过POST主动触发,这样HTTP能立即响应健康检查
980+
- **服务端口≠自动化端口**:设置里的49492是HTTP服务端口,9420是automator端口,别混淆
981+
982+
---
983+
936984
### 下一步目标(v10.4)
937985

938986
#### 优先级1:端到端验证

0 commit comments

Comments
 (0)