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|Save、label=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 chromium、firefox 或 webkit
headless true 是否无头运行
channel — Chromium 渠道,如 chrome 或 msedge
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_click、browser_fill 或 browser_press 完成操作;目标使用语义定位器,例如 label=Email 或 button|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 驱动的浏览器工具集,让智能体以结构化快照和语义定位完成多标签网页任务,而不必自行维护浏览器控制器与工具注册。

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

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

小夜