Skip to content

dsh-sidebar-browser

Verified

dsh-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

  • snapshot skips labels and duplicate icon-only links, truncates text (max_text_chars, default
    1. and refs (max_refs, default 80). The full page is still there for eval/selector.
  • screenshot expands 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.
  • open reuses 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 POST routes under /sidebar-browser-control/ and authenticates them with ctx.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