feat: add send connector preflight probes

This commit is contained in:
zhaoyilun
2026-07-10 13:37:08 +08:00
parent b2ce7b0e36
commit 1f99681348
11 changed files with 1307 additions and 25 deletions

View File

@@ -160,7 +160,7 @@ VERIFY_FAILED
## 6. 当前只读 helper op
当前 helper 只支持只读探测类 op。`version``self_check``scan_windows``dump_uia` 是第一阶段窗口/UIA 基线;`probe_client_runtime` 是 C30 为 B 路线发送连接器新增的只读运行时探测。
当前 helper 只支持只读探测类 op。`version``self_check``scan_windows``dump_uia` 是第一阶段窗口/UIA 基线;`probe_client_runtime` 是 C30 为 B 路线发送连接器新增的只读运行时探测`probe_send_entrypoints``probe_send_uia_controls` 是 R6a/C31 为发送连接器新增的只读预检
### 6.1 `version`
@@ -182,7 +182,7 @@ VERIFY_FAILED
```json
{
"helper_name": "ISphereWinHelper",
"helper_version": "0.3.0",
"helper_version": "0.4.0",
"protocol": "isphere.helper.v1",
"runtime": ".NET Framework"
}
@@ -334,6 +334,120 @@ C# helper 文件输出通过未来 `out_path` 参数控制。
该 op 是 C30 的 B 路线入口检查。它暂不等于发送能力,只用于判断后续是否值得做 sidecar / in-process 调用验证。
### 6.6 `probe_send_entrypoints`
用途:对复制或安装目录里的 iSphere / IMPlatformClient 二进制做只读元数据检查,确认 B 路线是否存在文本发送和文件发送候选入口。
这个 op 只做文件存在、版本、SHA256、.NET 反射/字符串元数据检查:
- 不发送消息;
- 不上传文件;
- 不点击、不输入;
- 不注入、不 hook
- 不抓包;
- 不读取聊天内容。
请求示例:
```json
{
"protocol": "isphere.helper.v1",
"request_id": "...",
"op": "probe_send_entrypoints",
"timeout_ms": 15000,
"args": {
"install_dir": "C:\\Program Files (x86)\\Impp"
}
}
```
响应 data 示例:
```json
{
"probe_mode": "read_only_send_entrypoint_metadata",
"summary": {
"entrypoint_count": 7,
"available_count": 7,
"required_count": 5,
"required_available_count": 5,
"all_required_available": true,
"b_route_entrypoint_preflight": "pass"
},
"entrypoints": [
{
"id": "text_high_level_by_jid",
"assembly": "IMPlatformClient.exe",
"type_name": "IMPP.Client.Core.Plugins.Manager.AppContextManager",
"method_name": "SendTxtMessageByJid",
"available": true
}
],
"safety": {
"sent_message": false,
"sent_file": false,
"uploaded_file": false,
"clicked_ui": false,
"typed_text": false,
"captured_network": false,
"attached_hook": false,
"modified_client_data": false
}
}
```
该 op 是 R6a/C31 的 B 路线入口可达性预检。它证明“值得继续做 preview/dry-run”但不等于生产发送能力。
### 6.7 `probe_send_uia_controls`
用途:对指定窗口做只读 UIA 分类,判断 A 路线 fallback 所需的搜索框、接收区、发送编辑区、发送按钮、发送文件菜单和离线发送阻断状态是否可识别。
请求示例:
```json
{
"protocol": "isphere.helper.v1",
"request_id": "...",
"op": "probe_send_uia_controls",
"timeout_ms": 5000,
"args": {
"hwnd": "0x001A0B2C",
"max_depth": 8,
"max_children": 200
}
}
```
响应 data 示例:
```json
{
"probe_mode": "read_only_uia_send_control_classifier",
"flags": {
"has_search_edit": true,
"has_receive_document": true,
"has_send_editor": true,
"has_send_button": true,
"has_file_menu": true,
"offline_blocker_visible": true,
"send_button_enabled": false,
"route_hint": "A_ROUTE_OFFLINE_BLOCKED"
},
"safety": {
"sent_message": false,
"sent_file": false,
"uploaded_file": false,
"clicked_ui": false,
"typed_text": false,
"captured_network": false,
"attached_hook": false,
"modified_client_data": false
}
}
```
该 op 不返回聊天内容。控件名只返回固定 safe label 或是否存在,用于判断后续是否能进入 A 路线 draft-only 预检。
## 7. 后续 op 扩展顺序
必须等真实登录窗口的 UIA dump 被确认后,再扩展真实动作。