fix: expand local session results and reject unsafe search targets
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
# 本地会话搜索与指定会话监听回归(2026-09-05)
|
||||
|
||||
## 验收环境
|
||||
|
||||
- Windows 10.0.19044,微信 4.1.13.63,交互式 Session 1。
|
||||
- 验证包:`releases/search-final-2/WxAgent.Host.exe`。
|
||||
- SHA-256:`C70EFB6DF2F3D222C773125A1305698E0443FA58DB1F56EB774850B94D4D343F`。
|
||||
- 本次仅完成搜索修复和命名独立窗口基线回归,不代表 M2/M3/M6 全阶段验收完成。
|
||||
|
||||
## 搜索行为与结果
|
||||
|
||||
- 限定 `search_list` 内的本地分类;联系人/群聊的“查看全部(N)”先展开,结果不完整则拒绝选择。
|
||||
- 精确名称唯一匹配后,重新定位并确认聊天标题。网络搜索、聊天记录、未知分类不作为会话目标。
|
||||
- 微信将已使用的会话提升至“最常使用”;此分类只接受已验证的名称型本地 ID 或文件传输助手的固定 ID,不接受任意功能/在线/新类型条目。
|
||||
- `session search --query 交流`:原折叠视图仅返回 3 条,修复后返回全部 10 条本地群聊。
|
||||
- 指定的“消息测试专用群组”不在这 10 条内。`session open --query 交流 --name 消息测试专用群组` 明确返回 `ControlNotFound`,没有猜选或点击网络搜索。
|
||||
- 改用完整名称的本地查询:`session open --query 消息测试专用群组 --name 消息测试专用群组` 成功,随后 `session current` 再次确认目标标题。
|
||||
- `doctor`、`inspect-ui`、`smoke` 全部通过。smoke 仅向文件传输助手发送测试标记,目标群发送数为 0。
|
||||
|
||||
## 监听回归与边界
|
||||
|
||||
- 文件传输助手、指定测试群同时使用 `chat monitor --independent`,每个运行 8 秒。
|
||||
- 两进程退出码均为 0;各自 checkpoint 的会话匹配,独立窗口 UI 检查通过,指纹数分别为 4、7。
|
||||
- 本项只验证并行绑定、基线采集和隔离 checkpoint,不证明真实新消息投递、群消息归属、长时间稳定性或完整重连场景。
|
||||
- PowerShell 测试保留进程句柄后读取退出码;缺少 checkpoint 时指纹数为 0,不能把 `$null` 数组算作成功证据。
|
||||
|
||||
## 可重复检查
|
||||
|
||||
- `scripts/windows/Test-LocalSessionSearch.ps1 -Executable <exe> -OutputDirectory <新目录>`。
|
||||
- `scripts/windows/Test-NamedListeners.ps1 -Executable <exe> -OutputDirectory <新目录>`。
|
||||
- Core:72/72 测试通过;全解决方案 Release 构建和 Windows self-contained 发布均为 0 警告、0 错误。
|
||||
- 脱敏验收记录:`evidence/Local-Search-20260905/`。失败的早期候选包保留在本地 `artifacts/`,未冒充最终通过证据。
|
||||
|
||||
后续仍需完成已有计划中的 M2 连续发送、M3 新消息/恢复验收及其他阶段的剩余项目;M6 8/24/72 小时正式验收尚未完成。
|
||||
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"Count": 3,
|
||||
"Rows": [
|
||||
{
|
||||
"Family": "unknown",
|
||||
"IdIsIndex": false,
|
||||
"Category": "other",
|
||||
"CategoryLength": 0,
|
||||
"NameLength": 13,
|
||||
"Exact": false
|
||||
},
|
||||
{
|
||||
"Family": "unknown",
|
||||
"IdIsIndex": false,
|
||||
"Category": "other",
|
||||
"CategoryLength": 0,
|
||||
"NameLength": 11,
|
||||
"Exact": false
|
||||
},
|
||||
{
|
||||
"Family": "unknown",
|
||||
"IdIsIndex": false,
|
||||
"Category": "other",
|
||||
"CategoryLength": 0,
|
||||
"NameLength": 16,
|
||||
"Exact": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"OperatingSystem": "Microsoft Windows NT 10.0.19044.0",
|
||||
"UserInteractive": true,
|
||||
"CurrentSessionId": 1,
|
||||
"Processes": [
|
||||
{
|
||||
"Id": 8912,
|
||||
"WorkingSetBytes": 140099584,
|
||||
"SessionId": 1,
|
||||
"Version": "4.1.13.63",
|
||||
"CanReadMemory": true,
|
||||
"AccessError": null,
|
||||
"HandleCount": 2523,
|
||||
"ThreadCount": 126
|
||||
},
|
||||
{
|
||||
"Id": 11064,
|
||||
"WorkingSetBytes": 9207808,
|
||||
"SessionId": 1,
|
||||
"Version": "4.1.13.63",
|
||||
"CanReadMemory": true,
|
||||
"AccessError": null,
|
||||
"HandleCount": 301,
|
||||
"ThreadCount": 10
|
||||
},
|
||||
{
|
||||
"Id": 17780,
|
||||
"WorkingSetBytes": 8376320,
|
||||
"SessionId": 1,
|
||||
"Version": "4.1.13.63",
|
||||
"CanReadMemory": true,
|
||||
"AccessError": null,
|
||||
"HandleCount": 376,
|
||||
"ThreadCount": 15
|
||||
},
|
||||
{
|
||||
"Id": 2436,
|
||||
"WorkingSetBytes": 1191936,
|
||||
"SessionId": 1,
|
||||
"Version": "4.1.13.63",
|
||||
"CanReadMemory": true,
|
||||
"AccessError": null,
|
||||
"HandleCount": 219,
|
||||
"ThreadCount": 19
|
||||
},
|
||||
{
|
||||
"Id": 14720,
|
||||
"WorkingSetBytes": 987136,
|
||||
"SessionId": 1,
|
||||
"Version": "4.1.13.63",
|
||||
"CanReadMemory": true,
|
||||
"AccessError": null,
|
||||
"HandleCount": 216,
|
||||
"ThreadCount": 13
|
||||
}
|
||||
],
|
||||
"WindowFound": true,
|
||||
"RequiredControls": {
|
||||
"MainView": true,
|
||||
"session_list": true,
|
||||
"chat_message_page": true,
|
||||
"chat_message_list": true,
|
||||
"chat_input_field": true,
|
||||
"tool_bar_accessible": true
|
||||
},
|
||||
"DataRootCount": 1,
|
||||
"Errors": []
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"MessagesSent": 0,
|
||||
"Scope": "Parallel named-window baseline only; not incoming-message delivery or endurance.",
|
||||
"Checks": [
|
||||
{
|
||||
"SessionMatches": true,
|
||||
"ExitCode": 0,
|
||||
"FingerprintCount": 4,
|
||||
"CheckpointSaved": true,
|
||||
"InspectExit": 0,
|
||||
"Index": 0
|
||||
},
|
||||
{
|
||||
"SessionMatches": true,
|
||||
"ExitCode": 0,
|
||||
"FingerprintCount": 7,
|
||||
"CheckpointSaved": true,
|
||||
"InspectExit": 0,
|
||||
"Index": 1
|
||||
}
|
||||
],
|
||||
"Passed": true
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"CurrentExit": 0,
|
||||
"GroupMessagesSent": 0,
|
||||
"BaselineInspectExit": 0,
|
||||
"Success": true,
|
||||
"ExpectedCount": 10,
|
||||
"DoctorExit": 0,
|
||||
"NegativeExit": 1,
|
||||
"OpenExit": 0,
|
||||
"ExpandedCount": 10,
|
||||
"OpenedTargetMatches": true,
|
||||
"OpenError": null,
|
||||
"TargetInKeywordResults": 0,
|
||||
"SmokeExit": 0,
|
||||
"MissingExactTargetRejected": true,
|
||||
"LocalCategoriesOnly": true,
|
||||
"SearchExit": 0,
|
||||
"OpenMessage": null,
|
||||
"BinarySha256": "C70EFB6DF2F3D222C773125A1305698E0443FA58DB1F56EB774850B94D4D343F",
|
||||
"CurrentTargetMatches": true,
|
||||
"InspectExit": 0
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"scope": "M1",
|
||||
"doctorErrors": [],
|
||||
"output": "C:\\Users\\Rogee\\wx-agent\\search-final-2-validation\\smoke-ui.json",
|
||||
"nodes": 287,
|
||||
"sanitized": true,
|
||||
"sentTo": "file-transfer-assistant",
|
||||
"Fingerprint": "8b823b27c22472a27bf884be2ca7a5b9083f04cfdc5fbb2e895b165b5897a0fc",
|
||||
"confirmed": true
|
||||
}
|
||||
Reference in New Issue
Block a user