dsh-playwright-browser:为 DSH 智能体提供 Playwright 多标签页浏览器自动化

前言

在 DeepSeek Harness(DSH)里让智能体操作网页,常见做法是自行拼装 HTTP 抓取或零散脚本:能拿到 HTML,却难以稳定处理登录态、多标签、动态渲染和可交互控件。另一类做法是接第三方浏览器 API,但绑定和生命周期往往与 DSH 工具注册、会话清理脱节。

下面介绍社区插件 dsh-playwright-browser(维护者 Clizo1209,SkillHub 分类:联网工具)。它基于 Playwright,向 DSH 注册一组原生 browser_* 工具,提供可复用的浏览器上下文、语义化定位和多标签管理。行为设计参考 Codex Browser skill 的思路,但不依赖 OpenAI 浏览器绑定,控制器由插件自行管理。

DSH 目前处于开发者预览阶段。该插件针对 DSH 0.1.0-rc.6 包线测试,随 DSH 演进可能需要兼容性更新。

这是什么

dsh-playwright-browser 是面向 DeepSeek Harness 的浏览器自动化插件,当前 npm 版本为 0.1.3,采用 MIT 许可证。

插件在 DSH 工具注册表中挂载十个 browser_* 工具,由 Cordis 管理浏览器生命周期。智能体通过语义定位器(如 role=button|Savelabel=Email)与页面交互,并在操作后获取有界长的无障碍树或可见文本快照,而不是在页面内执行任意 JavaScript。

核心功能

工具一览

插件注册以下十个工具:

工具 作用
browser_open 打开标签页,可选导航到 URL
browser_navigate 在已有标签页中导航
browser_snapshot 读取有界长的无障碍或文本快照
browser_click 点击语义化目标
browser_fill 替换输入框内容,可选按 Enter
browser_press 发送 Playwright 键盘按键
browser_wait 等待目标、URL 或加载状态
browser_history 后退、前进或刷新
browser_screenshot 保存 PNG 并返回绝对路径
browser_tabs 列出、选择或关闭标签页

定位与快照

推荐的目标写法包括:

role=button|Save
button|Save
label=Email
placeholder=Search
text=Settings
testid=submit
css=#legacy-button

交互后会返回新鲜、有界长的快照(默认上限 40000 字符),便于智能体在动作前后核对页面状态。

浏览器与运行时

  • 惰性启动浏览器;无 Playwright Chromium 时可回退到本机已安装的 Chrome 或 Edge。
  • 可复用浏览器上下文,标签页使用稳定标识符。
  • 支持后退、前进、刷新、键盘输入、等待和 PNG 截图。
  • 页面操作支持中止;Cordis 负责生命周期清理。
  • 不在页面内执行任意 JavaScript 求值。

安全模型

插件将页面内容视为不可信数据,而非智能体指令。涉及提交表单、敏感数据、下载、购买、权限变更、账户修改或 CAPTCHA 时,需获得适当用户授权。浏览器不会在未告知的情况下静默安装;无可用浏览器时,智能体应说明最低配置并征得同意。含嵌入凭据的 URL 会被拒绝;协作关闭标签页会取消该页面上进行中的操作。

环境要求

安装前确认:

  • Node.js ^22.19.0>=24.0.0
  • 已配置 DSH profile
  • 至少一种受支持浏览器:
  • Playwright Chromium(npx playwright install chromium
  • Google Chrome / Microsoft Edge
  • 或通过 executablePath 指定可执行文件路径

安装与启用

从 npm 安装到 web profile:

dsh plugin --profile web add dsh-playwright-browser

从源码 checkout 安装:

npm install
npm pack
dsh plugin --profile web add ./dsh-playwright-browser-0.1.3.tgz

无头环境可使用 headless profile:

dsh plugin --profile headless add ./dsh-playwright-browser-0.1.3.tgz

安装后在不启动进程的情况下校验 profile 组合:

dsh --profile web --dump-config

Git 安装会执行包的 prepare 脚本;pnpm 10 及以上可能需要在 profile 的 pnpm-workspace.yaml 中显式允许该构建。使用预构建 npm 包或 tarball 时,profile 内无需再编译源码。

配置

在 profile 的 cordis.patch.yml 中追加配置(DSH 会在已安装 bundle 补丁之后应用用户覆盖):

- id: playwright-browser
  config:
    browser: chromium
    channel: chrome
    headless: true
    viewportWidth: 1440
    viewportHeight: 900
    screenshotDir: .dsh-browser/screenshots

常用选项:

选项 默认值 说明
browser chromium chromiumfirefoxwebkit
headless true 是否无头运行
channel Chromium 渠道,如 chromemsedge
executablePath 浏览器可执行文件绝对路径
userDataDir 专用自动化用户数据目录
viewportWidth 1280 视口宽度
viewportHeight 800 视口高度
actionTimeoutMs 15000 定位与操作超时
navigationTimeoutMs 30000 导航超时
maxSnapshotChars 40000 快照最大返回长度
screenshotDir .dsh-browser/screenshots 截图输出目录

不要将 userDataDir 指向个人日常使用的浏览器配置目录,应使用专用于智能体自动化的独立目录。

典型用法

智能体在 DSH 会话中按任务链调用 browser_* 工具。一个常见的浏览流程如下:

  1. browser_open 打开标签页并导航到目标 URL。
  2. browser_snapshot 读取当前页面结构,确认可交互元素。
  3. browser_clickbrowser_fillbrowser_press 完成操作;目标使用语义定位器,例如 label=Emailbutton|Save
  4. browser_wait 等待 URL、元素或加载状态就绪。
  5. 需要留档时调用 browser_screenshot;多页任务用 browser_tabs 管理标签,用 browser_history 处理后退与刷新。

定位器示例:

role=button|Save
label=Email
placeholder=Search
text=Settings

适用场景与注意

适合谁

  • 已在 DSH 中编排智能体,需要稳定、可观测的网页自动化能力。
  • 希望用无障碍树和语义定位减少脆弱 CSS 选择器依赖的团队。
  • 需要多标签、截图、导航历史等完整浏览器会话管理的场景。

使用前注意

  • 插件以当前 DSH 进程的权限运行,可访问其能触及的文件、网络与浏览器数据。安装前应阅读 GitHub 仓库 源码与 MIT 许可证,评估是否满足你的安全与合规要求。
  • SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系;插件列表与星标(当前 GitHub 11 stars)反映社区维护状态,不代表官方背书。
  • DSH 仍在快速迭代,升级 DSH 或插件版本后建议执行 dsh --profile web --dump-config 并跑一遍你的典型任务链。

链接

经过上面的步骤,你可以在 DSH profile 中接入 Playwright 驱动的浏览器工具集,让智能体以结构化快照和语义定位完成多标签网页任务,而不必自行维护浏览器控制器与工具注册。

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

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

小夜