DSH Browser

Headless-first, isolated browser automation for DeepSeek Harness.
Managed Chromium Sessions • Semantic References • Scoped Observation • Bounded Evidence

Package: @zseven-w/dsh-browser · Version: 0.1.0-rc.1 · Prerelease

English · 简体中文

Each Agent gets its own temporary Chrome/Edge/Chromium user-data directory, short-lived semantic references, deterministic high-risk rejection, and bounded evidence. Install it with `npm install @zseven-w/dsh-browser`; this is a prerelease, so the contract (v9) can still change between rc versions. [Quick start](#quick-start) · [Tools](#tools) · [Safety](#safety-and-evidence-boundaries) · [Development](#develop-locally) · [Documentation](#documentation)

DSH Browser fills a synthetic release form and observes PASS on a local test page

Real Browser driver execution on a styled local test fixture: fill → click → re-observe. Synthetic data only; this is the page under test, not a built-in plugin dashboard.

## Why DSH Browser `dsh-browser` does not attach to your personal browser or expose CSS selectors to the model. A tool call is always scoped by `exec.agent.id`; an Agent can only observe and act in the browser context it owns. ```text Agent A ── ephemeral Chromium context A ── opaque refs A Agent B ── ephemeral Chromium context B ── opaque refs B └──── bounded console/network evidence ``` The exported `zsevenBrowserDriver` service is the stable orchestration surface intended for `dsh-qa`. ## Quick start Requirements: Node.js `>=24.11.0`, pnpm, and an installed Google Chrome, Microsoft Edge, or Chromium. The default path is headless; no personal browser profile is used. Install DSH separately, then build this checkout from the repository root: ```sh npm install -g @deepseek-ai/dsh@latest pnpm install pnpm run build ``` Link the built checkout into a DSH Web profile, replacing the placeholder with its absolute path, then restart DSH: ```sh dsh plugin --profile web add link:/path/to/dsh-browser dsh web ``` Set an operator-owned [navigation allowlist](#operator-navigation-policy) before running against production or QA targets. Start with `browser_session_start`, call `browser_observe`, act using a fresh ref, then observe again to check the result. Finish with `browser_session_stop`. A `confirmed` action receipt proves dispatch, not the application's business outcome. ## Tools | Tool | Purpose | | --- | --- | | `browser_session_start` | Discover installed Chrome/Edge/Chromium and start one isolated context. | | `browser_observe` | Return a bounded semantic view — whole-page, or scoped to one element's subtree via `within` — with opaque epoch/fingerprint/expiry-bound refs. | | `browser_act` | `click`, `fill`, `press`, `navigate`, `scroll`, `select`, or `hover` after live re-resolution and target checks. | | `browser_evidence` | Return bounded, redacted console and network metadata. | | `browser_session_stop` | Close the context and delete its exact temporary profile directory. | Every `browser_act` result is a receipt with one of four states: - `confirmed`: the browser completed the validated dispatch. This does **not** claim the application's business outcome succeeded. - `unknown`: dispatch may have happened, but cancellation/navigation/runtime failure made the resulting page state uncertain. - `rejected`: policy, stale-ref, semantic-change, expiry, or hit-test checks stopped dispatch. - `failed`: the browser could not dispatch the action. `scroll` reaches off-viewport controls (by ref, centering the target) or pages the viewport (`direction` + optional `amount`); `select` chooses a native `