pureexe/dsh-windows-remote-ssh: 通过 SSH 远程控制 Windows 桌面

前言

DeepSeek Harness (DSH) 的核心设计理念是「一切皆插件」。在进行远程自动化操作时,通常需要安装特定的桌面控制软件或使用 RDP。pureexe/dsh-windows-remote-ssh 插件解决了这个问题:它允许 DSH 通过 SSH 连接到一台 Windows 机器,并提供与本地 dsh-click 插件相同的工具面。这意味着你可以在 Linux、macOS 或 Windows 上运行 Harness,而对端只需运行 Windows 和 SSH 服务器即可。

核心功能

该插件为 DSH 添加了一组远程控制工具,主要能力包括:
* 应用管理:列出正在运行的应用(app_list)以及启动指定应用(app_launch)。
* 屏幕操作:截图(screen_shot)以及通过 UI Automation 读取屏幕内容(screen_read)。
* 输入交互:模拟鼠标点击、键盘输入、滚动和按键(click, type, scroll, key)。
* 安全与隔离:
* 所有修改操作(输入交互)默认需要批准。
* 默认不窃取鼠标/键盘焦点(除非显式允许)。
* 拒绝过时的观察结果。
* 检查进程身份。
* 无代理部署:目标机器上无需预装任何代理或第三方模块。

安装与启用

通过 DSH 的插件管理命令安装:

dsh plugin --profile web add "github:pureexe/dsh-windows-remote-ssh#main"

安装后,需要在配置文件中指定连接信息。示例配置如下(通常在 cordis.patch.yml 中):

- insert:
    - id: dsh-windows-remote-ssh
      config:
        ssh:
          host: <ip_address>
          user: <username>
          # 推荐使用私钥而非密码
          # privateKeyPath: /path/to/id_ed25519
        autoApproveWindows: ['^Notepad']

使用方式

连接信息可以通过配置文件、环境变量或工具调用时的参数指定。

1. 配置默认连接
在 config.ssh 中设置 host、user 和 password 或 privateKeyPath。这样在工具调用时可以省略 ssh 参数,直接使用默认目标。这种方式推荐用于固定的目标机器。

2. 按需指定目标
在工具调用时直接传入 ssh 参数。参数包括 host、port、user、password 或 privateKeyPath。这适合目标不固定或对话中动态变化的情况。注意,这种方式会将凭证暴露在对话上下文中。

3. 使用环境变量
利用环境变量 SSH_HOST、SSH_PORT、SSH_USER、SSH_PASSWORD、SSH_KEY_PATH、SSH_KEY_PASSPHRASE 来传递凭证,避免将敏感信息写入配置文件或日志。

4. 工具加载策略
默认开启 lazyToolLoading,启动时只注册 pc_control 工具。后续调用该工具后才会注册其他工具。如果需要一次性注册所有工具,请设置 lazyToolLoading: false。

5. 特殊场景配置
* 游戏与 UWP 支持:对于忽略消息队列的游戏或 DirectX/UWP 应用,使用 hardware: true 参数以绕过 UI Automation 限制。
* 强制前台:如果必须将窗口带到前台,使用 focusFallback: 'allow' 显式允许。

环境要求与注意事项

在使用前,请确认目标机器和 Harness 环境满足以下条件:

  • 目标机器:
    • 目标账户必须是本地管理员,并且必须处于交互式登录状态(即已解锁控制台或 RDP 会话)。
    • 目标机器上必须安装并运行 Win32-OpenSSH (sshd)。
  • Harness 环境:
    • Harness 运行环境需要 Node.js 版本 ^22.19.0 || >=24.0.0。
  • 运行机制:
    • 插件首次使用时会通过 SFTP 将一个 PowerShell 辅助脚本上传到目标机器。
    • 脚本通过一个一次性计划任务在目标用户的真实桌面会话中运行,从而避免 Session 0 的隔离问题。
    • 通信基于 SFTP 的 JSON 文件请求/响应,避免控制台编码问题。

总结

pureexe/dsh-windows-remote-ssh 插件为 DSH 提供了一套成熟的远程 Windows 控制方案。它复用了本地自动化工具的安全模型和操作逻辑,同时通过 SSH 实现了跨平台的远程执行能力。对于需要通过代码控制远程 Windows 机器的开发者来说,这是一个直接可用的工具。

  • 插件主页:https://www.skillhub.cn/plugins/pureexe/dsh-windows-remote-ssh
  • 源码仓库:https://github.com/pureexe/dsh-windows-remote-ssh
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