Files
wx-win-agent/docs/validation/M4-Management-History-2026-09-04.md
T

75 lines
3.5 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.
# M4 联系人、群聊、子窗口与消息能力验证记录(2026-09-04)
## 范围
本次 M4 增加以下 C# 公共能力:
- 子窗口:枚举、按标题查找、双击会话打开、关闭。
- 联系人:切换通讯录、新朋友列表、接受/添加好友、好友列表与详情、修改备注、本人信息。
- 群聊:最近群聊、创建群、增删/邀请成员、成员列表、群名、群备注、群公告、群昵称、`@所有人`。
- 历史与消息动作:任意会话历史消息、转发、发送者资料、从消息添加/删除好友、下载、笔记附件保存、图片 OCR、语音转文字、消息右键菜单。
- 会话动作:删除、隐藏及通用右键菜单。
公开行为参考 wxautox4 官方 `WeChat`、`Chat`、`Message` 文档;C# API 不复制 Python 类型,统一使用强类型快照、`WechatOperationResult` 和 `WxAgentException`。
## 安全边界
- 所有发送、添加、接受、修改、删除、转发、下载/保存等有副作用操作均要求精确确认令牌 `CONFIRM`。
- 删除好友保留 `clearChatHistory` 显式参数;删除会话仍视为不可恢复操作。
- 真机检查只使用“文件传输助手”和只读页面,不操作真实联系人和群聊。
- CLI 的 `m4-smoke` 只输出数量、布尔状态、窗口类型和进程号,不输出联系人、群名、账号标识或消息正文。
## Linux 验证
```text
~/.dotnet/dotnet test tests/node-agent/WxAgent.Core.Tests -c Release --no-restore
Passed: 19, Failed: 0
~/.dotnet/dotnet build WxAgent.sln -c Release -p:EnableWindowsTargeting=true --no-restore
Build succeeded. 0 Warning(s), 0 Error(s)
~/.dotnet/dotnet publish node-agent/WxAgent.Host -c Release -r win-x64 --self-contained true \
-p:EnableWindowsTargeting=true -p:PublishSingleFile=true -p:PublishTrimmed=false --no-restore
Publish succeeded.
```
新增 Core 测试覆盖:确认令牌严格匹配、缺失/错误令牌拒绝、成员名单输入校验、成功结果模型。
## Windows 真机验证
主机:`DESKTOP-EGI7QCK`(微信登录用户会话,非 Session 0)
按发布要求执行:
```text
WxAgent.Host doctor --timeout 30 exit 0
WxAgent.Host inspect-ui --output artifacts-ui-tree.json --timeout 30 exit 0
WxAgent.Host smoke --output artifacts-smoke-ui.json --timeout 30 exit 0
WxAgent.Host m4-smoke --timeout 60 exit 0
```
`m4-smoke` 结果:
```json
{
"subWindowOpened": true,
"historyCount": 3,
"contactCount": 14,
"newFriendCount": 0,
"recentGroupCount": 16,
"accountDetected": true,
"confirmationGuarded": true,
"privacy": "names and account identifiers omitted"
}
```
验证后已关闭双击打开的“文件传输助手”子窗口,并切回微信聊天页;桌面仅保留微信主窗口。
本地脱敏证据位于 `artifacts/m4-2026-09-04/`:doctor、inspect、smoke、M4 smoke 的输出和退出码,以及脱敏 UI 树。
## 结论与限制
- M4 公共 API、取消/超时链路、明确错误码、命令串行化、确认保护、Linux 测试/构建/发布和 Windows 只读真机 smoke 均已完成。
- 涉及真实联系人或群聊的副作用路径未在现有个人账号执行;这是项目安全规则要求,不是缺失的默认行为。它们已通过编译和统一确认门禁检查,后续客户端版本回归应在专用测试账号/测试群中执行。
- 客户端菜单文字、权限、群人数限制和确认弹窗由当前微信版本决定;找不到节点时统一返回 `ControlNotFound` / `UiStructureChanged`,不进行盲目重试。