地盘光标(dsh-territory-cursor):DSH 桌面代理的一块「地盘」与虚拟光标

前言

在 DeepSeek Harness(DSH)里让代理操作本机窗口时,常见做法是用系统鼠标和键盘:SetCursorPos、SendInput 会把你的光标拽到目标上,你正在另一块屏打字时也会被打断。社区里已有 dsh-desktop-tools-plugin 等方案走这条路。地盘光标(仓库名 dsh-territory-cursor,界面名「地盘光标」)由 wisdom-km 维护,当前版本 0.1.0,思路是划一块矩形「地盘」,在地盘内列出窗口、截图,并对控件做左键或整段赋值,不移动系统鼠标;需要真鼠标时,再单独调用同仓自带的 desktop_step。

下面按定位、工具能力、安装、地盘划分与行为保证介绍,事实以 GitHub 仓库 README 为准。

这是什么

DeepSeek Harness 的客户端类插件(MIT 许可证)。给代理一块屏幕或单屏半边作为操作范围,以及一颗只在地盘里显示的虚拟光标。地盘内的点击与赋值不走 SetCursorPos,也不向系统键盘注入;desktop_step 则借用 dsh-desktop-tools-plugin 0.4.0(EvilOfRed,MIT)的设计思路,在本仓库内自行实现,用系统鼠标操作整块虚拟桌面。package.json 不依赖该 npm 包,运行时也不会加载对方包;许可说明见仓库 NOTICE。

核心功能

地盘内工具(需先在设置页确认地盘)

确认地盘后,注册两个与地盘绑定的工具:

工具 作用
territory_snapshot 列出中心落在地盘矩形内的窗口,并截取该矩形画面
territory_act 对某个 ref 执行一次左键,或把控件值整段替换

二者不移动系统鼠标,不注入键盘;不支持滚动、拖拽、右键、双击。点不了就返回说明,不会自动改走 desktop_step。

全桌面工具(不依赖地盘是否确认)

工具 作用
get_screen_metrics 只读虚拟桌面指标
desktop_click 用真实系统鼠标点击指定坐标
desktop_step 看画面,或对已聚焦输入框做真实键盘输入

desktop_step 会调用 SetCursorPos 和 SendInput;动作集合、监视区阈值等与 dsh-desktop-tools-plugin 0.4.0 对齐(见 NOTICE)。调用前会先向你确认,结束后会告知结果;同一批最多 20 个动作,监视区最多 4 块。文字经 SendInput 的 Unicode 输入,不使用剪贴板。点图标、按钮、任务栏应发 desktop_click 带坐标,不要用按键代替点击。

若桌面配置里仍启用原来的 dsh-desktop-tools-plugin,会与本服注册同名工具,README 建议只保留地盘光标。

安装与启用

插件面向 DeepSeek Harness 0.2 的桌面配置(engines.dsh 为 *,运行时核对 0.2);Node 需 >=22。只装进桌面配置,不要装进网页配置。

安装或更新前,先完全退出 DeepSeek Harness(含托盘)。

桌面配置安装:

dsh plugin --profile desktop add github:wisdom-km/dsh-territory-cursor

已用 GitHub 地址装过的,退出后再执行:

dsh plugin --profile desktop update dsh-territory-cursor

然后重新打开。若依赖是指向本仓库目录的 link:,退出再打开即可,不必再 update。打开后,旁车会在源码比 Territory.exe 新时重新编译。

官方插件市场尚在筹备;当前可通过 GitHub 安装。目录登记见社区 awesome-dsh-plugin 与 SkillHub 条目:地盘光标。

地盘怎么划

第一次启用时,设置页会先询问,确认前不会点任何窗口。

两块及以上屏幕:

  • 按摆放列出(如「左边这块」「右边这块」)并标注分辨率。
  • 默认预选「当前没有鼠标的那一块」,须你点确认才生效。
  • 记住设备名(如 \\.\DISPLAY2)与边界;拔插或换位后设置页会重新问,不按序号硬套。

单屏:

  • 默认右半边,屏幕上显示淡色分界与可点透的地盘边框。
  • 可改为左、右、上、下,或拖动分界。
  • 最大化铺满整屏的窗口中心不在地盘内则不会列入;建议对目标程序用系统「靠右停靠」放到半边。横跨分界或弹窗控件中心出地盘的,相应动作会放弃。

