Desktop Hand:为 DSH 提供真实桌面输入与策略约束的文件工具

前言

DeepSeek Harness(DSH)默认擅长在会话工作区内读写代码、跑命令,但模型无法直接「看见」你的显示器、也无法用真实鼠标键盘去操作前台应用。若要做 GUI 自动化、跨工作区读文件、或在桌面环境里逐步点按验证,通常只能另写脚本或接第三方 RPA,和 Harness 里的工具链是割裂的。

下面介绍社区插件 Desktop Hand(维护者 Zero20230619,分类为客户端)。它在 DSH 里注册真实桌面输入与受策略保护的文件操作两套能力,并通过会话授权、审批、限额、紧急停止和审计日志把风险压到可管控的范围。需要说明的是:它不是沙箱,也不是远程桌面协议;Shell 类工具不受其文件策略约束,使用前应通读仓库 README 中的风险说明。

这是什么

Desktop Hand 是 DSH 插件,当前 package 版本为 1.0.0,许可证 MIT,源码与文档在 GitHub 仓库 Zero20230619/desktop-hand。社区目录页:SkillHub — desktop-hand(SkillHub 为独立插件站点,与 DeepSeek / 幻方无官方从属关系)。

插件把能力 deliberately 分成两条线:

  1. 真实桌面输入:观察屏幕(指针、前台窗口、截图)并在物理桌面上移动鼠标、点击、拖拽、滚动、按键、输入文本。
  2. 策略约束的文件操作:读/list 目录、写、移动、删除(默认可恢复的隔离区)、恢复、列出 trash;写/删/移需要单独的 files 授权。

真实输入与文件变更在默认配置下均为关闭,需人类通过 /desktop-hand authorize 等方式授予会话级、带时间与动作预算的权限;审批默认多为 ask。插件以与 DSH 相同的进程权限运行,能触及该进程能触及的资源(策略保护的 path 除外)。

核心功能

桌面输入(input 授权)

模型侧工具命名以 desktop_hand_ 为前缀,典型流程是「看 → 动一步 → 再看」:调用 desktop_hand_screenshot 将 PNG 写到工作区 .desktop-hand/screenshots/,再用 DSH 自带的 read_image 查看路径;每次工具调用只做一次点击、按键、输入或拖拽,然后重新截图验证。

只读观察类工具(如 desktop_hand_get_pointer、desktop_hand_foreground_window)不需要 input 授权,但仍受紧急停止等门控影响。截图消耗 input 授权但不计入动作预算。

文件工具(files 授权)

desktop_hand_read_file、desktop_hand_list_dir 等为只读,受文件系统 zone(只读区、写保护区、protected roots 等)限制。write_file、move_path、delete_path、restore_path 需要 files 会话授权;默认 approval.fileMutations 为 ask,每次变更还需 live 审批(若 DSH 审批被设为 never,相关调用会 fail closed)。

删除默认走 trash/quarantine(可 restore_path 恢复);永久删除需在授权与配置中显式解锁 direct 模式并确认。

控制、审计与安全门

插件共注册 21 个模型可见工具,另提供用户专用斜杠命令 /desktop-hand(不进入模型对话,作为授权与紧急控制的权威路径)。独立 input / files 授权、坐标与次数上限、敏感屏幕区域、全局限额 Pause 紧急热键(Windows 默认,刻意不用 F9)、以及按会话的 JSONL 审计 一并生效。desktop_hand_status、desktop_hand_revoke、desktop_hand_emergency_stop 等在多数状态下仍可用;紧急停止后仅人类可 /desktop-hand resume。

平台支持

平台 真实输入 截图 紧急热键
Windows 10/11 完整 完整 默认 Pause
Linux 尽力(需 xdotool 等) 尽力 无(可用 /desktop-hand stop)
macOS 尽力(需 cliclick 等) 尽力 无
fake 内存模拟 写真实 PNG 无

运行时要求 Node.js ≥ 22、带 profile 的 DSH;Windows 上依赖 PowerShell 5.1 或 7。开发测试在 README 中记录为 Node v26.13.0、Windows 环境。

