dsh-sidebar-browser
Verifieddsh-sidebar-browser Β· v1.0.0 Β· MIT Β· Web UI
Agent tool that drives DeepSeek Harness's built-in right-Sidebar Browser: open, navigate, snapshot, click, type, press, select, scroll, wait, evaluate JavaScript, and capture screenshots.
Install
dsh plugin add dsh-sidebar-browser Confirm the layer applied with dsh --profile default --dump-config β see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Tags
Creators
Readme
Sidebar Browser Control
A DeepSeek Harness plugin bundle that exposes the right-Sidebar Browser to the model as one
browser tool. It runs on Desktop, where the Browser panel is an Electron <webview>: the plugin
evaluates page scripts inside that guest, reads the rendered DOM, and captures the visible page as a
PNG attachment.
Requirements
- DeepSeek Harness Desktop 0.2.1-rc.2 or newer in the 0.2.x line (the Web carrier has no
<webview>and the tool reports that plainly). - The built-in right-Sidebar Browser (
@deepseek-ai/dsh-client-ui-sidebar-browser) enabled in the profile. - An on-screen Session in the Harness window while the tool is used.
Install
Install the published bundle from Settings β Plugins β Install bundle:
[email protected]
The same target works with the model-facing plugin_manager tool and its install_bundle action.
After installing, enable Sidebar Browser Control under Settings β Plugins.
Local development
To run a working copy instead of the npm release, link it from the profile:
"dependencies": { "dsh-sidebar-browser": "link:D:/agent/dsh/plugins/sidebar-browser-control" }
Linked-file edits take effect on the next profile recomposition (for example toggling the plugin); a process restart is not needed.
Tool
browser({ action, ... }) β one tool with an action enum:
| action | purpose |
|---|---|
status |
platform, Browser frames, active right-Sidebar tab, the on-screen Session check |
open |
open (or reuse) the Browser tab at a URL and bring it to the front |
navigate |
navigate the current tab |
back / forward / reload |
history and reload |
snapshot |
page text plus numbered ref values for interactive elements |
click |
click a ref or CSS selector |
type |
fill a field (native setter + input/change events); submit: true submits the form |
press |
key press via native input events, with a DOM fallback that submits focused forms |
select |
choose a <select> option by value |
scroll |
scroll the page or a ref into view |
wait |
wait for a selector or text to appear |
eval |
evaluate a JavaScript expression inside the page (JSON result) |
screenshot |
capture the visible page; returns a PNG image block |
close |
close the Browser tab the tool controls |
Typical flow: open β snapshot β click/type with the returned refs β snapshot again after a
navigation. Refs belong to the latest snapshot of the latest document.
Behaviour notes
snapshotskips labels and duplicate icon-only links, truncates text (max_text_chars, default- and refs (
max_refs, default 80). The full page is still there foreval/selector.
- and refs (
screenshotexpands the right Sidebar and focuses the Browser tab first. If the page lives in a Session that is not on screen, it reopens the same URL in a Browser tab of the current Session so the capture is never blank.openreuses the visible Browser tab when it can; otherwise it opens one in the current Session.- Page content is untrusted data. The guest has no Node, no preload and no access to the Harness origin, and the tool never treats page text as instructions.
- A long-poll bridge (no WebSocket) connects the two halves: the Host half registers two same-origin
POSTroutes under/sidebar-browser-control/and authenticates them withctx.connection.requestRejection; the Client half polls them from the Harness page, executes each command against the active frame, and posts the result back.
Layout
index.js Host half: browser tool, command queue, HTTP bridge, prompt section
client.js Client half: frame discovery, guest scripts, capture, poll loop
cordis.patch.yml bundle patch: inserts the Host plugin row
locale/en.json Plugin Manager title/description (English)
locale/zh.json Plugin Manager title/description (Chinese)
icon.svg Plugin Manager icon
Distribution
Published on npm as dsh-sidebar-browser.
License
MIT