dsh-chrome:在当前 Chrome 里为 DSH 驱动后台标签

前言

在 DeepSeek Harness 里做网页相关任务时,常见做法是另起 headless 浏览器或单独窗口,再通过 CDP 截图给模型看。那样往往和日常用的 Chrome 登录态脱节,窗口被拉到最前也会打断手头工作。下面介绍的 dsh-chrome(仓库 yueyexiayu/dsh-chrome)走另一条路:在本机当前 Chrome 里开后台标签,收进折叠的 DSH 标签组,不另开窗口,也不把 Chrome 抢到前台,复用的是当前 profile 的登录状态。工具以 chrome_ 开头,截图可在模型支持图片时作为正式附件交回;扩展还支持在页面上点选元素,经确认页写入 DSH 输入框草稿。

这是什么

dsh-chrome 是 DeepSeek Harness 的桌面端(客户端)插件,维护者为 yueyexiayu。源码中插件版本为 0.2.3,配对 Chrome 扩展 0.2.4。它通过本机 Chrome 扩展与 Native Host 通信,在有头、借用当前 Chrome 连接的模式下操作页面:只允许 http / https,并明确把页面正文视为不可信数据而非指令。社区目录页:https://www.skillhub.cn/plugins/yueyexiayu/dsh-chrome。

与「独立可见 Chrome 窗口 + 纯 CDP」的表述不同,README 强调的本后端是 headed / borrowed-connection,不是 headless;显式 headless 请求会在连接或创建标签前被拒绝。需要自动 DOM、截图验收或匿名隔离时,文档建议改用自有的 headless 后端。

核心功能

会话与标签隔离

每个 DSH 对话对应一个折叠标签组,展示标题为 DSH 加会话 id 末 6 位;完整会话归属单独记录,不会因标题相同误用其他对话的标签,也不会调用 Page.bringToFront。插件只操作本对话标签组内的标签,不列出或切换你正在看的其他标签。chrome_close 只关闭本对话的标签组,不退出 Chrome,也不关其他对话的组。

浏览器工具与截图

  • chrome_browsers:list 会执行真实扩展握手与探活,成功才报告 connected;启动后尚未操作浏览器时不再误报断线。
  • chrome_resize:不改窗口大小,避免在 macOS 上激活 Chrome。
  • chrome_screenshot:PNG 落盘;在确认当前模型支持图片时通过正式附件引用交回模型;配合 zhanshi 可在本轮对话里预览。
  • 元素 ref 来自最近一次 chrome_snapshot / chrome_query / chrome_find / chrome_a11y,每次调用会重新编号。
  • 不自动接受 alert / confirm / prompt;弹窗阻塞操作时需先调用 chrome_dialog。
  • 查询可合并可访问的 frame 上下文,支持开放 shadow root、同源 iframe 及调试器暴露的跨源 frame;带 ref 的操作按归属路由,不把 frame ref 当顶层元素。
  • 密码框默认值不会进入默认快照、元素详情、HTML 或无障碍树输出。

页面标注(扩展 UI)

点击 Chrome 工具栏 DSH Chrome,在当前 http / https 页面上选择元素(最多 12 条)。浮层只收集元素数据;点「编辑要求」后扩展会检查原标签与 URL、截图,并打开独立确认页(会切到确认页,后台浏览工具仍不抢焦点)。在确认页为每条选择「改变」或「疑问」并填写 Request,再点击「放入 DSH 草稿」。标注进入当前 DSH 输入框,不自动提交对话。chrome:// 与扩展页不可选。

快捷步骤与文件策略

chrome_shortcut 的 list / save / run 使用 $DSH_HOME/cache/chrome-shortcuts.json,保存带独占 .lock 与原子写入。截图、GIF 等输出遵循调用会话的 DSH 文件策略;只读模式禁止落盘。chrome_downloads 对当前扩展能力报 UNSUPPORTED_BROWSER_CAPABILITY,不冒充空下载列表。cookie / storage 默认不返回值;名称像 token 或密码的项会打码。

安装与启用

