前言¶
在 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 从本机向导下载时自动写入口令,常规使用零手工配置。
- 目录页:https://www.skillhub.cn/plugins/xianmua/dsh-browser-relay
- 源码与说明:https://github.com/xianmua/dsh-browser-relay
- 运行要求(package.json):Node >=18,DSH >=0.2.1-rc.1
核心功能¶
会话与工具桥接¶
浏览器扩展「页面 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 中的「读取页面标题并返回」:
- 面板逐步显示进度并返回结果。
- dsh web UI 会话列表出现以任务命名的会话,含完整对话与工具调用,可继续追问。
- 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 + 加载扩展几步。