Skip to content

ChenyuHeee/dsh-browser-playwright

30Last commit Aug 14, 2026

dsh-browser-playwright DSH plugin

This plugin equips DeepSeek Harness agents with real browser control via Playwright. It uses accessibility snapshots with stable element references for interaction, avoiding fragile CSS selectors. It provides 17 tools for navigation, clicking, filling, tab management, screenshots, structured extraction, and gated JavaScript evaluation.

How to install the dsh-browser-playwright DSH plugin

dsh plugin --profile <name> add dsh-browser-playwright

This source command needs manual review. Copying does not run it.

dsh-browser-playwright DSH plugin data source

dsh-browser-playwright DSH plugin snapshot date: Aug 16, 2026

discovered

What the dsh-browser-playwright DSH plugin can do

  • Navigate to URLs and return accessibility snapshots with stable element refs
  • Click, fill, press keys, scroll, and manage browser history
  • Handle tabs: list, open, switch, close
  • Take screenshots stored as durable image attachments
  • Extract structured data from pages using natural language instructions
  • Execute JavaScript expressions in the page (disabled by default)
  • Configurable browser launch options, timeouts, domain allowlists, and snapshot budgets

Where the dsh-browser-playwright DSH plugin fits

  • Automating web form filling and submission in AI agent workflows
  • Scraping dynamic content that requires JavaScript rendering
  • Testing multi-step user journeys across multiple tabs
  • Taking screenshots of web pages for visual verification
  • Extracting structured data (e.g., product prices, table rows) via natural language queries

Who the dsh-browser-playwright DSH plugin is for

  • Developers building AI agents with DeepSeek Harness that need to interact with web pages
  • QA engineers who want to integrate browser automation into AI-driven testing pipelines
  • Researchers prototyping autonomous web agents without CSS selector fragility

dsh-browser-playwright DSH plugin limitations

  • Only supports Chromium-family browsers (Chrome, Edge, Chromium); Firefox and WebKit are not probed
  • Cross-origin iframes appear as leaf nodes without refs, preventing interaction
  • browser_evaluate is disabled by default and requires explicit configuration, trusting the model with arbitrary JavaScript
  • browser_extract requires a separate LLM route configuration; fails loudly if not set
  • JS-driven navigations (e.g., location.href in a button handler) can bypass allowedDomains; external network guard needed for hard isolation

dsh-browser-playwright DSH plugin: from the repository README

Quoted from the ChenyuHeee/dsh-browser-playwright README, the upstream source of the dsh-browser-playwright DSH plugin. Copyright remains with the original authors.

Playwright-powered browser capability for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): the agent drives a real browser through **accessibility snapshots with stable element refs** — no CSS-selector guessing, no full-DOM dumps. One browser session per harness session, tabs, screenshots as durable image attachments, structured extraction, and gated JavaScript evaluation. ## Install ```sh dsh plugin --profile <name> add dsh-browser-playwright ``` The bundle mounts three rows: the `ctx.browser` seam (`service`), the Playwright provider (`playwright`), and the model-facing tool family (`tool`). ### Browser binary The provider probes `chromium` → `chrome` → `msedge` → `edge` channels automatically; any installed Chromium-family browser works with **zero download**. To use Playwright-managed Chromium instead: ```sh npx playwright-core install chromium # Restricted networks (e.g. mainland China): PLAYWRIGHT_DOWNLOAD_HOST=https://cdn.npmmirror.com/binaries/playwright npx playwright-core install chromium ``` Or pin a binary: `launch.executablePath` / `launch.channel` in the plugin config. ## Tools The default `toolPrefix` is `browser_`. Every action returns a

Read the full READMERepository license: MIT

dsh-browser-playwright DSH plugin questions

How do I install dsh-browser-playwright?

Run `dsh plugin --profile <name> add dsh-browser-playwright` in your terminal. This will add the plugin to your DeepSeek Harness profile. Ensure you have a Chromium-based browser installed (Chrome, Edge, or Playwright-managed Chromium).

Which browsers are supported?

The plugin only supports Chromium-family browsers. It automatically probes for `chromium`, `chrome`, `msedge`, and `edge` in that order. You can also use Playwright-managed Chromium by installing it with `npx playwright-core install chromium`. Firefox and WebKit are not supported.

How do I enable JavaScript evaluation (browser_evaluate)?

Set `allowEvaluate: true` in the `browser-tool` configuration section of your profile's `cordis.patch.yml`. Be aware that this gives the model the ability to execute arbitrary JavaScript in the page, so use it with caution and consider combining it with the harness approval/permission policy.

Why does browser_extract fail with an error?

The `browser_extract` tool requires a separate LLM route to be configured. You need to set `extract.provider` and `extract.model` in the `browser-tool` config. For example: `extract.provider: deepseek-official` and `extract.model: deepseek-v4-flash`. Without it, the tool will fail with an actionable error message.

How does the plugin handle dynamic content that loads after a delay?

You can use the `browser_wait` tool to wait a bounded duration for lazy content. After the wait, calling `browser_snapshot` will return the updated page state. The plugin also handles mid-navigation snapshots by waiting for the new document to settle.