dsh-annotated-browser:在真实页面上标注并把说明送进对话

前言

在 DSH 里让模型改「网页上这一块」,通常要同时解决两件事:页面能看见,且能精确指向是哪个元素或区域。侧栏自带浏览器若直接嵌远程 URL,常被 X-Frame-Options 或 CSP 的 frame-ancestors 挡住;即便能显示,跨源也无法稳定读取 DOM,对话里往往只能贴截图或口头描述,模型还要猜布局。

dsh-annotated-browser 面向上述场景:在宿主机用 headless Chromium 渲染页面,再从 DSH 同源代理出 HTML,使侧栏与页面同源,从而点击元素或框选区域,把选择器、可见文本、矩形与备注一并送入会话。

这是什么

  • 名称:dsh-annotated-browser(DeepSeek Harness 客户端插件)
  • 维护者:KirinKylin-1
  • 分类:客户端(platform: web,注入右侧栏与会话相关 UI)
  • 许可证:MIT

插件在 DSH 侧栏浏览器中提供标注能力:通过同源主机代理渲染页面后,点击元素或拖拽区域,将备注写入对话。模型收到的是选择器、可见文本与矩形信息,而非需要猜测含义的截图。

核心功能

同源代理,提高可嵌入与可标注性

部分站点禁止被 iframe 直接加载远程地址。本插件不在侧栏里直连远端 URL,而是在宿主机用 headless Chromium 执行页面,再把结果从 DSH 源站提供,从而避开典型的嵌入限制,页面更易正常显示。

渲染结果与 DSH 面板同源后,才能满足 DOM 标注前提,支持:

  • 点击元素并生成 选择器(#id、data-testid,或沿祖先链行走的 CSS 路径);
  • 拖拽区域时收集 区域内所有元素,而不只是最外层节点;
  • 一并记录可见文本、元素位置与备注;
  • 连续选取,最终按选取顺序 合并为一条消息 发送。

与现有浏览器标签的协作方式

配置项 takeover 默认为 true 时,插件直接提供 browser 标签类型,打开的页面默认可标注。设为 false 时不替换原有 browser 标签:快捷键、在系统浏览器中打开、历史记录及其他依赖 browser 的插件行为保持不变,并额外提供标注标签与标签条上的切换入口。

整页评审少占轮次

添加备注后仍留在选取模式,可按 Esc 结束。备注会进入列表,通过「发送到对话」一次性发出,整页走查不必每条备注占一轮。

已是同源时的直连

若页面本就由当前 DSH 提供(例如另一插件的页面),则直接 iframe 加载,保留 cookie,不再多跑一遍 Chromium。

无法标注时的明确降级

仅在本机可达的地址(例如映射到本地的端口)等情况下,面板可回退为 直接加载(只读):页面仍可见,并明确提示无法标注,而不是空白 iframe。

界面语言

面板跟随 GUI 语言(Settings → General),可随设置切换;内置英文与中文,字符串集中在 i18n.js。

安装与启用

官方推荐从 GitHub Releases 安装预构建包(README 记载在干净 profile 上验证约 9.4 s,包约 273 KB):

dsh plugin --profile web add https://github.com/KirinKylin-1/dsh-annotated-browser/releases/download/v1.2.2/dsh-annotated-browser-1.2.2.tgz

安装后需 重启一次 dsh web(宿主机侧需加载),并刷新 GUI。

另有两种 README 记载的替代方式(按需选用):

# 直接从 git(下载更大,从源码运行)
dsh plugin --profile web add github:KirinKylin-1/dsh-annotated-browser

# 自 npm 发布后即可(README 中称「once published」)
dsh plugin --profile web add dsh-annotated-browser

环境要求(来自 package.json 与 README):

  • Node >=22
  • DSH >=0.2.1-rc.1 <0.3.0
  • 宿主机需有基于 Chromium 的浏览器(Chrome、Chromium 或 Edge);自动探测常见路径,或通过 CHROME_PATH / PUPPETEER_EXECUTABLE_PATH 指定。探测失败时可在 profile 补丁中写明路径:
# ~/.dsh/profiles/web/cordis.patch.yml
- id: dsh-annotated-browser
  config:
    browserExecutable: /usr/bin/google-chrome

配置项

字段 默认值 含义
browserExecutable 自动探测 Chrome/Chromium 可执行文件绝对路径
proxyServer 空 渲染页面时使用的 HTTP 代理,例如 http://127.0.0.1:7890
timeoutMs 30000 页面加载超时(毫秒)
allowRemote false 是否接受非环回地址的代理请求(仅当 DSH 直接暴露在局域网时考虑)
takeover true 是否接管 browser 标签类型;false 保留原版浏览器并增加标注入口

典型用法

README 记载的操作顺序如下:

  1. 右侧栏 → Browser → 输入 URL。
  2. 工具栏 → Annotate(按 Esc 可退出标注模式):单击元素,或按住拖拽框选区域。
  3. 填写备注 → Add to list;添加后自动继续选取。
  4. Send to conversation 将所有备注按添加顺序作为 一条消息 发到当前会话。

备注列表在刷新后仍保留:按 Session 存在 localStorage 中,直到清空或发送。

适用场景与注意

适合:需要在真实页面布局上与模型对齐修改意见的前端或 UI 相关工作流;需要把「改这里」落实为可机器读取的选择器与文本,而不是截图猜测的场景。

局限(README「Limits」):

  • 页面由 headless Chromium 渲染后回源提供;登录态、重度交互应用可能与日常浏览器表现不一致。
  • 代理页面视为「较可信」内容,只浏览你本会在 GUI 中打开的站点。
  • 不会共享你本机浏览器里的 cookie。

安全与权限:插件以当前 dsh 进程权限在宿主机启动 Chromium 并代理请求。安装前宜阅读源码与 MIT 许可证,确认可接受其网络与本地浏览器调用行为。社区目录 skillhub.cn 为独立收录站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」的扩展方式。

结尾

dsh-annotated-browser 把「看见页面」和「指名部位」合成侧栏里的标注流程,并以结构化信息进入对话,适合整页走查类任务。进一步了解可访问社区目录页与项目仓库:

  • 目录页:https://www.skillhub.cn/plugins/KirinKylin-1/dsh-annotated-browser
  • GitHub:https://github.com/KirinKylin-1/dsh-annotated-browser
羽毛球分组比赛记分
小程序二维码

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

Xiaoye