DeepSeek Harness UI 拾取器

前言

DeepSeek Harness(DSH)在处理界面修改需求时,需要明确的定位信息,比如 CSS 选择器、XPath、组件名等。非前端同学往往只能用「那个蓝色的按钮」「右边那个卡片」来描述,而 AI 需要的是 button#submit-order.btn.btn-primary 这类精确信息。

dsh-ui-picker 插件通过一次点击完成这层翻译:在页面上选中目标控件,将它的全部技术细节写入 DSH 的输入框,让模型精准定位要修改的界面元素。

是什么

dsh-ui-picker 是一个 DeepSeek Harness 插件,由维护者 ztlovelsw 开发。它通过浏览器端脚本采集 UI 控件信息,并通过本地 HTTP 桥接服务将结果推送到 DSH 的输入框中。

插件不依赖任何前端框架,支持 React、Vue 2/3 以及常见组件库(Element、Ant Design、Vant、MUI)的组件名识别。

核心功能

一次点击获取全部信息

点击页面上的控件后,插件会采集以下信息:

  • 标签名、id、class、role
  • 文案、placeholder、aria-label
  • CSS 选择器(如 button#submit-order.btn.btn-primary)
  • 绝对 XPath(如 //*[@id="submit-order"])
  • 父级链路
  • 尺寸与位置
  • 关键计算样式(圆角、背景色、字号、字重等)

插件会过滤掉无用的信息(如 display: block、overflow: visible、body ← html),只保留对样式修改有用的内容。

组件识别

插件能自动探测框架组件:

  • React:通过 Fiber 节点获取组件名
  • Vue 2/3:提取组件名
  • 常见组件库:Element、Ant Design、Vant、MUI 等的类名

多选与批量发送

按住 Shift 点击第一个控件进入多选模式,之后点击其它控件继续加选。底部会出现「已选 N 个」面板:

  • Enter 或面板「发送」:合并成一条消息发出
  • Esc 或面板「取消」:丢弃本次多选

可拖动的悬浮按钮

页面右下角有一个玻璃拟态的取景框图标按钮,支持:

  • 拖动:调整位置,位置按站点记忆(localStorage),越界自动夹回
  • 右键:还原到默认位置
  • 单击:进入/退出拾取模式

也可以调用 window.dshUiPicker.resetPosition() 手动复位。

工作方式

插件由三部分组成:

  • 宿主侧(index.js):在 127.0.0.1:17857 起一个只监听本机的 HTTP 服务,接收控件描述、提供长轮询,同时把 picker.js 当静态文件发出去。
  • 客户端侧(client.js):DSH 网页里运行,轮询桥接服务,通过输入框 facade 把文本插到光标处。不渲染任何可见 UI。
  • 页面侧(picker.js):在你自己的页面里运行,负责悬停高亮、点选、采集信息。

桥接服务只传文本,不执行代码、不读写文件,安全性较高。

安装与启用

1. 装进 DeepSeek Harness

git clone https://github.com/ztlovelsw/dsh-ui-picker.git
cd dsh-ui-picker
node install.mjs          # 自动探测 profile,复制插件并写入配置

脚本会复制插件文件到 ~/.dsh/plugins/dsh-ui-picker,备份 profile 的 package.json,追加依赖与 dsh.profile.bundles,然后执行 pnpm install。

不想用脚本,也可以手动配置:

// ~/.dsh/profiles/<profile>/package.json
{
  "dependencies": {
    "dsh-ui-picker": "file:../../plugins/dsh-ui-picker"
  },
  "dsh": {
    "profile": {
      "bundles": ["@deepseek-ai/dsh-base", "...", "dsh-ui-picker"]
    }
  }
}

然后 cd ~/.dsh/profiles/<profile> && pnpm install,重启 DSH。

插件是零依赖的;pnpm install 起不来时,直接把包目录链接/复制到 profiles/<profile>/node_modules/dsh-ui-picker 也能跑。

2. 让页面长出拾取按钮

在页面的 </body> 前加一行:

<script src="http://127.0.0.1:17857/picker.js"></script>

Vite / Next 项目可以放进入口 HTML。

也可以用油猴脚本,把 dsh-ui-picker.user.js 拖进 Tampermonkey。默认匹配 localhost / 127.0.0.1 / file://,要覆盖其它域名,在脚本头加 // @match https://your-dev-domain/*。

或者在控制台临时粘贴 picker.js 全文。

配置

cordis.patch.yml:

- insert:
    - id: dsh-ui-picker
      name: dsh-ui-picker
      config:
        enabled: true
        port: 17857     # 改端口后,页面里的 script 地址也要跟着改

使用步骤

  1. 页面右下角会出现一个玻璃质感的小按钮(取景框图标),或按 Ctrl + Shift + P 开关拾取模式
  2. 点它 → 鼠标划过控件会显示蓝色描边
  3. 点一下目标控件 → 文本出现在 DSH 输入框
  4. 在最后一行「修改需求:」后面补一句话,回车

快捷键

键 作用
Ctrl + Shift + P 开关拾取模式
Shift + 点击 加选(进入多选)
Enter 发送多选结果
Esc 取消拾取 / 丢弃多选

适用场景

  • 需要通过 AI 修改界面样式或布局的开发者
  • 不熟悉 CSS 选择器、DOM 结构的前端协作者
  • 需要快速定位页面元素的调试场景

注意事项

  • 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证
  • 桥接服务只监听 127.0.0.1,只传文本,不执行代码、不读写文件
  • 页面若是 https:// 且部署在公网域名,浏览器可能拦截到本机端口的请求(Private Network Access),本地 localhost 开发不受影响
  • 多标签页同时打开多个 DSH 会话时,拾取结果写入最后挂载的那个会话输入框

结尾

dsh-ui-picker 通过一次点击将页面控件信息转化为 AI 可理解的文本,降低了界面修改的门槛。对于需要频繁与 AI 协作改 UI 的开发者,这个插件能显著提升工作效率。

插件目录页:https://www.skillhub.cn/plugins/ztlovelsw/dsh-ui-picker

GitHub 仓库:https://github.com/ztlovelsw/dsh-ui-picker

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

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

小夜