feat(desktop-wake): add WeCom UIA warm-tree and ship n2-wake in 1.2.3
All checks were successful
Publish Python Package to Gitea / publish (push) Successful in 29s

Expose ensure_ui_ready via DuiLib GetAccessible inject path; package x86 native helpers for host/skill consumers.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-02 08:42:38 +08:00
parent 3dc46b0555
commit 71091e38a9
29 changed files with 3088 additions and 3 deletions

View File

@@ -0,0 +1,90 @@
# 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`。