6.7 KiB
6.7 KiB
Web UI / MCP 单 Client 生产验证记录(2026-09-19)
验证范围
通过项目 .mcp.json 连接 Windows MCP,在已登录、未锁定的 Session 1 中验证一个真实微信 Client(账号 Rogee)。本轮不验证添加好友和多 Client;只使用白名单对象:文件传输助手、Hao 豪、吉祥三宝、消息测试专用群组。
连接与放行
.mcp.json的windows-uiendpoint: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_吉祥三宝提交 confirmedsend-text,操作 ID:c3be6c1e07c14c2f9fdc685357c44993。 - 结果:
state=Succeeded、stage=complete、hasSideEffects=true。 - 相同 idempotency key 重放返回同一 operation ID,没有创建重复操作;验证了幂等防重。
- 微信真实会话列表的“吉祥三宝”预览出现唯一测试标记
[WxAgent验证] 单 Client 群消息验证 吉祥三宝 20260919-0258,作为写后 UI 确认。 confirmed=false的负向请求返回 HTTP 409ConfirmationRequired、retry=false,没有执行。
多目标文本群发(broadcast-text)
- 原始 HTTP 响应、请求 fixture、能力/授权状态、幂等重放、确认门禁、只读 sessions/messages 响应和 MCP UIA 摘录已保存于
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、Gogofmt:通过。
风险与后续
- 版本证据不一致已在最终部署中修正:
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;未授权部署必须保持默认只读。