Preface¶
DeepSeek Harness (dsh) treats models, tools, sessions, and interfaces as replaceable plugins. When an intelligent agent needs to handle “websites that have already been logged into”, the common approach is to launch a separate headless browser: Cookies have to be re-injected, the login page has to be gone through again, and already open tabs cannot be reused. Copying Cookies into the configuration is cumbersome, and it is also easy to write session states into the model context.
dsh-better-browser takes a different approach: it does not drive the browser itself, but adapts the native Kimi WebBridge into 13 webbridge_* tools, allowing the Agent to use the Chrome or Edge browser that you are currently using and that has already logged in.
This article is collated after cross-checking with the community plugin directory page, GitHub repository README, package.json, and license, explaining what it is, how to install it, and where the tool boundaries lie. The community plugin directory deepseek-harness-plugin.com is an independent site and has no official affiliation with DeepSeek / Magic Square. Do not treat it as an official app store.
What is it¶
dsh-better-browser is a UI enhancement plugin maintained by titanwings, with the npm package name @dsh-external/dsh-better-browser. The current version is 0.3.6, licensed under BSD-3-Clause, primarily written in TypeScript, and requires Node.js 22.19+ or 24 and above. The GitHub repository was created on 2026-08-13, and had 9 stars when this article was verified.
The problem it solves can be summed up in one sentence: Let the Agent in DSH operate the user’s own browser, instead of spinning up a separate headless environment without login state.
The actual page navigation, clicks, and screenshots are completed by the Kimi WebBridge’s local daemon and browser extension. This plugin does not contain browser driver code, it only registers the local protocol as a Cordis bundle with the line id webbridge. Kimi WebBridge is an independent product by Kimi Inc., and needs to be installed separately in accordance with Kimi’s own terms.
The repository README lists the differences between headless browsers and this plugin in a comparison table, with four core differences:
1. Login state: Headless solutions usually require re-login or credential injection; this plugin reuses the existing state in the user’s browser.
2. Tabs: Headless solutions are maintained by the tool itself; this plugin uses real tabs and tab groups.
3. Browser state: Headless solutions easily write state into tool outputs or model context; this plugin leaves the state in the browser and local daemon.
4. Applicable scenarios: Headless is more suitable for isolated testing and crawling; this plugin is more suitable for post-login workflows and real page inspections.
Core Features¶
Operate the user’s real browser¶
The plugin hands off navigation, accessibility snapshots, clicks, form filling, and JavaScript execution to the logged-in browser. Login Cookies and already open tabs can continue to be used, without having to prepare a separate account for the Agent.
See evidence beyond the page¶
The Agent can take screenshots, check network activity, upload files from the workspace, and save the current page as a PDF. Screenshots and PDFs return file paths instead of stuffing full-page pixels or complete browser state into model requests. The repository notes that the maximum visible content for a single model request is 32,000 characters, and truncation will be clearly marked when this limit is exceeded.
One task corresponds to one tab group¶
A stable session name groups tabs belonging to the same task together. Different tasks do not mix with each other, and users can still see and take over the entire process in their own browser. Browser actions use exclusive scheduling, with all tools declaring isConcurrencySafe=false to avoid parallel modification of shared tabs.
Tabs will only be closed when the user explicitly requests it; task completion will not automatically clean up the user’s browser. Restarting the daemon will clear the tab groups maintained by it.
Do not modify DSH core¶
The plugin is installed as a Cordis bundle, registering the stable webbridge line and 13 webbridge_* tools. Uninstalling the bundle will remove the capabilities without patching DeepSeek Harness. This aligns with the official repository’s design of “Everything is a Plugin”: extending capabilities by mounting plugins rather than modifying core source code.
13 webbridge tools¶
The tools listed in the repository README are as follows:
| Tool | Purpose |
|---|---|
webbridge_navigate |
Open a URL and set the tab group title for the task |
webbridge_find_tab |
Re-select the task tab or borrow the currently active tab |
webbridge_snapshot |
Read the page accessibility tree and @e element references |
webbridge_click |
Click via @e reference or CSS selector |
webbridge_fill |
Fill input, textarea, or contenteditable elements |
webbridge_evaluate |
Run synchronous or asynchronous JavaScript on the page |
webbridge_screenshot |
Capture the page or specified element, return the file path |
webbridge_list_tabs |
List tabs for the current session |
webbridge_network |
Start/stop and check network activity |
webbridge_upload |
Upload files from the Agent’s workspace via file input |
webbridge_save_as_pdf |
Save the current page as a PDF |
webbridge_close_tab |
Close the current tab for the session |
webbridge_close_session |
Close all tabs for the session |
navigate and find_tab only accept absolute http/https URLs, rejecting local files and script protocols. Uploaded files must be within the calling Agent’s workspace; the plugin will resolve the canonical path and reject symlink escapes. Screenshot and PDF paths only accept the WebBridge-specific temporary directory.
Installation and Activation¶
The installation command given on the directory page is:
dsh plugin add github:titanwings/dsh-better-browser
The repository README recommends installing it to the web profile and pinning the current version tag v0.3.6 (corresponding to commit 506493224a21510c3f9cc7329a17e84af20879dc):
dsh plugin --profile web add github:titanwings/dsh-better-browser#v0.3.6
The directory page also notes that for reproducible installations, you can use the format github:titanwings/dsh-better-browser#commit, replacing commit with the specific hash.
This is only the DSH side setup. The browser operation chain also requires installing Kimi WebBridge first. The installation method given in the repository README is as follows (the script comes from Kimi’s CDN, please verify the source yourself before installing):
curl -fsSL https://cdn.kimi.com/webbridge/install.sh | bash
kimi-webbridge status
Running kimi-webbridge status should show "extension_connected": true. You also need to install the Kimi WebBridge extension from the official store:
- Chrome Web Store
- Microsoft Edge Add-ons
After installing and enabling the extension, keep the browser running, then check the status again. Only when the extension is connected will the complete link between the browser, daemon, and this plugin be ready. The Kimi product page and help center can be found at Kimi WebBridge and Help Documentation.
After installing the plugin, restart dsh web and refresh the page. The model will then see the webbridge_* tools. If the daemon is not running, the tools will return daemon_unreachable instead of silently degrading.
If the old package @dsh-external/dsh-kimi-browser is still installed in the profile, the repository requires removing it before installing the new version:
dsh plugin --profile web remove @dsh-external/dsh-kimi-browser
dsh plugin --profile web add github:titanwings/dsh-better-browser#v0.3.6
The package identity of @dsh-external/dsh-better-browser, the webbridge line id, all tool names, and configuration fields remain stable.
The optional configuration fields are as follows. Invalid URLs or non-positive integer timeouts will cause the plugin to fail to mount:
| Field | Default Value | Meaning |
|---|---|---|
baseUrl |
http://127.0.0.1:10086 |
HTTP/HTTPS address of the daemon |
timeoutMs |
30000 |
Timeout budget for a single tool call (in milliseconds) |
- id: webbridge
config:
baseUrl: http://127.0.0.1:10086
timeoutMs: 30000
Typical Usage¶
After installation, the reproducible example given in the repository is to directly ask the Agent:
Use my real browser to open GitHub, find the Issues of the current repository, check the latest three issues, and do not close my existing tabs.
The Agent will select a stable session for the task, navigate in sequence, read the page, and perform interactions. The recommended tool order is:
navigate → snapshot → click/fill → snapshot → screenshot/network
snapshot returns the accessibility tree and @e element references, and subsequent click/fill operations use the references or CSS selectors. screenshot returns the temporary file path written by the daemon, and you need to use the Read tool to view it afterwards.
Applicable Scenarios and Notes¶
It is suitable for these needs:
- The Agent must operate websites that have already been logged into, without wanting to copy Cookies or log in again.
- Navigation, clicks, form filling, screenshots, and network checks need to form a complete workflow.
- You want browser state to stay on the local machine instead of constantly being stuffed into the model context.
- Users need to be able to see and take over the tabs opened by the Agent in their own browser.
Current limitations (subject to the repository README):
- Sites that strictly check event.isTrusted may ignore synthetic clicks/fills.
- snapshot, click, fill, and evaluate only act on the top-level frame, and do not penetrate cross-domain iframes.
- Screenshots return temporary file paths, not inline images.
- Tab groups are maintained by the daemon, and restarting the daemon will clear them.
The security boundary needs to be noted separately. Local-first does not mean zero risk: the Agent operates on real logged-in sessions, and actions such as sending messages, submitting forms, and publishing content should still comply with DSH’s confirmation and permission policies. The plugin runs with the permissions of the current dsh process, and may execute code during installation. You should check the source code repository and license before installing; this plugin is licensed under BSD-3-Clause, and Kimi WebBridge is subject to Kimi Inc.’s own terms.
Summary¶
dsh-better-browser connects the user’s already logged-in browser to DeepSeek Harness, using 13 webbridge_* tools covering navigation, snapshots, interactions, screenshots, network checks, and tab management. It does not have a built-in browser driver, relying on the native Kimi WebBridge; it is a Cordis plugin, not a DSH core patch.
Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-better-browser/
GitHub: https://github.com/titanwings/dsh-better-browser