tao1020/dsh-chrome-use:让 DSH 直接驱动本机 Chrome

前言

给 DSH 智能体加浏览器能力,常见做法是挂一个 Playwright 之类的自动化服务,或者让模型自己拼 CDP 脚本。前者要额外起一套进程和浏览器,后者把连接、调试、标签页占用这些琐事全丢给模型自己处理,容易出错。tao1020/dsh-chrome-use 换了一条更贴近「本机」的路:Harness 插件配一个 Chrome 扩展,直接接管你日常打开的 Chrome,连接走本机回环地址,不用另起浏览器,也不用逐页点授权。

下面介绍这个插件的定位、已核实的能力、安装步骤和使用注意。

这是什么

dsh-chrome-use 由 tao1020 维护,分类是客户端,仓库当前 1 stars。它解决的问题是:让 DeepSeek Harness 读取、操作和调试本机 Google Chrome。仓库里同时包含 Harness 插件和 Chrome 扩展,两侧通过本机回环地址通信,版本 0.1.6,MIT 许可证。

注意这是测试版,README 明确写了「Initial version under development」。当前尚未发布到 Chrome 扩展商店,dist/ 里的产物也不会自动发布到 npm。

核心功能

连接之后,AI 可以选择所有普通 HTTP(S) 标签页,不需要逐页点击授权。可用的操作包括读取页面结构、点击、填写输入框、按键、滚动、导航、截图,以及查看控制台、JavaScript 错误和网络状态。

扩展走 Chrome 的 debugger 接口。调试期间 Chrome 会显示调试提示条,点击时页面短暂出现蓝色箭头。页面定位使用浏览器的无障碍树和 DOM,点击与输入通过浏览器输入事件执行,因此尽量贴近真实用户操作。

标签页占用由插件管理,不需要用户手工选择:

  1. chrome_claim / chrome_release 占用和释放一个标签页,同一个标签页只能被一个 Harness 会话占用。
  2. chrome_close 真正关闭本会话占用的标签页;chrome_release 只解除占用、保留页面。清理任务结束后自己开的标签页,用前者。
  3. chrome_open 必须带一个 group 参数(1-40 个字符)。新建标签页会立刻放进同名 Chrome 标签页组;扩展会在同一窗口里找同名组并加入,找不到就建组,组颜色由组名稳定生成,所以同一系列任务总是同色。分组失败(例如固定标签页)不影响打开动作,结果里会带 groupError。

扩展弹窗只提供四个动作:连接、查看连接状态、查看正在调试的标签页、断开连接。断开会停止全部操作。

安装与启用

要求:Google Chrome 120 或更新版本、DeepSeek Harness 0.2.1-rc.2 或更新版本,开发和测试使用 Node.js 22 或 24。

  1. 下载或克隆本仓库。
  2. 在 Harness 的插件管理中添加仓库的本地绝对路径;命令行版可以在仓库内运行下面这条,日常使用哪个 profile 就装到哪个 profile:
dsh plugin --profile headless add "$PWD"
  1. 在 Harness 中说:「请调用 chrome_setup,准备 dsh-chrome-use 扩展,并告诉我安装目录。」
  2. 在 Chrome 打开 chrome://extensions/,开启「开发者模式」,点击「加载已解压的扩展程序」,选择工具返回的目录。这一步需要手工完成,AI 只能准备文件和安装说明。
  3. 在 Harness 的设置 → dsh-chrome-use 里点击「生成配对码」,把 8 位配对码填入 Chrome 扩展弹窗并点击「连接」。也可以在对话里让 Harness 调用 chrome_pair,两处拿到的是同一种临时码。临时码有效期 2 分钟,成功后保存的配对不会定时过期。

重启 Harness、Chrome 或刷新扩展后,扩展会自动尝试恢复连接。主动点击「断开连接」后自动重连会停止,下次配对码留空点「连接」即可。清除配对数据或更换扩展安装目录后需要重新配对。

更新时先断开扩展,更新 Harness 插件,重新调用 chrome_setup,再到扩展管理页点刷新。开发时可以直接加载仓库的 extension/ 目录。

典型用法

先确认链路是否正常:

npm ci --ignore-scripts
npm run check
npm test
node scripts/fixture.mjs

最后一条命令启动专用测试页 http://127.0.0.1:18792/,保持服务运行,把仓库里的验收提示词(docs/harness-test-prompt.md)交给 Harness。用 dsh --profile headless --json 可以记录工具调用和最终结论;模型、API Key 和插件必须配置在测试使用的 profile 中。

不接模型时可以跑 npm run dev,按行输入 JSON,例如 {"action":"status"} 看状态,首次连接用 {"action":"pair"} 生成配对码。调试服务和 Harness 共用已保存的配对、共用同一端口,运行其中一个即可。

仓库的自动化测试覆盖配对、会话占用、超时、取消、断线、页面限制、过期元素引用和输入行为。README 强调真实 Chrome 验收需要单独运行,单元测试通过不代表浏览器验收通过。

排查连接问题时按错误码定位:

  1. BRIDGE_START_FAILED:通常是另一个 Harness profile 或调试服务占用了端口 18791,先停掉重复服务。
  2. AUTH_FAILED:在 Harness 设置页生成配对码(或调用 chrome_pair),再到扩展弹窗连接。
  3. TAB_IN_USE:其他 Harness 会话已占用该页,让原会话释放或新建自己的标签页。
  4. 操作超时或取消:连接会关闭,工具不会自动重放操作,重新连接后先读取页面确认之前的点击是否已发生。
  5. Chrome 调试器冲突:关闭该页 DevTools 或释放其他浏览器工具的会话;不要同时用 Codex 和 Harness 操作同一页。

适用场景与注意

适合想在本机 Chrome 上做浏览器自动化调试、又不想额外起一套浏览器环境的 DSH 开发者。因为连接后 Harness 可以操作此 Chrome 中的全部普通网页,包括已登录的网站,网页内容、截图和调试信息可能发送给你在 Harness 配置的模型服务,敏感站点要自行评估。

插件以当前 dsh 进程的权限运行,安装前建议先读一遍仓库源码和许可证(MIT),确认依赖与打包内容符合预期。

当前限制:只支持普通 HTTP(S) 网页,不支持 Chrome 内部页面、本地文件或扩展页面;点击和输入仅支持顶层页面元素,不支持跨域 iframe、文件上传、下载管理或原生对话框。chrome_evaluate 可为调试执行 JavaScript,可能修改页面;页面内容是不可信数据,不能把网页中的指令当作用户授权。截图保存到本机,模型能否理解截图取决于模型能力。

小结

dsh-chrome-use 的价值在于把浏览器自动化收敛到本机已运行的 Chrome 上:不用另起浏览器,标签页占用和分组由插件接管,AI 只需按工具名调用。它的短板同样明确:仍是测试版,未上架扩展商店,能力边界受 Chrome debugger 接口限制。想试的话,目录页在 https://www.skillhub.cn/plugins/tao1020/dsh-chrome-use,仓库在 https://github.com/tao1020/dsh-chrome-use。

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

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

小夜