dsh Browser Assistant
English | 中文
Let DeepSeek Harness (dsh) read and operate the browser tab you already have open — pages become text-only structured snapshots, the model addresses elements by number, and your login state, session, and cookies stay intact.
One pnpm workspace, two halves joined by one WebSocket:
packages/bridge-dsh— the dsh Cordis plugin, released asbridge-dsh0.1.0, that mounts/ext/bridgeand registers 12browser_*tools.packages/extension— the Chrome MV3 extension, released asbridge-browser0.1.0(service worker + content script + side panel).
The model tool pipeline is text-only — pages become structured text snapshots, tools never capture screenshots. Separately, a user-initiated drag-select in the panel can send a cropped region screenshot to a vision-capable model. See docs/en/architecture.md for the full design.
Capabilities
| Capability | How |
|---|---|
| Read page | browser_snapshot → title/URL/main text/numbered controls/forms; delta:true returns only changes |
| Operate | browser_click / browser_type / browser_press / browser_scroll by stable number |
| Navigate | browser_navigate / browser_open_tab / browser_back / browser_forward / browser_reload |
| Read region / wait | browser_get_text / browser_wait |
| Ask the user | dsh ask_user_question renders in the panel; answers flow back to the model |
| Page awareness | extension tracks the active tab and injects its URL/title into each prompt as context |
| Region capture | user drag-selects a page region → cropped screenshot + DOM element list → sent to a vision-capable model |
| Model selection | panel re-pulls model.catalog on connect; dropdown with capability badge (vision / text / unknown) → session.selectModel |
Security model: the bridge carries its own bearer token; reads are auto-allowed, state-changing actions fail closed behind a side-panel approval; passwords/card numbers are masked and never leave the page.
Requirements
- Node.js
^22and Corepack/pnpm - dsh ≥
0.1.2-rc.1— the minimum supported version (the0.1.xTypert Gateway + Connection architecture); verified against0.1.3-alpha.1 - Chrome 116+
Install
The bridge plugin is published to npm; the Chrome extension ships as a pre-built zip on GitHub Releases. No local compilation needed.
1. Install the bridge plugin (from npm)
dsh plugin --profile web add -w "bridge-dsh@latest"
2. Download the Chrome extension
gh release download bridge-browser@0.1.0 --repo dragonTalon/dsh-browser-assistant
# → bridge-browser-0.1.0.zip
3. Restart dsh and verify
cd ~/.dsh && dsh web
curl http://127.0.0.1:3080/ext/bridge-config
# → {"wsUrl":"ws://127.0.0.1:3080/ext/bridge"}
4. Load the extension
Unzip bridge-browser-0.1.0.zip, then chrome://extensions → enable Developer mode → Load unpacked → select the unzipped folder. Open any http(s) page, click the extension icon to open the side panel, wait for 已连接 dsh, and chat.
Build from source (optional)
pnpm install --frozen-lockfile
pnpm build
# → packages/bridge-dsh/lib/index.js and packages/extension/dist/
Note for local development: dsh plugin add installs a packed snapshot (~/.dsh/profiles/<profile>/node_modules/bridge-dsh/), so rebuilding the workspace lib/index.js alone never reaches the running dsh. After every bridge source change:
bash packages/bridge-dsh/build.sh # rebuild the workspace artifact
bash scripts/sync-profile.sh # copy into the installed plugin dir (auto-backup)
# then restart dsh (or reload the plugin) so the new bundle is loaded
Releases
The two halves are released independently:
| Artifact | Package | Version | Git tag |
|---|---|---|---|
| dsh bridge plugin | bridge-dsh |
0.1.0 |
bridge-dsh@0.1.0 |
| Chrome extension | bridge-browser |
0.1.0 |
bridge-browser@0.1.0 |
The bridge plugin is on npm: bridge-dsh. Each tag also has a matching GitHub Release with its built artifact, produced automatically by the tag-triggered pipeline (.github/workflows/release.yml):
bridge-dsh— install from npm:dsh plugin --profile web add -w "bridge-dsh@latest"(abridge-dsh-0.1.0.tgzis also attached to its release)bridge-browser-0.1.0.zip— the extension bundle; load it viachrome://extensions→ Load unpacked (or submit to the Chrome Web Store)
Repository layout
packages/protocol/ shared zero-dependency wire protocol (single source of truth)
packages/bridge-dsh/ dsh bridge plugin (Cordis)
packages/extension/ Chrome MV3 extension (background / content / panel)
docs/en/ docs/zh/ architecture & feature docs (EN / 中文)
Docs
Documentation is bilingual — every page has an EN | 中文 switcher:
No comments yet. Be the first to write one.