安装与启用

插件包目录名为 desktop-hand/,内含 index.js、lib/、cordis.patch.yml、desktop-hand.config.json、install.ps1 等。官方推荐用 PowerShell 安装脚本写入 profile 的 node_modules 并在 cordis.patch.yml 插入托管块。

若 DSH 已设置 DSH_PROFILE_DIR,在插件源码目录执行:

pwsh -File .\install.ps1 -ProfileDir "$env:DSH_PROFILE_DIR"

脚本会校验包名、备份 patch、复制到 profile 的 node_modules/desktop-hand,并在 <DSH_HOME>/desktop-hand.config.json 不存在时种子化配置(默认 DSH_HOME 为 ~/.dsh)。完成后需重启 DSH(或等待 profile HMR);配置每次激活只读一次,改 JSON 后也要 reload/重启。

手动安装时:将包复制到 profile 的 node_modules/desktop-hand,并在 cordis.patch.yml 末尾加入 README 中的 insert 行(id / name: desktop-hand),然后重启。

卸载(保留用户 config、审计与 trash 数据):

pwsh -File .\uninstall.ps1 -ProfileDir "$env:DSH_PROFILE_DIR"

开发时可用 DSH 启动器的 --patch 叠加 YAML 覆盖 enabled、provider 等,但 README 强调仍需先把包装进 profile 以解析 @deepseek-ai/* 依赖。

典型用法

README Quick start 建议先在 disposable workspace 里走完一遍,并优先用 input.provider: "fake" 做干跑。

  1. 安装并重启 DSH 后,在用户侧查看状态(始终允许):
/desktop-hand status

确认 provider、删除模式 trash、热键 Pause,以及 input/files 授权均为 none。

  1. 为桌面输入授予短时、有限动作预算(示例:10 分钟、200 次动作):
/desktop-hand authorize input 10 200

若需点击任务栏等敏感区域,可在末尾加 sensitive。

  1. 模型按「截图 → read_image → 单步 click / press_key / type_text → 再截图」循环操作;操作前可用 get_pointer 与 foreground_window 核对坐标与前台标题。

  2. 文件变更需单独授权,例如 5 分钟、50 次动作:

/desktop-hand authorize files 5 50
  1. 随时按 Pause 或执行 /desktop-hand stop;恢复仅人类执行 /desktop-hand resume。

斜杠命令还包含 revoke、tighten(仅可加严 zone / 禁止删除)、policy、help 等,完整语法见仓库 README 的 Slash commands 一节。

适用场景与注意

适合:需要在 DSH 会话里做可控的 GUI 探针、桌面截图驱动的工作流、或在策略圈内对工作区外路径做受审计的文件读写/隔离删除,且操作者愿意承担「模型驱动真实输入」的风险。

务必注意:

  • README 标明 HIGH RISK:非 VM、非独立用户、非 OS 权限边界;bash / pwsh 等 Shell 工具可绕过 Desktop Hand 文件策略(除非启用 policy.enforceOnDshFsTools)。
  • 真实 GUI 自动化(如 Blender)在开发中未做端到端验收;真实应用 acceptance 应视为手动步骤,可先走 docs/ACCEPTANCE.md 与 fake provider。
  • 安装前请自行审阅源码与 MIT 许可证;社区目录星标数为 1(截至目录线索),不代表安全审计结论。
  • 普通工作区编辑仍应优先使用 DSH 内置 read / write / edit,Desktop Hand 文件工具针对的是策略允许范围内的扩展路径与 trash 流程。

结尾

Desktop Hand 把「真实桌面 see-act 循环」和「带 zone、trash、审计的文件工具」收进 DSH 插件形态,用会话授权与人类斜杠命令把默认关死的危险能力按需打开。若你要评估是否接入,可从 fake provider 与 /desktop-hand status 开始,并保留紧急停止习惯。

  • 目录页:https://www.skillhub.cn/plugins/Zero20230619/desktop-hand
  • GitHub:https://github.com/Zero20230619/desktop-hand
羽毛球分组比赛记分
小程序二维码

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

小夜