前言¶
在 DSH / 智能体开发中,agent 经常需要知道当前页面、读取页面请求、执行简单浏览器操作。已有做法通常是手动复制页面文本给 agent,或另写脚本调用浏览器。下面介绍 dsh-chrome:一个把完整 dsh web UI 嵌入 Chrome side panel 的插件,并让本地 dsh agent 读取当前页面、按需捕获 HTTP 流量、驱动浏览器。
这是什么¶
stuarthu/dsh-chrome 是 DeepSeek Harness(DSH)的浏览器 companion,许可证为 MIT,package.json 版本为 0.1.3。
它面向本地受信环境,要求:
- 本地
dsh web运行,默认地址为http://127.0.0.1:3080 - Chrome
118+ - Node
>=18 - 可选 peerDependencies:
@deepseek-ai/dsh-tools、@deepseek-ai/dsh-llm
插件分两部分:
- 加到 dsh web profile 的 host plugins
- 加载到 Chrome 的扩展文件
其中 host plugins 包含:
bridge.js:WS bridgebrowser-tools.js:agent tools + redactionpage-injector.js
核心功能¶
侧边栏嵌入完整 dsh web UI¶
Chrome side panel 内嵌完整 dsh web UI,包括 sessions、settings、approvals、tasks、goals、workspaces。
side panel 顶栏提供:
- bridge status
- 手动 Stop capture
- 通过 Settings 修改 dsh address
自动感知当前页面¶
切换标签或导航后,插件会把 http(s) 页面的 URL、标题和正文文本注入最近活跃 session。SPA 路由变化也会触发。
页面变化检测包括:
- tab 切换
- 主帧导航
- SPA 路由变化
检测约 2 秒去抖;滚动不触发;只计 active tab;bridge 重连时重发当前页面。
自动注入的页面正文上限为 1,000,000 字符。
按需捕获 HTTP 流量¶
捕获是 opt-in,并且只作用于活动标签。
启动捕获:
browser_start_capture
读取捕获结果:
browser_capture_requests
捕获记录活动标签请求的方法、URL、状态、请求体和响应体。HTTP headers 不捕获,因此 Cookie、Set-Cookie、Authorization 头不会到达模型。
捕获保留滚动最后 500 条;每个请求/响应体和自动注入页面体上限为 1,000,000 字符。
停止捕获会停止记录,但保留已记录内容直到标签关闭。读取捕获结果不做 intent-gate,同一浏览器的其他 dsh session 可读取。
浏览器控制¶
提供以下浏览器工具:
browser_navigate
browser_click
browser_open_tab
读取或操控页面状态的浏览器工具(包括捕获)仅作用于 active tab;browser_list_tabs 和 browser_open_tab 是自然例外。
browser_get_page 的按需读取限制约为 40,000 可见文本和最多 400 链接。
browser_click 不重试;若点击结果丢失,工具会报告无法确认点击是否生效。
工具级 intent unlock¶
dsh-chrome 免审批,但状态变更操作受工具级 intent unlock 限制:仅在当前轮真实消息包含指定浏览意图词时允许。
注入的当前页面消息标注为 untrusted data,且 intent-unlock gate 会阻止页面内容触发状态变更操作。这些是 best-effort 防护,不是硬保证。
安装与启用¶
先做 host plugins 安装,再做 Chrome 扩展安装。
添加 host plugins¶
为 dsh web profile 添加 dsh-chrome host plugins:
dsh plugin --profile web add dsh-chrome
这一步会把 bridge、browser tools、page injector 注册到 dsh web profile。随后刷新浏览器。
加载 Chrome 扩展¶
运行扩展安装命令,打印扩展目录:
npx dsh-chrome install
接着在 Chrome 中加载扩展:
- 打开
chrome://extensions - 开启 Developer mode
- 点击 Load unpacked,选择打印目录
- 点击 dsh-chrome 工具栏图标打开 side panel
经过上面的步骤,可以在 side panel 中查看 bridge status,并使用完整 dsh web UI。
升级¶
升级包后,重新运行:
npx dsh-chrome install
并在 chrome://extensions 重新加载扩展。
如需确认扩展目录,可以运行:
npx dsh-chrome path
卸载¶
删除扩展目录:
npx dsh-chrome uninstall
随后在 chrome://extensions 移除扩展。
移除 dsh host plugins:
dsh plugin --profile web remove dsh-chrome
典型用法¶
在 side panel 中打开 session 后,可以直接向 agent 发出类似指令:
open the xx pageclick the login buttoncapture this page's requests
side panel 顶栏用于查看状态和手动控制:
- bridge status:查看 dsh 连接状态
- Stop capture:手动停止捕获
- Settings:修改 dsh address
安全与适用场景¶
dsh-chrome 仅限受信本地使用。bridge 和 browser tools 会赋予本地 dsh agent 读取页面、捕获流量、驱动浏览器的能力。插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
默认会对 secret-shaped URL query 参数、请求体和响应体中的 token 进行掩码。如需捕获未掩码的 raw 流量,可设置:
redactCredentials: false
redaction 是 best-effort,不保证覆盖所有情况。捕获流量应视为敏感内容,只在受信站点启用捕获。
注入页面标注为 untrusted data,intent-unlock gate 也会限制页面内容触发状态变更操作,但这些仍属于 approval-free 模式下的 best-effort 防护,不是绝对保证。
结尾¶
dsh-chrome 把 dsh web UI、当前页面感知、HTTP 流量捕获和基础浏览器控制放到同一个 Chrome side panel 中,适合在受信本地环境中为 dsh agent 增加浏览器上下文。
社区目录页:https://www.skillhub.cn/plugins/stuarthu/dsh-chrome
GitHub:https://github.com/stuarthu/dsh-chrome