# jiangchang_desktop_wake 验收(阶段 A:ensure 主路径) 正式对外路径是 **`ensure`**(内部:`activate` → `desktop-wake --mode n2-wake` → `probe`)。 `c2` / `inject` 仅诊断用。 ## 0. 编译(企微先完全退出,含托盘) ```powershell cd D:\OpenClaw\client-jiangchang\jiangchang-platform-kit $env:PYTHONPATH = ".\src" powershell -File src\jiangchang_desktop_wake\native_src\build.ps1 ``` 期望产物(仅这两个二进制进包): - `src\jiangchang_desktop_wake\native\desktop-wake.exe` - `src\jiangchang_desktop_wake\native\wecom_wake.dll`(约 119KB;勿残留 `_b/_c/...`) 然后**再打开企微并登录**。 --- ## A. 冷基线 退出影刀;若刚暖过请**重启企微**。 ```powershell cd D:\OpenClaw\client-jiangchang\jiangchang-platform-kit $env:PYTHONPATH = ".\src" python -m jiangchang_desktop_wake probe --profile wecom ``` | 期望 | 说明 | |---|---| | `warm=false` | 必须是冷树 | | `findall_count` | 通常 2~3 | --- ## B. 主路径 ensure(必验) ```powershell python -m jiangchang_desktop_wake ensure --profile wecom echo ExitCode=$LASTEXITCODE type $env:TEMP\jiangchang_desktop_wake_provider.txt type $env:TEMP\jiangchang_desktop_wake_subclass.txt python -m jiangchang_desktop_wake probe --profile wecom ``` ### 通过标准 | 检查项 | 通过 | |---|---| | ensure 退出码 | **0** | | JSON `warm` | **true** | | `probe_after.findall_count` | **≥ 80**(常见 300+) | | markers | 含 `con_op`、`searchedit` | | 企微 UI | 可点,无「未响应」 | | provider | `done=1` `subclass=1` `dui=1` `lr_client≠0` | | subclass | `method=SetWindowLongPtr`,`ok=1`,`userdata≠0` | ### 失败时 | 现象 | 含义 | |---|---| | `ERROR:WINDOW_NOT_FOUND` | 企微未开或未登录出主窗 | | `skipped:native_helper_missing` / 仍冷 | 未编译 native 或 PYTHONPATH 不对 | | provider 只有 `nudge=1` 无 `findall=` | 跑到了旧 DLL,退出企微后重编 `wecom_wake.dll` | | UI「未响应」 | 停测;勿用 `--mode n2-hook` | --- ## C. 单测(不依赖企微窗) ```powershell cd D:\OpenClaw\client-jiangchang\jiangchang-platform-kit $env:PYTHONPATH = ".\src" python -m unittest discover -s tests/desktop_wake -v ``` --- ## D. 诊断命令(非主路径) ```powershell python -m jiangchang_desktop_wake inject --profile wecom python -m jiangchang_desktop_wake c2 --profile wecom ``` 禁止默认使用:`desktop-wake.exe ... --mode n2-hook`。