dsh-gui-agent:DSH 会话级 Windows 鼠标键盘代理与真人模拟输入

前言

在 DeepSeek Harness(DSH)里让模型「操作电脑」,常见做法是接 WebDriver、CDP 或浏览器扩展,事件往往不是浏览器眼里的 isTrusted,页面反自动化策略也会更难绕过。另一类 computer-use 方案往往把点击和按键做成瞬时输入,节奏与人类操作差异明显。

dsh-gui-agent 是社区维护的工作流类插件:在 DSH 对话输入框左侧提供会话级「代理操作」开关。开启后,代理通过 Win32 原生路径获得 Windows 级鼠标、键盘、窗口管理与截屏能力,并默认用贝塞尔轨迹、随机间隔等方式模拟真人输入节奏。下文介绍其定位、能力与安装启用方式;事实以 GitHub 仓库 README 为准。

这是什么

  • 名称:dsh-gui-agent(npm 包名同名,当前版本 0.1.0,MIT 许可)
  • 维护者:ChinXavier
  • 分类:工作流(社区目录 skillhub.cn)
  • 环境要求(package.json):Node >=22,DSH >=0.1.0;仅 Windows(PowerShell 5.1,无第三方依赖)

一句话:给 DSH 输入区加开关;用户手动开启某会话的桌面代理后,模型才可调用九个 computer_* 工具,在真实桌面上点击、打字、切窗、截图并可用 UI Automation 查控件。

核心功能

九个会话级工具

开关关闭时,这些工具不会注册到模型侧工具栏,也没有对应提示段;开启后才惰性注册。

工具 作用
computer_screenshot 截取桌面或单显示器,PNG 作为图片内容块返回
computer_mouse 移动、点击、双击、右键、滚轮、拖拽;危险控件可拒绝
computer_keyboard 文本输入(ASCII 走 VK,中文回落 Unicode)、组合键
computer_window 枚举、激活、最小化/最大化/还原/关闭窗口
computer_wait 等待动画或页面加载
computer_uia UI Automation 按名称/类型找控件,或读坐标处控件
computer_account 窗口标题子串与账号标签映射,切换并校验前台窗口
computer_queue 批量 prompt 队列:add / next / complete / fail / list / clear
computer_downloads 列下载目录、等待新下载,收集到 ~/Pictures/dsh-gui-agent/<账号>

真人模拟输入(与常见 computer-use 的差异)

默认不走「瞬移 + 瞬时按键」:

  1. 原生输入:点击与按键经 Win32 SendInput(SetCursorPos + INPUT),与真实键鼠同路径;不使用 CDP、WebDriver、扩展注入或 DOM 合成事件。
  2. 光标轨迹:两段非对称三次贝塞尔,弧线偏移随机,末端 2–8px 过冲再 2–4 步回拉,单步 ±1px 抖动,耗时按距离约 120–540ms 随机。
  3. 按键节奏:ASCII 用 VkKeyScanW 的真实 VK(含 Shift);非 ASCII 用 KEYEVENTF_UNICODE。字符间隔对数正态;空格 ×0.7、标点 ×1.18;约每 11 字一次长停顿;字母数字约 3% 概率错键后退格。
  4. 点击:按下前 150–500ms 犹豫,按下 45–95ms,连击间隔 70–140ms。

开启开关后,输入框左侧出现节奏下拉:仿真(默认)、便捷(瞬移与快时序)、自定义(0.2–8× 滑杆)。单次调用还可传 instant: true、pace: "fast"、slowdown: 2.5 覆盖。

安全模型

  1. 默认关闭,按会话生效;状态写入 %LOCALAPPDATA%\dsh-gui-agent\state.json,宿主重启后按 12 小时 TTL 恢复,超时失效。
  2. 仅用户能开启;工具不能自行打开开关。
  3. 关闭即注销工具;开关路由使用与 DSH API 相同的 Host/Origin 与浏览器认证(connection.requestRejection)。
  4. 危险控件:点击前 UIA 反查落点;命中「发送 / 提交 / 购买 / 支付 / 下单 / 删除 / 发布 / 分享 / 注销 / 退出登录」及英文同义词时拒绝,需用户同意后带 confirm: true 重试。
  5. 截图外发:屏幕可见内容会发给模型,开启前请确认无敏感画面。

安装与启用

DSH 生态里插件经社区目录或 GitHub 分发,与 DeepSeek / 幻方无官方从属关系。安装前应阅读源码与 MIT 许可证;插件以当前 DSH 进程权限驱动本机输入,权限与风险由使用者自行判断。

安装

在 DSH 插件管理器中:

plugin_manager action=install_bundle target=<本仓库目录或包名>

或在 dsh plugin CLI:

dsh plugin --profile <profile> add github:ChinXavier/dsh-gui-agent

安装后刷新 Web 页面。输入框工具行左侧出现「代理操作」;关闭时仅该按钮,开启后同格内出现仿真 / 便捷 / 自定义下拉。

典型用法(工作流层面)

README 未给出独立脚本示例,典型路径是:用户在某会话打开「代理操作」→ 模型按需链式调用工具,例如:

  1. computer_window 激活目标程序或浏览器;
  2. computer_wait 等待加载;
  3. computer_uia 或 computer_screenshot 定位界面;
  4. computer_mouse / computer_keyboard 操作控件;
  5. 再次 computer_screenshot 核对结果。

多账号场景可配合 computer_account 与 computer_queue 做批量 prompt;下载场景用 computer_downloads 等待并归档到 ~/Pictures/dsh-gui-agent/<账号>。

实现概要(便于排障)

  • Host 入口 index.js:会话状态、路由、惰性注册工具与提示段。
  • 执行层:常驻 powershell.exe -File helper/computer.ps1,JSON-lines 请求/响应;DPI 感知与 GDI 截屏在 helper 内完成。
  • 客户端 client.js:挂载 conversation.input.left 的开关与节奏 UI。

已知限制与适用场景

适合:需要在真实 Windows 桌面上让 DSH 代理操作浏览器或任意 GUI、且希望输入更接近真人、并愿意手动控制会话开关与安全确认的场景。

限制(摘自 README):

  • 仅 Windows;UAC 提权窗口收不到注入输入。
  • DRM / 受保护画面可能黑屏。
  • 每进程仅一个 computerUse 提供者;本插件直接驱动输入,不占用该名额。
  • UIA 对部分 Electron/Chromium 内 Web 内容、自绘控件支持有限。
  • 下载收集按文件名基线比对,同名覆盖行为取决于浏览器。

结尾

dsh-gui-agent 把 Windows 桌面自动化收成 DSH 里会话级、默认关闭的九工具集,并强调 SendInput 原生路径与可调的真人节奏;与工作流类「开开关再让模型动手」的使用方式一致。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye