前言¶
在 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 给出的执行顺序可作为理解代理行为的参考:
- 计算地盘矩形(虚拟屏幕坐标,副屏在主屏左侧时可为负)。
- 只列出中心在矩形内的顶层窗口。
- 读取控件树;截图时排除光标层与地盘边框。
- 在目标控件中心绘制虚拟光标(置顶、点透、不激活窗口)。
- 优先控件自身的调用、赋值、选择;普通 Win32 控件不行时,再把按下/抬起发给窗口客户区坐标。
- 若你的真鼠标在地盘内按下,当前轮立即停止;系统光标留在原地。松开并离开地盘,安静约 1.5 秒后再接下一轮。
行为保证与明确不做¶
地盘内 territory_snapshot / territory_act¶
- 不调用
SetCursorPos,不用SendInput;不把系统光标换成空白图;不把窗口拉到前台。 - 赋值走控件路径,不向系统键盘注入。
- 真鼠标仅移入地盘不停;在地盘内按下会停轮。点不了不退回真鼠标;密码框不读、不点、不写;浏览器、任务栏、Electron 窗口会说明点不了。
- 地盘外按下:全部松开并安静约 1.5 秒即可继续,光标可留在你一侧;滚轮不暂停。
Ctrl+Alt+.与设置页「停止」共用一把锁;上锁后地盘动作与desktop_step均拒绝,截图仍可用。
desktop_step¶
会移动真实光标并发送真实按键;不调用 SetForegroundWindow。目标不可见、提权窗口或安全桌面会拒绝并写明原因。停止热键可打断正在执行的一步。
不做的事¶
- 全屏独占游戏、仅认硬件输入、需管理员权限而插件没有的窗口——遇到即停并说明。
- 不提供「点不了就占真鼠标」的开关;占真鼠标须显式调用
desktop_step。
插件以当前 DSH 进程权限运行;安装前请自行查看源码与 MIT 许可证。
典型用法(概念)¶
代理在桌面配置中与Harness 对话时,由模型按需调用工具,例如:
- 用
get_screen_metrics了解虚拟桌面布局。 - 用户在设置页确认地盘后,用
territory_snapshot获取地盘内窗口列表与截图,供模型理解界面。 - 对可操作控件发
territory_act(左键或整段赋值),系统鼠标保持不动。 - 须点击任务栏、跨地盘窗口,或需要真实键鼠流水线时,在确认后调用
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。