前言¶
在 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 的差异)¶
默认不走「瞬移 + 瞬时按键」:
- 原生输入:点击与按键经 Win32
SendInput(SetCursorPos+INPUT),与真实键鼠同路径;不使用 CDP、WebDriver、扩展注入或 DOM 合成事件。 - 光标轨迹:两段非对称三次贝塞尔,弧线偏移随机,末端 2–8px 过冲再 2–4 步回拉,单步 ±1px 抖动,耗时按距离约 120–540ms 随机。
- 按键节奏:ASCII 用
VkKeyScanW的真实 VK(含 Shift);非 ASCII 用KEYEVENTF_UNICODE。字符间隔对数正态;空格 ×0.7、标点 ×1.18;约每 11 字一次长停顿;字母数字约 3% 概率错键后退格。 - 点击:按下前 150–500ms 犹豫,按下 45–95ms,连击间隔 70–140ms。
开启开关后,输入框左侧出现节奏下拉:仿真(默认)、便捷(瞬移与快时序)、自定义(0.2–8× 滑杆)。单次调用还可传 instant: true、pace: "fast"、slowdown: 2.5 覆盖。
安全模型¶
- 默认关闭,按会话生效;状态写入
%LOCALAPPDATA%\dsh-gui-agent\state.json,宿主重启后按 12 小时 TTL 恢复,超时失效。 - 仅用户能开启;工具不能自行打开开关。
- 关闭即注销工具;开关路由使用与 DSH API 相同的 Host/Origin 与浏览器认证(
connection.requestRejection)。 - 危险控件:点击前 UIA 反查落点;命中「发送 / 提交 / 购买 / 支付 / 下单 / 删除 / 发布 / 分享 / 注销 / 退出登录」及英文同义词时拒绝,需用户同意后带
confirm: true重试。 - 截图外发:屏幕可见内容会发给模型,开启前请确认无敏感画面。
安装与启用¶
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 未给出独立脚本示例,典型路径是:用户在某会话打开「代理操作」→ 模型按需链式调用工具,例如:
computer_window激活目标程序或浏览器;computer_wait等待加载;computer_uia或computer_screenshot定位界面;computer_mouse/computer_keyboard操作控件;- 再次
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 原生路径与可调的真人节奏;与工作流类「开开关再让模型动手」的使用方式一致。