dsh-browser-relay:让 DSH 会话经 relay 驱动浏览器 browser_* 工具

前言

在 DSH 里跑智能体时,常见需求是「读当前页、点按钮、填表单」——若只靠终端或 Web UI 对话,会话与浏览器是两套上下文,轨迹也不好和页面操作对齐。单独写 Playwright 脚本又绕开 DSH 的插件与会话模型。下面介绍社区插件 dsh-browser-relay(维护者 xianmua,分类:联网工具):它在 DSH 与浏览器扩展之间做通信桥,扩展或页面面板发起的任务会在 DSH 侧创建真实会话(落在 ~/.dsh/sessions,可在 dsh web UI 查看与追问),页面动作通过 relay 注册的 browser_* 工具回桥到扩展执行;模型与网关仍用 DSH 自身配置,relay 不直接调用 LLM。

这是什么

dsh-browser-relay 是 DSH 的 cordis 插件(npm 包名 dsh-browser-relay,当前资料中版本 0.7.24,许可证 MIT)。一句话:扩展或悬浮面板提交的任务 → relay 在 DSH 建会话 → agent 执行;浏览器命令入队 → 扩展长轮询取走 → PageController 执行 → 结果回传。鉴权统一为 relay token,扩展 zip 从本机向导下载时自动写入口令,常规使用零手工配置。

核心功能

会话与工具桥接

浏览器扩展「页面 AI 助手」或业务页挂载的面板里提交的每个任务,经 relay 在 DSH 创建与会话列表可见的任务会话;agent 侧可用 relay 提供的 browser_* 工具,实际 DOM 操作在扩展侧完成。

本机向导与扩展

dsh web 启动后 relay 监听 http://127.0.0.1:9916/(默认端口 9916)。向导页可下载 dsh-browser-extension.zip,口令与端点已写入,解压后在 Edge/Chrome 开发人员模式下「加载解压缩的扩展」即可。工具栏点「页面 AI 助手」图标从面板发起任务;若报 invalid api key,在向导页重新下载 zip 覆盖扩展目录即可。

页面 script 接入(可不装扩展)

业务页 header 引入 relay 托管的 dsh-assistant.min.js,适合内网系统。直连本机示例:

<script src="http://127.0.0.1:9916/dsh-assistant.min.js" data-token="向导页复制的口令"></script>

经后端代理时,data-base-url 指向代理前缀,代理需将该前缀下路由整体转发到 relay;data-workspace、data-ai-level(L1–L5 或 none/page/site/dsh/all,默认 L4)可选。代理鉴权模式下可省略 data-token,由后端转发时注入 Authorization: Bearer <口令>,避免口令暴露给页面访客。

远程 DSH、本机浏览器

扩展设置页可改 relay 地址,指向局域网内另一台已启动 relay 的机器。远程需在 patch 中设置 host: 0.0.0.0(0.4.11+ 支持),并注意防火墙放行 9916/tcp;token 存于各机 ~/.dsh/browser-relay-token,不一致会导致任务无事件或 invalid api key。也可用 SSH 本地端口转发连远程,而不暴露 0.0.0.0。

智能等级与安全边界

面板/扩展可设智能等级:L1 仅问答;L2 本页读写禁导航;L3 同域可导航;L4 页面 + DSH 工具(默认);L5 浏览器与 DSH 全量。越权工具调用在执行层拒绝。9916 凭 token 鉴权;host: 0.0.0.0 时 token 为内网唯一防线,不宜公网映射。

安装与启用

前提:本机已安装并登录 DSH(dsh 命令可用)。资料中的用户安装步骤如下,无需 git clone、无需 node、不碰源码目录。

① 安装 relay(add 时自动登记挂载声明):

dsh plugin --profile web add dsh-browser-relay

② 启动 DSH(relay 随之启动并生成本机口令):

dsh web

③ 浏览器打开 http://127.0.0.1:9916/,按向导下载扩展 zip、加载扩展,即可使用。

远程机器装插件时,README 示例为 dsh plugin --profile web add git+<插件仓库地址> 并配合 relay-patch.yml 启动;与 npm 包名安装并列出现,按你的分发来源选用其一。

插件随 dsh web 进程运行,权限与当前 DSH 进程一致;安装前建议在 GitHub 查看源码与 MIT 许可证及 bundled 组件说明。

典型用法与验证

在任意已加载扩展或已挂载脚本的页面,点扩展图标或面板,输入可复现的简单任务,例如 README 中的「读取页面标题并返回」:

  1. 面板逐步显示进度并返回结果。
  2. dsh web UI 会话列表出现以任务命名的会话,含完整对话与工具调用,可继续追问。
  3. dsh web 终端可见类似 [dsh-browser-relay] 任务 #N 已创建 DSH 会话 ... 的日志。

注意:仅在 DSH web UI 里直接对话不会桥接浏览器;浏览器相关操作需从扩展面板或页面助手发起。

业务页代理接入示例(推荐生产环境):

<script src="/your-proxy/dsh-assistant.min.js"
        data-base-url="/your-proxy"
        data-token="向导页复制的口令"
        data-workspace="D:\工作区"
        data-ai-level="L4"></script>

仓库内 web-panel/test.html 可用于脚本加载、鉴权与表单等接入对照。

适用场景与注意

适合:已在用 DSH 做 agent,希望把「当前标签页 / 业务系统页面」纳入同一会话轨迹;内网系统用一行 script 挂悬浮助手;DSH 跑在服务器、浏览器在本机时,通过 relay 地址或 SSH 隧道组合使用。

不适合或需知:依赖本机或内网 relay 与 token,不是公网 SaaS 浏览器服务;CSP 严格的站点需放行对应 script-src;扩展与 relay 更新需按 README「扩展更新」一节重装插件、重下 zip、扩展「重新加载」并刷新页面。

常见问题对照(摘自 README):打不开 9916 → 确认 dsh web 与 add 成功;「DSH 会话服务不可用」→ 须通过 dsh web 启动;「当前会话没有关联的浏览器页面任务」→ 从浏览器面板发起而非纯 Web UI 对话。

结尾

dsh-browser-relay 把 DSH 插件生态里的「一切皆插件」落到浏览器侧:会话、模型配置留在 DSH,页面自动化经 browser_* 与扩展/面板闭环,口令与向导把上手成本压到 add + dsh web + 加载扩展几步。

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

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

小夜