DeepSeek Harness 理念是「一切皆插件」。在 WSL 环境中开发智能体时,若要操作宿主机的 Windows 图形界面,通常需要绕过权限隔离或寻找复杂的 IPC 通道。下面介绍 dsh-wsl-uia 插件,它直接从 WSL 内部提供 Windows UI Automation(UIA)的观察与操作能力。
插件定位¶
这是一个由用户 173787247 维护的插件。它允许在 WSL 中枚举顶层窗口,读取受控范围的元素树,并使用基于观测的句柄来识别元素。它属于 dsh-wsl-kit 的一部分。
核心功能¶
该插件提供了以下能力:
- 枚举顶层窗口
- 读取受控范围的元素树
- 支持基于观测的句柄
- 按控件类型和可操作性查找控件
- 通过位置或名称调用控件
安装¶
使用官方提供的命令进行安装:
dsh plugin --profile web add github:173787247/dsh-wsl-uia
典型用法¶
通过 uia_tree 命令进行操作。以下是几种常见的调用方式:
列出所有顶层窗口:
uia_tree action=windows
读取特定进程的元素树结构,限制深度和元素数量:
uia_tree action=tree pid=1234 maxDepth=6 maxElements=200
查找可操作的按钮控件:
uia_tree action=find controlType=Button actionableOnly=true
适用场景与注意事项¶
环境要求¶
- 插件要求 DeepSeek Harness 运行在 WSL 内部。
- 宿主机 Windows 上必须存在标准路径的 PowerShell(插件会自行查找)。
技术细节¶
- 句柄格式:每个元素携带的句柄格式如
1790525657168.6,点号前的数字是观测的时间戳(epoch),这使得基于旧句柄的引用依然可识别。 - 元素索引:在窗口存活时,元素索引不是稳定的唯一标识,两次遍历同一棵树可能会得到不同的索引结果。
- 控件调用:在调用控件时,应优先传递
expectName参数给win_invoke,而不是仅仅依赖位置。
兼容性¶
- 插件版本:
dsh-wsl-uia0.1.0 - 依赖要求:DSH 版本 ≥ 0.1.2
- 运行环境:Node.js >= 18
结语¶
通过这个插件,可以在 WSL 环境中实现跨系统的 UI 操作。更多细节请查阅目录页或 GitHub 仓库。