前言¶
用 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 插件管理(推荐)¶
- 左侧栏 插件 → 右上角 添加插件。
- 输入 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 可能失败。
- 安装后点对话框 立即启用(若无则忽略)。
- 重启 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。
典型用法¶
- 在 DSH 右侧栏以 预览 打开
.html(默认走「指代页」渲染器)。 - 点预览顶部
◉ 指代器进入指代模式。 - 左键点元素 → 输入框出现「元素 N」;右键拖拽框选 → 出现「区域 N」。
- 把 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。