DeepSeek Harness (DSH) 的核心设计理念是「一切皆插件」。当智能体需要操作真实网页,而不仅仅是读取文本时,现有方案往往难以兼顾操作深度与可视化。下面介绍 @dsh-external/dsh-browser-use,它移植自 ZCode 的 browser-use-plugin / control-browser 技能,将「ARIA 快照优先」的操作范式落地到 DSH 的工具、提示段与 UI 上。
核心功能¶
本插件提供一组工具与面板,用于驱动本机 Chromium 进行网页操作。
- 浏览器控制:
browser_open(打开 URL)、browser_navigate(导航)、browser_tabs(多标签管理)、browser_wait(等待)。 - 交互操作:
browser_click(点击)、browser_type(输入文本)、browser_press(发送按键)。 - 读取与求值:
browser_snapshot(读取 ARIA 快照,用于定位)、browser_eval(JS 求值)、browser_screenshot(截图)。 - 可视化面板:提供一个右侧栏面板,可实时观看浏览器画面(需要部署挂载 attachment 服务)。
安装与启用¶
使用 DSH 内置插件管理器进行安装。
# 使用命令行
dsh plugin --profile <profile> add github:hu568/dsh-plugin-browser-use
# 或使用插件管理器
plugin_manager action=install_bundle target="github:hu568/dsh-plugin-browser-use"
安装后,插件被追加进 profile 的 dsh.profile.bundles,其 cordis.patch.yml 会将 dsh-browser-use 注入宿主组合。通常在运行中即时生效,否则重启 DSH 即可。
典型用法¶
安装完成后,Agent 可以通过调用工具来控制浏览器。
- 打开网页并获取初始快照:
browser_open
- 读取页面结构(ARIA 快照):
browser_snapshot
- 根据 ref 定位并点击元素:
browser_click
- 在输入框中填入文本:
browser_type
已知限制与注意事项¶
- 页面刷新:Client 半边在页面刷新后生效。若页面早于注入加载,client 模块不会被 import。
- 截图:
browser_screenshot需要部署挂载 attachment 服务。 - 导航协议:
goto工具只接受http:/https:/about:blank。 - 鉴权:面板路由没有独立鉴权,同源的其他进程也能调用
/input接口。 - Cookie 机制:会话 cookie(无
Expires/Max-Age)不保留,只有持久化 cookie 能跨进程保留。 - 进程占用:同一 profile 不能同时被两个进程占用。
- 系统调用:不要使用
explorer.exe开启 URL,应走 ShellExecute 语义(Windows 上用 PowerShell 或 cmd)。
技术实现¶
- 依赖:运行依赖
playwright-core ^1.56.1,使用本机已缓存的 Chrome for Testing。 - 启动方式:浏览器采用懒启动,第一次调用
browser_open时才拉起,插件卸载/热重载时释放。 - 持久化:默认使用持久化 profile(
<DSH_HOME>/browser-use/profile)来保存登录态。 - 源码:以
lib/为唯一源码,纯 JavaScript (ESM),不需要构建链。
通过这套机制,DSH 的 Agent 不再局限于对话,而是能够接管浏览器,完成从导航、操作到验证的完整链路。对于需要处理登录、验证码或复杂表单的自动化任务,这是一个实用的工具集。
源码与目录页:GitHub