dsh-plugin-browser-use

August 16, 2026 ยท View on GitHub

๐ŸŒ ไธญๆ–‡็‰ˆ | English

Browser automation for dsh (DeepSeek Harness). Registers webclaw3 as native wc3_* tools that drive your own logged-in Chrome โ€” skip re-login, auth popups, and most anti-bot walls.

  • Scrape & export โ€” search results, tables, downloads
  • Crawl login-walled pages โ€” ๅฐ็บขไนฆ, WeChat official accounts, Weibo, Taobao, admin dashboardsโ€ฆ
  • Interact โ€” click buttons, fill forms, post content
  • Reach SPA internals โ€” React fiber / Vue data / __NEXT_DATA__

How it works

dsh (web profile)
 โ””โ”€ this plugin: wc3_* tools + browsing-philosophy system prompt (auto-starts relay)
     โ””โ”€ webclaw3 engine (webclaw3/, upstream fatmind/webclaw3)
         โ””โ”€ relay (HTTP 127.0.0.1:3459 โ†” WebSocket)
             โ””โ”€ wc3-chrome extension โ”€โ”€> your logged-in Chrome

The plugin is a thin adapter: it translates the relay's HTTP API into dsh tools and distills webclaw3's browsing philosophy (SKILL.md) into the system prompt. The engine and docs live upstream and are synced via scripts/sync-webclaw3.sh.

Note: in dsh you should not also install webclaw3 as a skill โ€” this plugin already handles engine loading and usage guidance. Installing both causes duplicate instructions and conflicting relays.

Install

Prerequisites: dsh, Node >= 22, pnpm, Chrome.

curl -fsSL https://raw.githubusercontent.com/fatmind/dsh-plugin-browser-use/main/scripts/install.sh | bash

Or from a local checkout:

git clone https://github.com/fatmind/dsh-plugin-browser-use
cd dsh-plugin-browser-use && ./scripts/install.sh

The script installs dependencies โ†’ registers the plugin into the web profile (link:) โ†’ downloads & unzips the wc3-chrome extension. Then:

  1. Open chrome://extensions, enable Developer mode, and Load unpacked the extension folder printed by the script;
  2. Restart dsh (profiles load at startup);
  3. Tell dsh "check the browser environment" โ€” the model runs wc3_doctor and reports what's missing.

Re-running the installer updates the plugin.

Tools

Toolrelay opPurpose
wc3_doctor-Channel self-check (Node/engine/relay/extension); auto-starts the relay
wc3_tabstab.listList tabs and get tabIds; [ๅฝ“ๅ‰]=active tab, [้ป˜่ฎค]=wc3's default target
wc3_tab_opentab.createOpen a URL in a background tab (doesn't steal focus); becomes the new default
wc3_tab_closetab.closeClose a tab you opened; clears the default target if it was closed
wc3_tab_activatetab.list + local statePin a tab as the default operation target (no more "current tab" drift)
wc3_snapshotpage.ariaTreeAria-tree snapshot with [ref_N] ids for interaction
wc3_get_textpage.getTextFull-page plain text for reconnaissance
wc3_evalpage.evalRun arbitrary JS in the page; preferred for structured extraction
wc3_click / wc3_fill / wc3_scroll_topage.click / page.fillForm / page.scrollToInteract by ref_N (React/Vue-safe)
wc3_searchpage.searchFind page elements by keyword
wc3_wait_forpage.waitForElementWait for an element to appear

Page tools (snapshot/get_text/eval/click/fill/scroll_to/search/wait_for) accept tabId optionally โ€” when omitted, they act on wc3's most recently active tab (newly opened, last used, or the active tab; marked [้ป˜่ฎค] in wc3_tabs). wc3_tab_close keeps tabId required to prevent accidental closes. If the extension briefly disconnects, tools auto-retry (self-heal within ~10s) before reporting an error.

Tool results are plain text with user-facing guidance, capped at 50,000 chars by default (configurable), truncated when exceeded.

Configuration

Edit packages/browser-use/cordis.patch.yml after install if needed:

FieldDefaultDescription
relayHost / relayPort127.0.0.1 / 3459Relay address
toolTimeoutMs60000Per-call timeout (ms)
maxResultChars50000Max chars per result
autoStartRelaytrueAuto-run webclaw3.mjs start when the relay is down
engineDir"" (auto-located)Engine directory; or set DSH_WC3_ENGINE_DIR

License

MIT