Files
wx-win-agent/docs/validation/WebUI-MCP-single-client-2026-09-19.md
T

70 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Web UI / MCP 单 Client 生产验证记录(2026-09-19)
## 验证范围
通过项目 `.mcp.json` 连接 Windows MCP,在已登录、未锁定的 Session 1 中验证一个真实微信 Client(账号 Rogee)。本轮不验证添加好友和多 Client;只使用白名单对象:文件传输助手、Hao 豪、吉祥三宝、消息测试专用群组。
## 连接与放行
- `.mcp.json` 的 `windows-ui` endpoint:`http://10.1.1.101:8765/mcp`;连接成功。
- Windows `WxAgent.Tray` 在 Session 1 运行;微信版本由 status 报告为 `4.1.13.65`。
- `GET /api/v1/status` 返回 200:service、WeChat、session、window 和 active account binding 均可用,未使用 Session 0。
- UI target `11460:81724928` 与账号 Rogee 绑定,`isBound=true`。
- 本轮在单 Client 的 `service.json` 显式启用 `enableValidationOperations=true`;`local-admin` 凭据获得 `write` 权限。代码默认仍为关闭,普通部署不自动放行写操作。
- capability 当前启用 `session-open`、`sessions-scroll`、`send-text`、`broadcast-text`;两种写能力仅因本机明确授权的 `enableValidationOperations=true` 而开放,普通部署仍保持只读。`group-at-all` 保持 disabled,因为当前 Client 没有注册该独立操作。群消息和受控群发均使用已确认的会话 automation ID。
## 只读结果
- UIA 真实会话列表导出 16 个条目,包含“文件传输助手”“Hao 豪”“吉祥三宝”等。
- 当前会话读取成功为“文件传输助手”。消息 API 返回 200,4 条真实消息,类型为 Text/Merge/File/Text;使用 `includeContent=false` 验证脱敏读取。
- 联系人读取分别命中“文件传输助手”“Hao 豪”“吉祥三宝”;群查询命中“消息测试专用群组”(群 ID 不写入本记录)。
- 名称不唯一/不存在时 API 返回 409 NotFound,`retry=false`;没有自动猜测、跨目标改投或自动重试。
## 写操作结果
### 文件传输助手
- 首次通过服务操作提交的错误 target 格式(联系人 ID `filehelper`)得到 `Unconfirmed / ExecutionFailed`,`hasSideEffects=true`;未重放、未自动重试。
- 随后使用 Windows MCP 在真实微信输入框发送唯一测试标记 `[WxAgent验证] UI 单 Client 发送验证 20260919-0239`;UIA 消息列表出现该消息,写后确认通过。
### 吉祥三宝群
- 使用可见会话 automation ID `session_item_吉祥三宝` 提交 confirmed `send-text`,操作 ID:`c3be6c1e07c14c2f9fdc685357c44993`。
- 结果:`state=Succeeded`、`stage=complete`、`hasSideEffects=true`。
- 相同 idempotency key 重放返回同一 operation ID,没有创建重复操作;验证了幂等防重。
- 微信真实会话列表的“吉祥三宝”预览出现唯一测试标记 `[WxAgent验证] 单 Client 群消息验证 吉祥三宝 20260919-0258`,作为写后 UI 确认。
- `confirmed=false` 的负向请求返回 HTTP 409 `ConfirmationRequired`、`retry=false`,没有执行。
### 多目标文本群发(broadcast-text)
- 原始 HTTP 响应、请求 fixture、能力/授权状态、幂等重放、确认门禁、只读 sessions/messages 响应和 MCP UIA 摘录已保存于 [`evidence/WebUI-MCP-single-client-2026-09-19/`](evidence/WebUI-MCP-single-client-2026-09-19/),其中 `README.md`、`manifest.json` 和 `sha256sums.txt` 说明采集边界、脱敏规则和校验方式。
- 使用真实 Client API 提交 `kind=broadcast-text`,请求携带两个当前可见且唯一的会话 automation ID:`session_item_文件传输助手`、`session_item_吉祥三宝`,并设置 `confirmed=true`、`stopOnError=true`。服务在执行前冻结该名单,不使用联系人 ID 猜测或跨目标改投。
- 首次诊断操作 `7b3a9ff33550489eb7fe50478bbd1155` 曾在文件传输助手成功后因吉祥三宝 `ControlNotFound` 按 `stopOnError` 停止;该记录保留为失败停止和幂等证据,未自动重试。
- 修正 UI 会话切换为可见中心点击,并将等待聊天页从 2.5 秒扩大到 10 秒后,重新部署最新 self-contained Tray。最终验收操作 ID:`463b37b2e0944525af4ded822dddaf8c`;Correlation ID:`33d6e14673834c64b5d470a07687c760`;`state=Succeeded`、`stage=complete`、`errorCode=null`。
- 最终操作冻结同一两个白名单目标:文件传输助手 `Succeeded`、吉祥三宝 `Succeeded`;`stopped=false`、`stopReason=null`。这证明了真实多对象名单冻结、串行逐项发送、两个目标写后确认和成功群发。
- 相同 `idempotencyKey=wxagent-single-20260919-broadcast-final-001` 重放返回同一个操作 ID和相同 `Succeeded` 结果(重放请求 Correlation ID:`858fd45fc16e4b1383909d4d406ae8bc`),没有创建第二次群发。服务 capability 实际返回 `send-text`/`broadcast-text` 为 `implemented=true`、`validated=true`、`enabled=true`、`requiresConfirmation=true`,微信版本 `4.1.13.65`;`group-at-all` 仍为 disabled。
- 群发结束后分别用只读 `GET /api/v1/messages` 查询两个 automation ID 对应会话,均返回 4 条可见消息,并在不记录完整正文的前提下确认本次唯一标记存在(`markerConfirmed=true`)。
### 未通过/保持禁用
- `消息测试专用群组` 当前搜索结果存在多个同名项,使用联系人群 ID 的操作返回 `Unconfirmed / NotFound`;未猜测目标、未重试,仍保持该路径禁用。
- `group-at-all` 独立能力没有注册操作,仍禁用;本轮不宣称已验证 @所有人。
- 添加好友未验证,入口继续禁用。
- 多 Client、跨 Client 故障恢复和远程控制面任务流不属于本轮证据。
## 自动检查
- `cd control-plane && go test ./...`:通过。
- `cd control-plane/web && npm run build`:通过。
- `dotnet test tests/node-agent/WxAgent.Core.Tests -c Release --no-restore`:168 tests 通过。
- `dotnet test tests/node-agent/WxAgent.Service.Tests -c Release --no-restore`:23 tests 通过,包含 `broadcast-text` 冻结、顺序、停止、幂等和后台监听默认关闭覆盖。
- `dotnet build WxAgent.sln -c Release -p:EnableWindowsTargeting=true --no-restore`:0 warnings、0 errors。
- `git diff --check`、Go `gofmt`:通过。
## 风险与后续
- 版本证据不一致已在最终部署中修正:`GET /api/v1/capabilities` 与 status 均报告微信 `4.1.13.65`,send/broadcast 均为 `validated=true`。
- 首次诊断中的错误 target 保留为失败停止证据;没有重试该不确定操作,修复后使用新的显式幂等键完成最终成功验收。
- 早期诊断曾出现 60 秒 sessions 队列超时;修复后连续 3 次 sessions 刷新均 HTTP 200、约 2.1–2.3 秒,且两个目标的只读 marker 回读均成功,不再作为本轮验收阻塞项。
- 当前验证模式只应留在这台明确授权的单 Client;未授权部署必须保持默认只读。