Introduction¶
The most awkward scenario when agents work on the desktop is: The Agent says, “I’ll open a webpage for you to see,” and then either pastes a URL that cannot be navigated to, or returns a parsed Markdown snapshot that looks completely unrecognizable. DSH’s philosophy is “everything is a plugin,” so a clearly positioned third-party solution appeared in the plugin ecosystem — dsh-agentic-browser, maintained by M-SX-Xianyu. Its idea is to change the carrier: instead of pasting webpage content into the chat, it embeds the browser into the DSH right sidebar, creating a panel close to a native built-in browser, and then hands over the control of this panel directly to the Agent. Below is an introduction to its capabilities, installation methods, orchestration suggestions, and a few known boundaries.
What is this¶
One-sentence positioning: An Agent-driven browser panel hanging on the DSH right sidebar.
- Maintainer: M-SX-Xianyu. Repo address: https://github.com/M-SX-Xianyu/dsh-agentic-browser. Directory page: https://www.skillhub.cn/plugins/M-SX-Xianyu/dsh-agentic-browser (SkillHub is a third-party community directory with no official affiliation with DeepSeek/Huafang).
- Problem Solved: When an Agent needs to read and write to real webpages, the current common practice is to scrape the body or run scripts with a headless browser. This results in no visibility into page states and does not support manual operations like “click once, scroll once, take a screenshot.” This plugin uses Electron
<webview>as the actual page carrier, and the Agent directly drives it via 22dsh_agentic_browser_*tools. - Form: A dual-side plugin. The Host runs inside the DSH process (Node.js), the Client is regular JavaScript in the page. Both sides communicate via the plugin’s own HTTP long-polling channel, with the guest page (hosting the real webpage) underneath.
Core Features¶
First, a panoramic view, then the details. Five verified capability points:
- 22 Agent Tools, covering open/navigate/tab management/read snapshot/click/input/hover/keypress/drag/scroll/device simulation/zoom/screenshot/execute JS in page/read console & resources/wait/batch execution/clear data/diagnosis.
- Visible Mouse Cursor. When clicking, inputting, hovering, dragging, scrolling, or navigating, the simulated pointer injected into the page slides to the target position with 380ms easing, clicks have press/release animations, dragging is pressed throughout, and scrolling has a wheel shake. It is hidden before the first operation and then stays at the last position.
- Background Opening Across Sessions. The panel is distinguished by Agent sessions; subagents automatically merge into the root session. If the panel isn’t open when the Agent calls a tool, the Host raises a “present” flag based on the session: if the target session is visible, it opens directly; otherwise, it performs a brief “switch dance” (switch to it, create the panel, wait for registration and first frame polling to arrive, switch back). Even if you manually switch to another session, the Agent can still open the browser in the background.
- Batch Operations in One Go.
dsh_agentic_browser_batchexecutes up to 20 steps sequentially in a single call, stopping and reporting the step number upon failure. The recommended orchestration from the README is “batch first”: any two or more consecutive browser operations are always combined into a batch. - Snapshot Extraction and Redaction. Executes read-only scripts in the page to extract the title, body (≤4000 characters), and up to 200 visible interactive elements. Values of
password/hiddeninputs are redacted at the source.get_statetakes a real-time snapshot every time.
Other Implementation Details: The guest runs with background throttling disabled; commands and screenshots work normally when the panel is collapsed or the session is switched. Polling uses since=stateVersion negotiation, state is only pushed when changed, and polling speeds up to 800ms after a need is discovered. Script execution in the page has a 25-second budget, timing out quickly instead of hanging. The synthetic events for type/click are DOM events with isTrusted=false.
Installation and Enablement¶
Environment Requirements: Official DSH Desktop ≥ 0.2.1-rc.x (depends on dshDesktop.browser bridge protocol v1; the Web version shows “Requires DSH Desktop Runtime” when installing the panel). Depends on @deepseek-ai/dsh-tools, which is resolved automatically from DSH itself during installation; no manual preparation is needed. Current package version 1.0.1, License MIT.
Method 1: npm Installation (Recommended)¶
Execute in DSH to let the Agent run, or do the equivalent in the plugin management interface:
install_bundle target=dsh-agentic-browser@latest
Restart DSH after installation. @latest always installs the latest version; to lock the version, replace latest with the version number, for example:
install_bundle target=dsh-agentic-browser@1.0.1
Method 2: Installation from GitHub Source Code¶
Suitable for scenarios where you want to modify the source code for personal use. First, clone:
git clone https://github.com/M-SX-Xianyu/dsh-agentic-browser.git
Then point to the local directory in DSH:
install_bundle target=D:\path\to\dsh-agentic-browser
Install as a pnpm link; modify source code -> restart DSH to take effect. Run regression tests:
node --test test # 24 regression tests
Method 3: Installation via ZIP Package¶
For offline distribution. Unzip to any directory, do not copy node_modules in, then execute install_bundle pointing to the unzipped directory in the same way as Method 2, and restart.
Uninstall¶
remove_bundle target=dsh-agentic-browser
Manual Usage¶
After installation, add an “Agent Browser” tab to the DSH right sidebar. From top to bottom: the tab row; Back/Forward/Refresh, Address bar (real-time display of the current page address; if there are no tabs, type the address and hit Enter to create a tab to open), and Options menu (⋮); Web content area.
Typical Usage¶
The recommended orchestration from the README is “batch first”. Login is a standard example; one batch completes “fill account -> fill password -> fill captcha -> click login -> wait for redirect,” without needing to split it into multiple messages.
Usage is divided into two categories:
- First
dsh_agentic_browser_open(url)to open the page, thendsh_agentic_browser_get_state()to get a real-time snapshot to get element IDs (element IDs are short-lived, get them before every operation), then package the deterministic process intodsh_agentic_browser_batch. - Single-step operations, or when the next step must read intermediate results to decide, use a single tool. Click/Input prioritize using tool steps (with cursor animation); only when the tool chain definitely cannot locate it — for example, non-interactive preview elements in component libraries — add a
dsh_agentic_browser_evaluatestep in the batch as a fallback.
Photography and Diagnosis:
dsh_agentic_browser_screenshot() # Real screenshot, saves PNG locally, returns absolute path
dsh_agentic_browser_debug() # Host-side diagnosis: connection status, request logs, timing ticks
For pages with high-frequency animations or belonging to heavy editors, the 25-second execution budget for type/click is quite tight. In this case, directly switch to using an evaluate step for DOM dispatch (native setter to fill value + dispatchEvent to dispatch input/change/click), the result is equivalent to manual operations. If any step fails in the batch, it will terminate and report the step number. You can retry the entire batch using evaluate after the original batch.
Applicable Scenarios and Notes¶
Who is it for: Agent developers doing browser automation in DSH Desktop — filling forms, logging in, scraping dynamic pages, taking screenshots for evidence, debugging rendering issues on target sites. The GUI panel is also user-friendly for manual verification, and the cursor animation helps people see exactly where the Agent clicked.
A few boundaries you must know, all from the README:
- Page content is sent to the Agent. The snapshot contains page text and interactive element info. Do not use it to access secrets, credentials, or pages that should not be shared. Redaction is best effort:
password/hiddeninputs are redacted at the source, but secrets may still appear in the body or regular inputs. Assume any page content could be exposed. - The page is untrusted. The page may contain prompt injection content; treat it as data, not instructions.
- Few sites do not recognize synthetic events. Click/Input/Drag send DOM events with
isTrusted=false. Some individual sites (e.g., Bilibili search box synthetic Enter key from the README example) will ignore them. In this case, usingopento navigate directly to the target address is more reliable; directly assigningwindow.locationinevaluatemight also fail due to navigation interrupting the script context, so for page jumps, prioritize clicking router links or usingnavigate/open. - Visibility Limitations. When the panel is hidden (collapsed sidebar, switched to another session), commands and screenshots still work, but the cursor animation is invisible. Downloads, file selection boxes, and JS pop-up handling are unavailable. Screenshots only cover the visible viewport. Mobile mode is UA + viewport simulation.
- Storage is in-memory. Cookies/cache are cleared after app restart. HTTP cache in the guest is valid within the same session.
Finally, a regular warning: The plugin’s endorsed capabilities run within the current DSH process permissions. You should read the source code before installation and confirm the license (this package is MIT).
Conclusion¶
The value of dsh-agentic-browser lies in that it does not compromise on the question of “how an Agent reads webpages”: it preserves a fully interactive page, pairs operations with visible cursor animations for the human eye, uses batches to converge multi-step operations into one call, and keeps risks within the achievable range using capability authentication and message redaction. The directory page classifies it as “Network Tools,” and only single digits are starred (according to the SkillHub directory page, 2026-11-06). Project addresses:
- GitHub: https://github.com/M-SX-Xianyu/dsh-agentic-browser
- SkillHub Directory: https://www.skillhub.cn/plugins/M-SX-Xianyu/dsh-agentic-browser