前言¶
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 分成两条线:
- 真实桌面输入:观察屏幕(指针、前台窗口、截图)并在物理桌面上移动鼠标、点击、拖拽、滚动、按键、输入文本。
- 策略约束的文件操作:读/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" 做干跑。
- 安装并重启 DSH 后,在用户侧查看状态(始终允许):
/desktop-hand status
确认 provider、删除模式 trash、热键 Pause,以及 input/files 授权均为 none。
- 为桌面输入授予短时、有限动作预算(示例:10 分钟、200 次动作):
/desktop-hand authorize input 10 200
若需点击任务栏等敏感区域,可在末尾加 sensitive。
-
模型按「截图 →
read_image→ 单步click/press_key/type_text→ 再截图」循环操作;操作前可用get_pointer与foreground_window核对坐标与前台标题。 -
文件变更需单独授权,例如 5 分钟、50 次动作:
/desktop-hand authorize files 5 50
- 随时按 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