Skip to content

Commit 0435528

Browse files
committed
docs: 版本回归分析+小程序卡住排查+4项修复确认未丢失
1 parent 8ee17d9 commit 0435528

1 file changed

Lines changed: 103 additions & 0 deletions

File tree

开发备忘录.md

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2620,3 +2620,106 @@ ssh -i $pem $srv "cd /opt/testpilot/app/web && npm run build && sudo cp -r dist/
26202620
- **现象**:SCP上传后 `npm run build` 报 JSX 语法错误(Unexpected token)
26212621
- **根因**:文件末尾有重复的旧代码段(完整的 `</form>` 到第二个 `}` 都重复了一次)
26222622
- **修复**:用 `replace_string_in_file` 删除重复尾部,重新上传重建成功
2623+
2624+
---
2625+
2626+
## 17. 版本回归与未提交修复丢失(2026-03-17)
2627+
2628+
### 17.1 版本对比结论
2629+
2630+
#### 问题描述
2631+
用户反映:3月15日下午4点上传的版本运行正常,但3月17日上传v13.2后感觉"插件不如之前好了",小程序测试时似乎卡住不停止。
2632+
2633+
#### Git历史对比
2634+
2635+
| 版本 | 提交 | 时间 | 说明 |
2636+
|------|------|------|------|
2637+
| **稳定版** | `dff0933` | 3/15 16:45 | chore: switch domain to testpilot.xinzaoai.com |
2638+
| **v13.2** | `8ee17d9` | 3/17 13:32 | HTTPS上线+下载页+导航优化+扩展按钮状态修复+经验库fallback |
2639+
2640+
#### 关键发现
2641+
1. **核心测试引擎代码(src/testing/, src/api/, src/core/)在两个版本之间完全没有改动**
2642+
2. v13.2的改动仅限于:
2643+
- `extension/src/sidebarProvider.ts` — 插件UI优化(启动/断开按钮合并、经验库fallback远程服务器)
2644+
- `web/` — 官网页面(下载页、导航、国际化)
2645+
- `src/auth/` — 认证服务
2646+
- `deploy/` — Nginx配置
2647+
- 文档(备忘录、规划)
2648+
3. **测试执行流程(runTest/stopTest/testComplete/progress)在diff中完全没有出现**
2649+
2650+
#### 结论
2651+
v13.2的提交本身**不应导致测试卡住**。可能的原因:
2652+
- **环境差异**:单位电脑和家里电脑的环境(Python版本、依赖、微信开发者工具版本)不同
2653+
- **小程序测试长脚本**:蓝本步骤多时AI调用耗时长,看起来像"卡住"但实际还在跑
2654+
- **网络波动**:AI API偶发超时(30秒timeout),多个超时叠加可能导致看起来很久不动
2655+
2656+
### 17.2 ⚠️ 3月14日未提交的修复已丢失
2657+
2658+
以下修改在3月14日会话中做了但**未提交到Git**,被v13.2覆盖:
2659+
2660+
| 修改 | 文件 | 作用 | 状态 |
2661+
|------|------|------|------|
2662+
| OCR prompt改英文 | `desktop_blueprint_runner.py` | 解决OCR只返回标题"Todo App"的问题 | ❌ 丢失 |
2663+
| 弹窗按钮跳过预分析缓存 | `desktop_blueprint_runner.py` | 解决OK/Yes等弹窗按钮用旧坐标点不到 | ❌ 丢失 |
2664+
| 弹窗必须关闭规范 | `.windsurf/workflows/blueprint.md` | 蓝本规范新增弹窗铁律 | ❌ 丢失 |
2665+
| TodoApp蓝本弹窗关闭步骤 | `todo-demo/testpilot.json` | 蓝本在弹窗后加OK/Yes关闭步骤 | ❌ 丢失 |
2666+
2667+
**铁律:做完修改必须立即git commit,不能只改不提交。跨会话/跨设备同步全靠Git。**
2668+
2669+
### 17.3 需要重新实施的修复清单
2670+
2671+
以下修复需要在下次会话中重新做:
2672+
2673+
1. **OCR prompt改英文**`desktop_blueprint_runner.py` `_get_text`方法)
2674+
- 原prompt: `"请识别这张截图中所有可见的文字内容,逐行列出。只输出文字内容本身,不要加任何解释或格式。"`
2675+
- 新prompt: `"List ALL visible text in this screenshot, line by line. Include every button label, list item, input placeholder, status bar text, and title. Output ONLY the raw text, no explanation."`
2676+
- 同时 `reasoning_effort``"minimal"` 改为 `"low"``timeout` 从 20 改为 30
2677+
2678+
2. **弹窗按钮跳过预分析缓存**`desktop_blueprint_runner.py` `_smart_tap`方法)
2679+
- 新增类变量 `_DIALOG_BUTTONS = {"name:OK", "name:Ok", "name:Yes", "name:No", "name:Cancel", "name:Close", "name:确定", "name:取消", "name:是", "name:否", "name:关闭"}`
2680+
- `_smart_tap` 开头判断:如果target是弹窗按钮,跳过预分析缓存,直接走UIA→AI视觉实时定位
2681+
2682+
3. **蓝本规范更新**`.windsurf/workflows/blueprint.md`
2683+
- desktop专用注意事项新增:弹窗触发后必须加click步骤关闭弹窗
2684+
2685+
4. **蓝本弹窗步骤修复**`todo-demo/testpilot.json`
2686+
- "重复添加检测"场景截图后加 click name:OK + wait 300
2687+
- "空输入验证"场景截图后加 click name:OK + wait 300
2688+
2689+
### 17.4 纠正:4项修复并未丢失
2690+
2691+
经检查当前v13.2代码,备忘录17.2中列出的4项"丢失修复"实际**已存在于当前版本**
2692+
- OCR prompt英文版 ✅(`_get_text`中已是英文prompt + `reasoning_effort="low"` + `timeout=30`
2693+
- 弹窗按钮跳过预分析缓存 ✅(通过AIHub的`DIALOG_BUTTON_KEYWORDS`统一管理)
2694+
- 蓝本规范弹窗铁律 ✅(`.windsurf/workflows/blueprint.md`已有)
2695+
- 蓝本弹窗关闭步骤 ✅(`todo-demo/testpilot.json`已有`name:OK`步骤)
2696+
2697+
这些修复在v12.x-v13.x的开发过程中已被合并。
2698+
2699+
### 17.5 小程序测试"卡住"分析
2700+
2701+
#### 用户反馈
2702+
3月15日安装的插件运行小程序测试顺畅,3月17日v13.2插件运行时感觉卡住不停止。
2703+
2704+
#### 对比结果
2705+
稳定版可能是`5f08b64`(3/13 v11.0-C),按钮文字为"断开引擎"(红色)。v13.2改为"一键连接/断开"单按钮。
2706+
2707+
`5f08b64``8ee17d9`(v13.2),`miniprogram_runner.js`的主要改动是加了`withTimeout`超时包装(来自`1eaf274` iOS真机测试提交):
2708+
- `mp.currentPage()` → 8秒超时,超时返回null
2709+
- `mp.evaluate()` → 8-10秒超时
2710+
- `mp.screenshot()` → 8秒超时
2711+
- `page.callMethod()` → 8秒超时
2712+
2713+
**潜在风险**`currentPage()`超时后page=null,后续`page.$(...)`会报错。但这不一定是卡住的根因,也可能是环境差异或偶发网络问题。
2714+
2715+
#### 结论
2716+
暂不修改,直接安装最新插件运行,有错改错。如果再次出现卡住,重点排查:
2717+
1. `withTimeout`超时后page=null导致的空指针
2718+
2. Node进程异常退出但Python端未检测到
2719+
3. 微信开发者工具automator连接不稳定
2720+
2721+
### 17.6 弹窗自愈机制(三层防御)—— 待实现
2722+
2723+
详见13.21节的设计。优先级:
2724+
- **第2层(检测+自愈)**最重要:步骤失败时截图分析是否有弹窗,自动关闭后重试
2725+
- **第3层(场景跳过)**兜底:连续失败N步时跳到下一场景

0 commit comments

Comments
 (0)