dsh-webannotate: Click-annotate in the DSH built-in browser and batch assign to conversation

前言

用 DeepSeek Harness(DSH)改前端或审页面时,常见问题很难用文字说清:间距不对、某个按钮太挤、某段文案要换说法。截图加箭头可以指位置,但 agent 仍要猜 DOM 结构;若页面子路由很多,来回描述更费事。另一类做法是在每个项目里注入标注脚本(例如 Agentation 一类方案),需要加依赖、改 HTML,且不一定覆盖本地 dev 和线上同一套流程。

dsh-webannotate 走另一条路:只在 DSH 桌面版内置浏览器里工作,不改被标注站点的代码。维护者是 FleatherYu,在 DSH 社区目录中归类为「联网工具」。下面介绍它做什么、怎么装、怎么用,以及使用时要注意的限制。

这是什么

dsh-webannotate 是 DSH 插件(npm 包名 dsh-webannotate,当前资料中版本为 0.1.1,MIT 许可证)。它在内置浏览器里提供「点元素 → 写一句要怎么改 → 发送全部」的流程;批注作为一条消息进入当前对话,每条批注附带该元素的一张截图。

DSH 桌面版用 Electron 的 <webview> 加载页面,页面与插件 GUI 不在同一 origin,GUI 无法直接读 webview 里的 DOM。插件的 client 半与 <webview> 同处 host 文档,通过 executeJavaScript 注入批注层、轮询批注数据,并用 capturePage 为每条批注截图,因此不需要反向代理、CDP,也不必改目标站点,任意 URL 均可标注。

核心功能

  • 标注模式:在内置浏览器打开页面后,右下角出现「批注」按钮;进入模式后悬停高亮、点击元素弹出评论框,保存后元素右上角显示编号。
  • 列表与管理:数字按钮显示本页批注数量,可打开列表做定位、编辑、删除或清空。
  • 批量发送:「发送全部」将本页批注合并为一条对话消息;消息中含页面 URL、条数、每条可见文本与你的说明,并在资料允许时附带 源码:(开发模式 React _debugSource)或 组件: 链;有 id / data-testid / aria-label / name 时会附带选择器信息。
  • 按页持久化:批注存在 sessionStorage,键为 origin + pathname;同页刷新或切换标签仍保留,不同路径各存各的。
  • Host 能力(结构说明来自 README):index.js 提供 overlay 静态服务、POST /report 与 /batch、GET /status 及 webannotate_status 工具;web/overlay.js 为注入页内的 IIFE + Shadow DOM 批注层。

已知限制(以 README 为准):无法标注跨域 iframe 内元素;关闭内置浏览器面板后 webview 不在 DOM,批注层暂停;SPA 路由切换后旧编号可能无法定位;每条最多一张截图,单批最多 6 张图,超出不发图;元素已不可见时该条静默跳过截图,文字仍会发送。

安装与启用

插件以当前 DSH 进程权限运行,安装前建议在 GitHub 查看源码与 MIT 许可证,确认符合你的环境策略。

从 npm 安装:

dsh plugin --profile desktop add dsh-webannotate

或从 GitHub 安装:

dsh plugin --profile desktop add github:FleatherYu/dsh-webannotate

安装后完整退出并重启一次 DSH(client 半在 host 启动时组装)。随后在右侧栏打开内置浏览器并访问任意页面即可使用。

本地开发插件目录时,可用 link: 挂载(路径替换为你的实际目录):

dsh plugin --profile desktop add "link:/路径/dsh-webannotate"

典型用法

  1. 在内置浏览器打开要审的页面(本地 dev 或已部署站点均可)。
  2. 点右下角「批注」,进入标注模式;移到目标元素上点击,在评论框里写修改意图,Ctrl+Enter 或点「保存」。
  3. 继续标注其他元素;需要时在列表中编辑或删除。
  4. 点「发送全部」,在当前会话里收到类似下面的合并消息(示例格式来自 README):
【网页批注】2 处 · 预算
页面:http://localhost:5173/budget
截图:2 张(编号对应)

1. 「保存」 字号大一点
   源码:src/pages/Budget.tsx:42
2. 「年 · 月」 排到上面去
   组件:BudgetPage > MonthSwitch

agent 可结合截图、可见文本与你的说明定位修改点;你无需在被标注项目中引入任何脚本。

适用场景与注意

适合:在 DSH 桌面版内置浏览器里做 UI 走查、把「指哪改哪」的反馈一次性交给对话里的 agent;不想为每个前端仓库加标注依赖的场景。

注意:仅覆盖内置浏览器顶层文档;iframe、面板关闭、SPA 路由与截图条数限制见上文「已知限制」。DSH 生态理念是「一切皆插件」;社区目录站点与 DeepSeek / 幻方无官方从属关系,本文安装命令与行为均以插件仓库 README 为准。

结尾

dsh-webannotate 把网页上的问题从长段描述收成「点选 + 短句 + 截图批次」,且不动被标站点代码。目录页:https://www.skillhub.cn/plugins/FleatherYu/dsh-webannotate;源码与详细排障:https://github.com/FleatherYu/dsh-webannotate。

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

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

Xiaoye