dsh-computer-use:让 DSH 在 Windows 上按纪律操作本机

前言

在 DSH 里跑智能体时,常见做法是交给 Shell 或脚本去改文件、调命令。真正要「看屏幕、点窗口、填表单」时,纯文本通道往往不够用:要么只能描述坐标,要么把键鼠交给模型直接模拟,风险和可验证性都成问题。

dsh-computer-use 是社区维护的 DSH 插件,把桌面与浏览器操作收成一整套工具,并固定为「观察 → 计划 → 执行 → 验证 → 留痕」的流程。不可逆动作走 Windows 原生模态确认;默认尽量不抢你的鼠标和键盘。下文按安装、能力、安全与配置说明用法。

这是什么

插件全名 dsh-computer-use(npm 包名同),仓库 mount9527/dsh-computer-use,作者李峰(GitHub:mount9527)。当前发布版本 0.4.1,许可证 MIT,仅支持 Windows(package.json 中 os: ["win32"])。

定位不是「一键代点鼠标」,而是把结构化读屏(UI Automation、OCR)、受控键鼠注入、文件批量与审计撤销,以及 CDP 浏览器通道,挂到 DSH 的 ctx.tools 与系统提示词槽位 TOOL_COMPUTER_USE 上。其它 harness(如 WorkBuddy)不能直接装;需改造成 MCP 等形态才谈得上移植,README 已写明。

核心功能

工具一览

README 列出 17 个工具,按风险分级(L0–L3)。常用分组如下。

类别 代表工具 作用摘要
环境与读屏 computer_status、computer_screenshot、computer_windows 系统/屏幕/前台窗口自检;截图 + Windows OCR 出带坐标文字
UI 与等待 computer_ui、computer_wait 读可访问性树,按 role/name 操作元素;轮询等待窗口/控件/文件
键鼠与应用 computer_input、computer_app 注入键鼠(L1/L2);启动/切前台/关窗/结束进程(含 L3)
文件与审计 computer_files、computer_audit list/mkdir/copy/move/rename/delete/undo;读审计与可撤销批次
治理 computer_pause、computer_tools 总闸冻结改动类动作;lite/lazy 预设下按需加载工具组
浏览器(CDP) browser_status、browser_open、browser_read、browser_act、browser_wait、browser_close 独立浏览器内 DOM 操作,不碰系统鼠标键盘

装好后可直接用自然语言驱动,README「30 秒上手」表示不必背工具名,例如:查本机状态、按月份归档下载夹发票、用 UI 自动化点「确定」、在浏览器里填表但不提交、按 runId 查审计并撤销。

工具集预设

上下文成本高时,可在 state.json 的 toolMode 或页面右下角设置里切换:

  • full(默认):17 个工具全注册
  • lite:核心 + 桌面 + 文件,不含浏览器/审计/真键鼠
  • lazy:仅 computer_status、computer_pause、computer_tools,需要时再 computer_tools action=enable group=... 当场加载

改 toolMode 需重载插件;只启用某个分组不必重载。

界面与急停

Web 会话刷新后,页面右下角有「停止」与「设置」浮钮(依赖 webServer.tapIndex;缺失时只影响浮钮,工具仍可用)。设置页可调总开关、急停时长、确认与批量阈值、文件作用域、应用白名单、浏览器路径、审计/截图/隔离区保留期等;安全硬红线不能被设置页关掉。

按 Esc 或点「停止」,当前任务中断,默认 60 秒内改动类动作被拒(stopHoldMs 可配)。

安全模型

四级风险在 README 中有明确定义:

L0 只读    → 直接执行
L1 可逆    → 直接执行
L2 有副作用 → 先说明再执行并报告
L3 不可逆  → 原生模态确认,用户点「执行」才继续;30 秒无操作视为拒绝

L3 确认由 scripts/desk.ps1 的 confirm 动作弹出 WinForms 模态窗:完整路径/清单、默认焦点在「取消」、一次性 SHA256 凭证防「所见非所执行」、无交互桌面则 fail closed。

代码层硬红线包括:系统目录路径拒绝、危险组合键拒绝、密码框键入拒绝、未观察过的坐标点击拒绝、受保护进程禁止结束、删除默认移入隔离区可 undo(permanent:true 才不可撤销)等。插件还向模型注入 Operator 行为契约(四级风险、执行循环、反模式禁令等)。

桌面动作通过宿主进程派生 PowerShell 子进程 执行:DSH 自带的 pwsh/bash 工具处于低完整性沙箱,无法可靠 SetCursorPos 或跨进程 UIA;这是架构上的刻意选择。

安装与启用

环境要求:Windows 10/11、系统自带 Windows PowerShell 5.1、.NET Framework 4.x;OCR 依赖系统语言包(中文环境通常已有 zh-Hans-CN)。Node >= 20(见 package.json)。

从 npm(推荐):

dsh plugin --profile web add @li666/dsh-computer-use

从 GitHub 仓库:

dsh plugin --profile web add github:mount9527/dsh-computer-use

桌面版 DSH 将 --profile web 换成 --profile desktop。

安装后须 完全退出 DSH 再启动(仅关窗口、托盘仍运行则不会加载新插件),浏览器会话 F5 刷新。建议让智能体调用一次 computer_status,确认输出中含:能力:UI 自动化=可用 OCR=可用 原生弹窗=可用 鼠标键盘注入=可用(以你本机实际自检为准)。

开发时改 index.js / lib/*.mjs 可用 plugin_manager set_plugin 开关插件做热重载;只改 scripts/desk.ps1 每次调用会重读脚本,无需重载。

配置要点

运行期配置写在 %DSH_HOME%\computer-use\state.json(插件未声明 schemastery Config,因本地符号链接安装时解析不到 asar 内包)。README 节选字段含义如下:

  • paused:总闸,true 时只读工具仍可用
  • nonIntrusive:默认 true,不移动物理指针、不抢焦点
  • toolMode:full / lite / lazy
  • stopHoldMs:急停保持时长(默认 60000)
  • confirmTimeoutMs:确认窗超时(默认 30000,超时=拒绝)
  • allowedApps、protectedProcesses、allowRoots、browser 等

设置页保存即时生效;改 toolMode 仍需按上文重载插件。

典型用法与注意

适合谁:在 DSH Desktop 或带 tools + webServer 的 web/CLI profile 上,需要智能体可读屏、管文件、控窗口或在隔离浏览器里填表的 Windows 用户。

使用前请自知:

  1. 插件以 当前 DSH 进程权限 运行,安装前宜阅读仓库源码与 MIT 许可证。
  2. 星标、目录简介等以 SkillHub 目录页 与 GitHub 为准;社区目录为独立站点,不等同于 DeepSeek 官方应用商店。
  3. 拿不准时先做只读操作(computer_status、列窗口、读 UI 树),无副作用。
  4. L3 删除、关窗、杀进程、表单提交等,必须你在弹窗点「执行」;不信任时可保持 computer_pause 或 nonIntrusive。

结尾

dsh-computer-use 把 Windows 桌面自动化收进 DSH 插件形态:结构化观察优先于盲点坐标,验证与审计优先于假设成功,高危动作交给原生确认而不是模型自觉。若你在 Harness 生态里做「能做事、能留痕、能急停」的本机智能体,可从官方 README 的安装命令起步,再用 computer_status 做一次能力自检。

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

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

Xiaoye