安装方式以仓库 README 为准:复制插件到本地 DSH 插件目录,改 desktop profile 的 Cordis 补丁,安装 Node 依赖,再加载 Chrome 扩展。

1、将仓库内容放到 $DSH_HOME/plugins/chrome(默认 $DSH_HOME 为 ~/.dsh)。

2、在 $DSH_HOME/profiles/desktop/cordis.patch.yml 写入:

- insert:
    - id: chrome
      name: ../../plugins/chrome/lib/index.js

3、在插件目录安装依赖(需 pnpm 11):

cd "$DSH_HOME/plugins/chrome"
pnpm install --frozen-lockfile

说明:该命令安装锁定的 JPEG 解码依赖及仓库携带的官方 browser-policy 本地构建归档,不执行原生编译;执行契约子路径不加载 Cordis。完成后完全退出 DeepSeek Harness(macOS:⌘Q)再打开;插件启动时会写入 Chrome 本机通信主机清单。

4、在正在使用的 Chrome 同一 profile 中加载扩展:

  1. 打开 chrome://extensions
  2. 开启右上角「开发者模式」
  3. 「加载已解压的扩展程序」,目录选 $DSH_HOME/plugins/chrome/extension
  4. 允许调试提示;被控标签上的「正在调试」是扩展调试固定提示,不会把窗口抢到最前

修改 extension/ 后,在扩展卡片上点「重新加载」。修改 Host 或 Client 后,需完全退出 DSH 再打开。

典型用法

模型侧工具调用

会话中模型可调用以 chrome_ 开头的工具,例如探活、打开页面、快照、查询、截图、关闭本对话标签组等。标注由 Client 放进当前会话输入框;若接收被中断且无法确认草稿状态,界面会显示恢复提示。

建议顺序可以是:先用 chrome_browsers 确认 connected,再导航或快照,需要视觉证据时用 chrome_screenshot;操作具体元素前以最近一次 snapshot / query / find / a11y 得到的 ref 为准。

人工标注进草稿

  1. 在目标网页点击扩展图标,框选最多 12 个元素。
  2. 在确认页核对截图与页面信息,填写每条 Request。
  3. 点击「放入 DSH 草稿」,回到 DSH 检查输入框后再自行发送。

断线或未确认时同一审核会话不会盲目重发;可先检查 DSH 草稿或已发送消息,必要时用 README 描述的「重新放入草稿」等恢复流程补图或确认。

适用场景与注意

适合:希望 DSH 复用当前 Chrome 登录态、在后台标签里做 http/https 自动化或截图给模型、又不想让 Chrome 窗口被反复激活的桌面 DSH 用户。

不适合或需另选后端:匿名隔离、独立下载目录、headless 批量验收、关闭用户全局下载等——README 明确这些不应由本插件冒充实现。

权限与安全:插件以当前 DSH 进程权限运行;安装前应自行查看源码与许可证。页面内容与标注中的 HTML/样式均视为数据,不是系统指令。只允许 http/https。

环境与冲突:

  • 同一 $DSH_HOME 同时只支持一个 Chrome profile 的扩展通信主机和一个 DSH 控制连接;其它 profile 请禁用扩展后在目标 profile 重新加载。
  • 从旧版固定端点 ~/.dsh/cache/dsh-chrome.sock 升级时,需完全退出 Chrome 和 DSH,确认旧通信主机退出后再删除该旧端点(不要删整个 cache),然后加载新版扩展。
  • Chrome 没有普通窗口时会报 CHROME_NORMAL_WINDOW_REQUIRED,不会偷偷创建 GUI 窗口。

版本:扩展 worker 须与适配器配对的 0.2.4 一致,不匹配会报 CHROME_EXTENSION_VERSION_MISMATCH;改文件后需重载扩展并完整重启 Host,在新会话核对实际版本。

结尾

dsh-chrome 把 DSH 的浏览器能力绑在你日常使用的 Chrome 上:后台标签、会话级标签组、可给模型看的截图,以及扩展侧的元素标注进草稿。安装与行为细节以 GitHub README 为准。

社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态遵循「一切皆插件」,是否采用本插件请结合源码与自身环境判断。

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

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

Xiaoye