dsh-ui-annotate:在 DSH 里圈选界面,把改动需求整理成结构化输入

前言

在 DSH 里让智能体改界面时,常见做法是口头描述「把左边那个卡片标题调大」「这块挪到右边一点」。模型看不到你指的位置,容易改到相邻组件,或者 CSS 选择器不唯一。开发者工具能给出 DOM 信息,但把路径、坐标和意图拼成一条可执行的请求仍然费时。

dsh-ui-annotate 是运行在 DSH 客户端上的纯前端插件:在界面上拖框圈选区域,用自然语言写想改成什么样,插件自动整理成带唯一 CSS 路径、视口坐标和框内子元素列表的「界面调整请求」,插入输入框草稿,由你确认后再发送。

这是什么

  • 定位:客户端 UI 圈选与标注插件,把「改哪里、改成什么」结构化后写入会话输入框。
  • 维护者:loiter1EM(npm 包作者字段为 loiter)。
  • 当前版本:0.1.2(MIT 许可证,Node >= 20)。
  • 宿主侧:lib/index.js 为空,不访问文件系统、不截图、不上传数据,也不新增端口或进程。

插件通过 Cordis 补丁挂到输入框工具行左侧插槽 conversation.input.left,依赖 @deepseek-ai/dsh-client-ui-slots,平台为 web。

核心功能

圈选与元素解析

  1. 输入框左侧会出现裁剪图标按钮,悬停提示「圈选改这里」。
  2. 点击后全屏变暗,拖动矩形框选;实时显示宽 × 高,Esc 取消。
  3. 松手后以框中心做命中测试,必要时向上收拢到能覆盖整个框的容器(仅在覆盖率确实提升时上移)。
  4. 提取并写入消息的内容包括:
    - 向上拼接到全页唯一命中为止的 CSS 路径(有 id 也会校验唯一性);
    - 祖先链、元素在视口中的实际位置、框选区域占该元素的百分比;
    - 框内更小元素(按覆盖面积排序)、class、role / aria-label、文本、data-*、当前样式。

消息中会区分「元素实际位置」与「请落在这个坐标范围内」,减少改动落到相邻元素的情况。

描述改动与可选「标记目标位置」

圈选结束后弹出面板,标题为「我想把它改成……」,并展示实际位置与覆盖比例;回车换行,用「发送」确认。

若需要移动位置但说不清目标在哪,可点面板里的「标记目标位置」再拖一次框。最终消息会附带目标框坐标、相对元素中心点的位移(dx/dy,正数向右/向下)以及尺寸差异;支持「重画」「清除」,不标记则与未使用该功能时行为一致。

点「发送」后,整理好的内容只插入输入框草稿,不会自动提交,你还可以继续编辑。

0.1.2 起支持上述「标记目标位置」,并修复了框选位置与实际改动位置不一致的问题。

安装与启用

在终端执行官方安装命令(web profile):

dsh plugin --profile web add dsh-ui-annotate

安装后完全退出并重新打开 DSH NEXT。客户端插件的 bundle 仅在启动时重新扫描并重算 rev,热重载不足以加载新插件。

成功后,输入框工具行左侧会多出一个裁剪图标按钮。插件不依赖宿主侧能力,也不申请额外权限。安装前可按习惯查看 GitHub 仓库 源码与 MIT 许可证;插件以当前 DSH 进程权限运行,行为以仓库说明为准。

典型用法

下面步骤对应 README 中的可复现流程。

  1. 打开需要调整的 DSH 页面,点击输入框左侧的圈选按钮。
  2. 在目标 UI 上拖出矩形框,松手后在面板里用自然语言写期望效果(例如字号、颜色、文案)。
  3. 若涉及位移,在面板中「标记目标位置」再框一次目标区域。
  4. 点「发送」,检查输入框里生成的草稿,必要时增补说明,再自行提交给智能体。

生成消息的大致结构如下(节选,与仓库示例一致):

【界面调整请求】我想修改 DSH 界面上的这个位置。

- 目标元素(CSS 路径): `section#settings-card`(该路径在全页唯一命中此元素)
- 元素: <section>
- 祖先链: body > div#app > main
- 元素实际位置(视口坐标): x=560 y=180 w=320 h=96 / 视口 1440×900 @2x
- 框选区域(视口坐标): x=572 y=192 w=290 h=72 —— 占该元素的 88%
...

我想改成: 标题再大一点,说明文字换成浅灰

智能体收到的是带选择器与坐标的约束说明,而不是模糊的「上面那块」。

适用场景与注意

适合谁

  • 经常在 DSH 对话里请求改界面样式或布局的开发者。
  • 希望把 DOM 上下文一次性交给模型、减少来回澄清的场景。
  • 需要在 web 客户端使用、且接受「只改草稿、不自动发送」工作流的用户。

注意

  • 仅面向 web 客户端(dsh.client.platform: web),安装命令需带 --profile web。
  • 坐标与覆盖率依赖当前视口与页面状态;窗口尺寸或缩放变化后,应重新圈选。
  • 社区目录 SkillHub 条目 与 GitHub 为独立来源,与 DeepSeek / 幻方无官方从属关系;版本与功能以仓库 README 与 package.json 为准。

结尾

dsh-ui-annotate 把「指哪改哪」落成可核对的选择器、坐标和改动描述,留在你的手心里完成发送。若要安装或查看最新说明,可访问 SkillHub 插件页 或 GitHub:loiter1EM/dsh-ui-annotate。

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

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

小夜