之后可在「设置 → 地盘光标」修改,下一轮才生效新矩形。双屏时你指定一整块屏;单屏时在屏上画矩形——规则相同:只处理窗口中心落在矩形内的顶层窗口。

一轮里怎么干活(地盘内)

README 给出的执行顺序可作为理解代理行为的参考:

  1. 计算地盘矩形(虚拟屏幕坐标,副屏在主屏左侧时可为负)。
  2. 只列出中心在矩形内的顶层窗口。
  3. 读取控件树;截图时排除光标层与地盘边框。
  4. 在目标控件中心绘制虚拟光标(置顶、点透、不激活窗口)。
  5. 优先控件自身的调用、赋值、选择;普通 Win32 控件不行时,再把按下/抬起发给窗口客户区坐标。
  6. 若你的真鼠标在地盘内按下,当前轮立即停止;系统光标留在原地。松开并离开地盘,安静约 1.5 秒后再接下一轮。

行为保证与明确不做

地盘内 territory_snapshot / territory_act

  • 不调用 SetCursorPos,不用 SendInput;不把系统光标换成空白图;不把窗口拉到前台。
  • 赋值走控件路径,不向系统键盘注入。
  • 真鼠标仅移入地盘不停;在地盘内按下会停轮。点不了不退回真鼠标;密码框不读、不点、不写;浏览器、任务栏、Electron 窗口会说明点不了。
  • 地盘外按下:全部松开并安静约 1.5 秒即可继续,光标可留在你一侧;滚轮不暂停。
  • Ctrl+Alt+. 与设置页「停止」共用一把锁;上锁后地盘动作与 desktop_step 均拒绝,截图仍可用。

desktop_step

会移动真实光标并发送真实按键;不调用 SetForegroundWindow。目标不可见、提权窗口或安全桌面会拒绝并写明原因。停止热键可打断正在执行的一步。

不做的事

  • 全屏独占游戏、仅认硬件输入、需管理员权限而插件没有的窗口——遇到即停并说明。
  • 不提供「点不了就占真鼠标」的开关;占真鼠标须显式调用 desktop_step。

插件以当前 DSH 进程权限运行;安装前请自行查看源码与 MIT 许可证。

典型用法(概念)

代理在桌面配置中与Harness 对话时,由模型按需调用工具,例如:

  1. 用 get_screen_metrics 了解虚拟桌面布局。
  2. 用户在设置页确认地盘后,用 territory_snapshot 获取地盘内窗口列表与截图,供模型理解界面。
  3. 对可操作控件发 territory_act(左键或整段赋值),系统鼠标保持不动。
  4. 须点击任务栏、跨地盘窗口,或需要真实键鼠流水线时,在确认后调用 desktop_click 或 desktop_step。

README 核对清单中举了记事本靠右停靠、资源管理器等场景:列出窗口、截图不含虚拟光标、控件操作后系统光标仍不动;你在另一块屏的输入焦点不应被地盘内赋值抢走。

适用场景与注意

适合: 希望在单屏半边或指定显示器上让代理「看屏 + 点控件」,同时继续用真鼠标处理其余区域的用户;需要与全桌面真鼠标能力并存、且由调用方显式区分的 Windows 桌面 Harness 场景。

注意:

  • 仅 Windows(keywords 含 windows);旁车用系统自带 C# 编译器,进程需按每块屏的缩放处理坐标,否则双屏缩放不一致时可能错位。
  • 浏览器内页面点不了时不会偷偷改用真鼠标;要全局操作请用 desktop_step。
  • npm 包名 dsh-territory-cursor 计划在「记事本能点下且系统鼠标停原地」验证后再发;此前以 GitHub 安装为准。

结尾

地盘光标把「代理操作区」和用户鼠标拆开:地盘里是虚拟光标与控件级操作,系统光标可留在你手里;整条桌面自动化则走 desktop_step。Community 目录页:https://www.skillhub.cn/plugins/wisdom-km/dsh-territory-cursor;源码与完整说明:https://github.com/wisdom-km/dsh-territory-cursor。

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

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

小夜