imroc/dsh-embedded-browser ↗★ 0

dsh-embedded-browser

A browser that lives inside the DSH host: every session gets its own tab, the AI drives it with lazily published browser_embedded_* tools, and a human watches or takes over that same tab in an on-demand right-Sidebar tab — no GUI, no external browser, logins/2FA/QR codes/CAPTCHAs included. 适合需要 AI 自动操作网页且允许人工随时接管浏览器的任务。

Package
dsh-embedded-browser
Compatibility
Unverified
Version
0.3.0
License
MIT
Last updated
Sep 21, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:imroc/dsh-embedded-browser

Configuration

Override any field from your own patch layer (~/.dsh/cordis.patch.yml, or the profile's cordis.patch.yml). The whole config key is replaced, so restate what you need:

- id: embedded-browser
  config:
    mode: headless            # auto | headed | headless
    viewport: 1280x800
    idleShutdownMinutes: 30
KeyDefaultMeaning
browserPath''Explicit Chrome/Chromium path; empty = auto-detect.
profileDir''Persistent profile; empty = $DSH_HOME/embedded-browser/profile. Shared by every session.
modeautoauto = headed on a private Xvfb when available, else headless.
screen1440x900x24Geometry of the private Xvfb.
windowSize1440x900Chrome window size in headed mode.
viewport1440x900Emulated page viewport — the same for every session tab, and the sidebar canvas coordinate space.
xvfbDisplay:99Preferred X display; the next free one is used if taken.
port0Fixed DevTools port; 0 picks a free one.
startUrlabout:blankFirst URL of each session's fresh tab.
extraArgs[]Extra Chrome switches.
snapshotMaxChars4000Page text budget per snapshot.
maxElements80Interactive elements listed per snapshot.
screencastQuality60JPEG quality of the stream (and of the polled stills).
screencastMaxWidth1440Maximum streamed frame width.
pollFrameMs140Poll interval for panels that cannot own the foreground screencast (~7 fps). Values below 60 are clamped.
askHumanTimeoutSeconds600Default budget of browser_embedded_ask_human.
idleShutdownMinutes10Stop the browser — and with it every session's tab — after this much idle time; 0 never stops it. Reaping is lossless: a tab reopens at its last URL, and the profile keeps every login.
autoStartfalseStart the browser with the host instead of on first use.
lazyToolstruePublish the ten tools only after the browser-use skill is invoked; false registers the suite at load.
startTimeoutMs20000How long to wait for the DevTools endpoint after launch.