dsh-builtin-browser
English | 中文
A built-in browser plugin for DeepSeek Harness. The agent and the user look at the same page: the agent drives the page in the conversation's right sidebar, and no separate browser window opens.
Demo video and screenshots are coming soon.
Highlights
- Shared page. Navigation, element snapshots, clicks, typing and screenshots run over the Chrome DevTools Protocol on the sidebar's
<webview>, so the user watches (and can take over) exactly what the agent does. - Numbered snapshots. Every element gets a number that later actions target with
target.by: "ref". A click is hit-tested first, so a covered element is a reported failure instead of a click in the wrong place. - Settled results. Click, type, select and similar actions return the settled page in the same result, so the model needs no follow-up snapshot.
- Human in the loop. Page dialogs, HTTP authentication and downloads become one status line above the page; CAPTCHA and sign-in prompts are handed to the human instead of being retried.
- Safe by default. Arbitrary page scripts, downloads, cookie export and cookie restore are off until you switch them on in the settings panel.
- Robust. Every CDP command has a timeout and a new command can interrupt a stuck navigation, so one bad page cannot stall a turn.
- Desktop-width pages. In a narrow sidebar, pages are laid out 1280 px wide and shrunk to fit; coordinate clicks stay accurate through zoom and display scaling.
33 dsh_browser_* tools are registered; see docs/reference.md for the tools, settings, rows and known limitations.
Requirements
- A DeepSeek Harness checkout (this package is a
workspace:*package of it) built from a tree that contains the packages named inpackage.jsonpeer dependencies. - The Harness desktop app (
apps/desktop), which owns the sidebar<webview>guests. The plugin cannot run without the shell half inshell/browser-bridge.ts: a token-authenticated loopback socket that publishes$DSH_HOME/dsh-builtin-browser-bridge.jsonand speaks newline-delimited JSON (version/list/cdp/ensureSidebar/showTab/closeSidebarBrowser, protocol generation 2). Without it every page operation fails with a named error; no fallback window is opened.
Install
- Copy this repository into
custom/packages/builtin-browserof your Harness checkout and runpnpm install. - Integrate the desktop shell half: apply
shell/harness-shell.patch, copyshell/browser-bridge.ts, and wireipc.ts/main.tsas described in docs/shell-integration.md. The patch adds what the bridge relies on (prompt queue, agent-input tracking, sidebar client service) and is based on upstream commitf3803c96(0.2.1-rc.3). - Add the four rows from
cordis.patch.ymlto your profile. Keep the inert package-root row: the desktop shell readsdsh.clientfrom it to load the settings panel. - Build with
pnpm --filter @corp/dsh-builtin-browser bundle.
The @corp scope is the placeholder scope of the custom/ packages; keep it, or rename it consistently in package.json, cordis.patch.yml and client.js.
Origin and license
Vendored from wqty123/dsh-browser (dsh-builtin-browser 0.4.14, MIT) and reduced to the sidebar carrier, with many behavior changes listed in docs/reference.md. Thanks to the upstream authors. MIT licensed; the original LICENSE is retained.
No comments yet. Be the first to write one.