前言¶
在 DeepSeek Harness(DSH)里做桌面自动化或「看屏操作」时,模型往往只能拿到截图或文字描述,缺少可执行的像素坐标。自行接 OCR、检测模型和点击脚本,还要维护常驻推理进程,集成成本高。下面介绍的 ui-locate-mcp(维护者 citydirector)把本地检测、OCR 与 MCP 工具打包成 DSH 插件:在本地查找屏幕上的 UI 文字与元素,返回精确坐标,并支持定位、点击、输入、滚动及结果校验等组合能力。检测与动作均在本地运行;首次准备会下载 Python 依赖和约 80 MB 的检测模型,由持久化服务做推理,轻量 MCP 进程转发请求。
这是什么¶
ui-locate-mcp 是 Screen locator MCP 插件:为屏幕上的文字与图标提供像素级坐标,并以 DeepSeek Harness MCP bundle 形式对外提供工具。npm 包提供插件代码;Python 依赖与模型需通过设置页或 Host 工具单独准备。bundle 内含 MCP 客户端、Host 运行时管理插件,以及 Client 设置页。
分类上在 DSH 插件目录中属于「模型推理」。当前 bundle 的 MCP 可执行路径按 Windows 配置;跨平台 Python 代码并不等同于跨平台 bundle 配置。许可证为 MIT(见 GitHub 仓库)。
核心功能¶
工具分为 MCP 侧与 Host 侧(Host 可能对工具名加命名空间前缀)。README 中列出的能力如下。
| 工具 | 用途 |
|---|---|
locate_text |
查找匹配的 UI 文字及其中心坐标 |
find_all |
返回多个匹配候选 |
detect_elements |
枚举检测到的元素 |
ui_locate_marks |
带编号标记的截图(可选命名网格),便于模型选编号而非猜像素 |
ui_locate_act |
定位、执行动作并尝试校验 |
ui_locate_steps |
按顺序执行步骤并定位失败点 |
ui_locate_windows |
列出顶层窗口(标题、句柄、客户区矩形、是否前台) |
ui_locate_diff |
相对上次调用,屏幕变化区域(矩形,无图像、无 vision token) |
ui_locate_watch |
录制数秒并返回关键帧合成的一张图(裁剪变化区域) |
ui_locate_frames / ui_locate_frame |
列出或获取近期动作帧 |
list_monitors |
显示器尺寸、原点与索引 |
health |
检查服务是否就绪 |
ui_locate_setup |
准备或重建 Python 依赖与模型 |
坐标为绝对屏幕坐标,副屏上可能为负值。monitor 支持 primary、索引字符串、all、window:<title> 或 hwnd:<handle>;UI 移动后需重新定位。
对无稳定文字的目标(游戏物品、工具栏图标等),可用编号标记操作:ui_locate_marks 生成带框编号图,ui_locate_act(mark=…) 点击对应中心;还支持 box、grid、cell 等参数放大区域或按网格选格。除检测框外,标记还包含按几何重复的等尺寸单元格(如背包格、标签页),便于游戏等场景。
指定 window= 时,捕获优先尝试 Windows Graphics Capture,失败则回退 PrintWindow 或监视器裁剪;发送输入前会将目标窗口置前(focus="off" 可关闭)。带 verify="screen" 时可在屏幕稳定后再判定动作效果;ui_locate_watch 与 ui_locate_act(..., watch_ms=…) 用于「先看再动、再看结果」的一体式录制。
环境与依赖¶
- Python 3.12+。设置页准备流程由 Host 发现的 Python 创建独立环境;若找不到解释器,可检查桌面安装是否自带运行时。
- 推理后端:默认 DirectML;可选
cuda、cpu。CUDA 需对应 NVIDIA 环境与更大依赖;切换后端需重建环境。 - DSH 能力:
package.json未声明engines.dsh范围,不保证与所有 DSH 版本兼容;bundle 需要工具注册、MCP 客户端与 settings 服务。
安装与启用¶
桌面 DSH(README Quick start):
- 在 DSH Plugins → Add plugin 中输入
ui-locate-mcp,然后启用。 - 在 Settings 中打开 ui-locate runtime,选择路径与 backend,并完成环境准备;Host 工具
ui_locate_setup提供相同准备路径。 - 准备完成后连接或重新启用
mcp-ui-locate;若 DSH 提示则重启。 - 调用
health,再试locate_text(text="Save")。
Web profile 使用 CLI 时,需先停止实例,改完再重启;桌面侧更推荐 Plugins 页面,且管理 desktop profile 需使用该安装的 CLI 与相同 DSH_HOME:
dsh plugin --profile web add ui-locate-mcp
典型用法¶
按文字定位并点击(monitor 可选):
locate_text(text="Save", monitor="primary")
ui_locate_act(text="Save", action="click", monitor="primary")
无稳定文字时用编号:
ui_locate_marks(monitor="primary")
ui_locate_act(mark=17)
ui_locate_marks(box="1200,40,1500,90")
ui_locate_marks(grid=8)
ui_locate_act(cell="B2")
同一标记图上的编号需在一次 ui_locate_marks 结果内使用;可传 mark_set 避免使用过期标记集。
适用场景与注意¶
适合需要在 DSH 智能体流程里做 Windows 桌面 GUI 自动化、本地 OCR/检测、以及「坐标 + 点击/输入/校验」闭环的开发者。Web profile 可安装 bundle,但当前 MCP 可执行路径面向 Windows 桌面场景;跨平台需求需自行核对 bundle 与运行环境。
插件以 当前 DSH 进程权限 运行,可截屏、发输入并访问本机文件(取决于 Host 与工具实现)。安装前应阅读 GitHub 源码 与 MIT 许可证,确认行为与信任边界符合你的环境策略。
DSH 生态强调「一切皆插件」;社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
ui-locate-mcp 把本地视觉 grounding、OCR 与一系列 Host/MCP 工具收进一个 DSH bundle,让智能体用工具调用而不是纯猜像素来完成桌面交互。更多细节与完整参数说明见仓库 README。
- 插件目录页:https://www.skillhub.cn/plugins/citydirector/ui-locate-mcp
- GitHub:https://github.com/citydirector/ui-locate-mcp