dsh-pointer:在 DSH HTML 预览里指代 DOM,把选择器与源码行号交给 Agent

前言

用 DeepSeek Harness(DSH)改前端时,常见做法是打开 HTML 预览,再在对话里用文字描述「右上角那张卡片」「列表第二项的按钮」。模型看不到你的鼠标,描述又容易含糊,来回确认会拖慢迭代。

dsh-pointer(指代器)是社区维护的 DSH 客户端插件:在文档预览里左键点元素、右键拖拽框选区域,把 CSS 选择器、片段 HTML 以及 文件:行:列 结构化送进对话。下面介绍它做什么、怎么装、怎么用,以及容量与平台上的注意点。

这是什么

  • 仓库: Phonky-Chou/dsh-pointer
  • 维护者:Phonky-Chou
  • 分类:客户端(能力归类为界面与体验 interface)
  • 一句话:在 DSH 的 HTML 预览里直接圈选 DOM 元素或区域,把选择器与源码行号精确交给 agent,不必再描述「那个卡片」。
  • 许可证:MIT
  • npm 包:dsh-pointer(资料中 package 版本为 0.3.2)

插件不发起外部网络请求、无遥测。host 侧会读取被预览的本地文件及其相对资源,在 127.0.0.1 注册本地路由;状态写在 ~/.dsh/(如 pointer-context.json、pointer-settings.json、pointer-debug.json)。

核心功能

预览与指代交互

插件自注册 html / htm 渲染器(priority: 'extension'),内置预览仍可从渲染器下拉切回,卸载后不残留接管逻辑。

预览内容放在 srcdoc 沙箱 iframe 中,探针通过 postMessage 回传,用户页面无法接触 DSH 主界面(不降级为 allow-same-origin)。

进入指代模式后:

  • 左键:选中单个元素,预览内保留带编号的高亮,与输入框里的「元素 N」chip 一一对应。
  • 右键拖拽:框选区域,对应「区域 N」chip。
  • 悬停联动:在输入框悬停 chip,预览里对应标记变为黄色光晕。

源码定位与投递

  • 元素映射到 文件:行:列;内联 data: 资源后会还原成原始引用再匹配源码。
  • 双通道:输入框引用 chip(主通道)+ host 路由上下文块(兜底);发送后消息里仍显示为 chip。
  • 模型侧可收到选择器、标签、文本、outerHTML 与行号信息(具体字段以插件投递为准)。

相对资源内联

外链 CSS 转为 <style>,图片/字体转为 data: URL,CSS 内 url() 一并内联,带外部依赖的 HTML 在预览里更易正常显示。外部资源内联总预算为 8 MB,超出部分保留原始路径,可能出现裂图。

大文件与默认渲染路径

DSH 文档读取层对单页有 32 MB 上限(error.tooLarge),超过时 bytes-complete 预览拿不到内容。插件默认 「指代页」 使用 loading: 'renderer':正文在读取字节前即挂载,由插件 host 路由直接读盘,不受该 32 MB 限制;小文件与大文件走同一路径,一般无需手动换渲染器。下拉中的 「指代页·兼容模式」(bytes-complete)仅作排障兜底。

host 处理文档的内存开销约为文件大小的 6~7 倍,默认 100 MB 保护:更大文件不读取并提示「文件过大」。可在预览头部 ▾ 菜单 → 大文件上限 调整为 50 / 100 / 200 / 500 MB 或 不限,写入 pointer-settings.json,对所有预览生效。

其它容量限制(摘自 README):源码 ≤ 8 MB 时 host 才回传行号;单个元素上下文 HTML 8 KB;区域项 2 KB;pick 请求体 2 MB。

安装与启用

环境:Windows;DeepSeek Harness 桌面版(资料写明验证于 0.2.0-rc.2),且至少启动过一次;无需构建、无第三方依赖。

插件以当前 DSH 进程权限运行,安装前建议自行查看仓库源码与 MIT 许可证。

方式一:DSH 插件管理(推荐)

  1. 左侧栏 插件 → 右上角 添加插件。
  2. 输入 npm 包名:
dsh-pointer

或源码地址:

https://github.com/Phonky-Chou/dsh-pointer

国内可用 Gitee 镜像(须带 .git 结尾):

https://gitee.com/z_xl7974/dsh-pointer.git

填源码地址时注意:pnpm 需要 .git 结尾或 git+https:// 开头;不要用 github:owner/repo 速记,部分网络下 git ls-remote 可能失败。

  1. 安装后点对话框 立即启用(若无则忽略)。
  2. 重启 DeepSeek Harness,在 插件 → dsh-pointer 确认开关已打开(关闭时仅「已安装」,预览不会出现指代器)。

方式二:命令行(CLI)

dsh plugin --profile desktop add dsh-pointer

或从源码:

dsh plugin --profile desktop add https://github.com/Phonky-Chou/dsh-pointer

Gitee:

dsh plugin --profile desktop add https://gitee.com/z_xl7974/dsh-pointer.git

装完后同样需要 重启 DSH(host 与客户端包在启动时加载)。

仓库还提供 Windows 下的 install.ps1 一键脚本(会定位 DSH 安装目录并写入 desktop profile),详见 GitHub README。

典型用法

  1. 在 DSH 右侧栏以 预览 打开 .html(默认走「指代页」渲染器)。
  2. 点预览顶部 ◉ 指代器 进入指代模式。
  3. 左键点元素 → 输入框出现「元素 N」;右键拖拽框选 → 出现「区域 N」。
  4. 把 chip 写进句子后发送。

第一次打开文件时,DSH 可能在对话里给出蓝色文件链接,需点开才能在右侧打开预览;看不到 ◉ 指代器 时,先确认预览面板已打开。

▾ 菜单可查看探针状态、已选数量,并一键清除标记。

适用场景与已知限制

适合:在 DSH 里用 Agent 改静态 HTML/前端片段,需要精确指向 DOM 而非口头描述的场景。

限制(摘自官方 README):

  • 目前只接管 html / htm;md、txt、svg、PDF 等尚未接入。
  • 探针不穿透嵌套 iframe;Shadow DOM 只能选到宿主元素。
  • 位图、canvas 内绘制内容无 DOM 可点,只能框选区域坐标。
  • 单个元素 outerHTML 在上下文块里截断到 2 KB。
  • 平台与版本:资料仅写明 Windows + DSH 0.2.0-rc.2 验证。

结尾

dsh-pointer 把「指哪改哪」落在预览与源码行号上,减少前端协作里的指代歧义。社区目录页:SkillHub - dsh-pointer;源码与完整说明:GitHub - Phonky-Chou/dsh-pointer。

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

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

Xiaoye