前言¶
在 DeepSeek Harness (DSH) 的插件生态中,扩展能力通常通过添加特定功能的插件来实现。对于需要在 WSL(Windows Subsystem for Linux)环境中运行的智能体或脚本,直接控制 Windows 桌面应用是一个常见需求。dsh-wsl-wininput 插件解决了这一痛点,它允许 WSL 中的进程通过 UI Automation 协议操作 Windows 界面。
插件简介¶
dsh-wsl-wininput 是一个 DeepSeek Harness 插件,专注于从 WSL 环境向 Windows 窗口发送输入信号。它主要提供三种操作能力:调用 UI Automation 元素、向指定窗口发送按键,以及在指定坐标点击。该插件运行在 WSL 内部,通过调用本地的 PowerShell 来实现与 Windows 的交互,不会抢夺当前窗口的焦点。
安装与启用¶
安装该插件需要使用 DSH 的插件管理命令。在 WSL 终端中执行以下操作即可完成安装:
dsh plugin --profile web add github:173787247/dsh-wsl-wininput
安装完成后,即可在 DSH 的配置或脚本中调用该插件提供的 win_invoke 命令。
核心功能¶
该插件提供了以下四个核心能力:
- Invoke UI Automation 元素:直接激活特定的界面元素。
- Send keys to chosen window:向目标窗口发送文本输入。
- Send clicks to chosen window:向目标窗口发送鼠标点击。
- Target specific window by PID:通过进程 ID (PID) 精确锁定操作目标窗口。
典型用法¶
使用 win_invoke 命令时,需要通过 action 参数指定具体行为,通过 pid 参数指定目标窗口的进程 ID。
1. 调用界面元素
当需要点击或激活某个按钮时,必须指定元素的名称和类型。expectName 是必填参数。
win_invoke action=invoke pid=1234 expectName="Save" expectType=Button
2. 向窗口输入文本
在目标窗口中输入指定字符串。
win_invoke action=type pid=1234 text="hello"
3. 在窗口指定坐标点击
通过 x 和 y 参数指定点击位置。
win_invoke action=click pid=1234 x=100 y=40
注意事项¶
在使用该插件时,需要注意以下几点以确保操作的准确性:
- 元素匹配的唯一性:元素是通过名称查找的,匹配结果必须是唯一的。如果未找到匹配元素(通常意味着元素已消失)或找到多个匹配项(通常意味着名称过于宽泛),操作将被拒绝,而不是尝试最佳匹配。
- 参数依赖:在使用
invoke操作时,expectName是必填参数。 - 窗口遍历的稳定性:早期版本曾尝试通过 UI Automation 树的索引来定位元素,但测试发现对实时窗口进行多次遍历时,索引位置可能会发生变化,导致误操作。当前版本已移除对索引的依赖,改用更稳定的名称匹配方式。
环境要求¶
该插件对运行环境有一定要求:
- 操作系统:Windows 系统,且已安装 WSL。
- 运行环境:DeepSeek Harness 必须在 WSL 内部运行。
- 依赖路径:PowerShell 需要位于标准路径下,插件会自动查找 PowerShell。
结语¶
dsh-wsl-wininput 插件为在 WSL 中开发的智能体提供了基础的 Windows 界面控制能力。通过 PID 定位窗口和 UI Automation 元素调用,开发者可以构建更复杂的自动化脚本。更多细节可参考插件目录页或 GitHub 仓库。