DeepSeek Harness plugin

dsh-kimi-webbridge-bernardx

Kimi WebBridge for DeepSeek Harness: drive the user's real browser (navigate, click, fill, snapshot, screenshot, evaluate, network, upload, PDF) through the local Kimi WebBridge daemon

Jump to install

Source facts

Repository
Bernardxu123/dsh-kimi-webbridge
Latest update
Aug 19, 2026
Category
Tools & Capabilities
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/Bernardxu123/dsh-kimi-webbridge
Plugin: dsh-kimi-webbridge-bernardx
Author: Bernardxu123

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

<div align="center">

Kimi WebBridge for DeepSeek Harness

Give your DeepSeek Harness agents the user's real browser — with their login sessions.

!English ![简体中文](README.zh-CN.md)

![version](package.json) ![dsh](https://github.com/deepseek-ai/deepseek-harness) ![WebBridge](https://www.kimi.com/zh-cn/features/webbridge) ![node](https://nodejs.org) ![license](LICENSE) ![dsh-plugin](https://github.com/topics/dsh-plugin)

*A third-party plugin bundle for DeepSeek Harness (dsh). It turns the local Kimi WebBridge daemon into 16 native kimi_webbridge_* tools — the agent can open pages, read them, click, type, screenshot, run JS, inspect network traffic, upload files, save PDFs, and check daemon/extension health in your real browser, logged in as you.*

</div>

---

🚀 What's new in 0.2.0

This is the actively maintained 0.2.0 line. Compared with the original 0.1.0 plugin, it adds:

Area0.1.0 (original)0.2.0 (this repo)
Health checkNo status toolkimi_webbridge_status — tells agents whether the daemon is down or the extension is disconnected
Daemon readinessPolled list_tabs; waited up to 20s when the extension was missingPolls GET /status; returns immediately with a warning when the extension is not connected
Tool policyOnly startDaemonTool on/offdisabledTools — hide high-risk tools such as cdp / evaluate
Smoke testFailed on the second Windows run (EEXIST)Idempotent on Windows; SKIP_LIVE=1 for CI-only offline runs
CINoneGitHub Actions offline matrix (Windows / macOS / Linux × Node 18/20/22/24)
Release hygieneNo changelogCHANGELOG.md + version 0.2.0
DocsMixed rc.6 / rc.7 referencesUnified to dsh 0.1.0-rc.7, daemon v1.11.6

---

✨ What it does

🧭 Real browser, real sessionsThe model drives your actual browser — cookies, logins and all. No scraping, no headless shell.
🛡️ Local-onlyEverything happens on your machine: plugin → 127.0.0.1:10086 daemon → your browser. No third-party service sees your traffic.
📦 One file, no buildPure ESM, zero runtime dependencies beyond the harness's own packages. No TypeScript, no transpile, no API keys.
🔌 Standard Cordis bundlename / inject / apply + defineTool — the exact pattern the shipped harness tools use. Never touches the dsh installation.
🗂️ Tab groups like the productOne session = one tab group; the model names the group in your language on first use and closes it only when you ask.

🛠️ What the model gets — 16 tools

ToolPurpose
kimi_webbridge_navigateOpen a URL (new tab or current), set the tab-group label on first use
kimi_webbridge_find_tabRe-select a task tab by URL; active:true borrows the tab you're viewing
kimi_webbridge_list_tabsList the task's tabs
kimi_webbridge_snapshotRead the page as an accessibility tree with @e element refs
kimi_webbridge_clickClick an element (@e ref or CSS selector)
kimi_webbridge_fillType into inputs, textareas and contenteditable rich editors
kimi_webbridge_evaluateRun JavaScript in the page (async supported)
kimi_webbridge_cdpRaw chrome.debugger passthrough (advanced escape hatch)
kimi_webbridge_screenshotScreenshot the tab or one element; returns a file path
kimi_webbridge_networkCapture / inspect the tab's network requests
kimi_webbridge_uploadUpload files to a <input type=file>
kimi_webbridge_save_as_pdfRender the current page to PDF; returns a file path
kimi_webbridge_close_tabClose the current tab
kimi_webbridge_close_sessionClose the whole tab group — only when you ask
kimi_webbridge_statusCheck daemon/extension health (GET /status)
kimi_webbridge_start_daemonAuto-start the local daemon when unreachable

✅ Requirements & versions

ComponentVersion
DeepSeek Harness (dsh)0.1.0-rc.7 (tested) — any build shipping @deepseek-ai/dsh-tools should work
Node.js≥ 18 (global fetch)
Kimi WebBridge daemonv1.11.6 (tested)
Kimi WebBridge browser extension1.11.5 (tested)
OSWindows (tested); macOS/Linux supported by code paths, not yet verified

> Compatibility is pinned to what was actually verified. Run node tests/smoke.mjs after installing to check your environment.

📦 Installation

Option A — from GitHub (recommended):

dsh plugin --profile demo add github:Bernardxu123/dsh-kimi-webbridge
dsh --profile demo web

Option B — from a local checkout:

dsh plugin --profile demo add ./dsh-Kimi-WebBridge
dsh --profile demo web

Option C — no install, one-off overlay (kimi-webbridge.overlay.yml):

- insert:
    - id: kimi-webbridge
      name: '/absolute/path/to/dsh-Kimi-WebBridge/index.js'
      config:
        session: dsh
dsh web --patch ./kimi-webbridge.overlay.yml

Option D — permanent merge: copy the insert block from cordis.patch.yml into $DSH_HOME/profiles/<name>/cordis.patch.yml (or $DSH_HOME/cordis.patch.yml for all profiles).

Uninstall:

dsh plugin --profile demo remove dsh-kimi-webbridge

The CLI removes the dependency and reconciles the profile's layer list; the 16 tools unregister. Verify the row is gone:

dsh --profile demo --dump-config    # the kimi-webbridge row must not appear

> ⚠️ Known harness caveat (dsh 0.1.0-rc.7, discussion #913): on rare transient pnpm failures the entry can remain in dsh.profile.bundles, and the profile then fails to boot with cannot resolve profile bundle "dsh-kimi-webbridge"dsh plugin install does not fix it (community analysis: #917). Recovery: edit the profile's package.json and delete "dsh-kimi-webbridge" from dsh.profile.bundles, then boot again.

> Only runtime files (index.js, cordis.patch.yml, READMEs, LICENSE) are installed; docs/ and tests/ stay in this repository. Verified with npm pack.

🚀 Quick start

1. Install the bundle and start dsh web --profile demo. 2. Wait for the kimi_webbridge_* tools in the catalog. 3. Ask: "Open example.com in the browser, tell me what's on the page, and screenshot it." 4. The agent opens a tab group (named in your language), reads the page via snapshot, saves the screenshot, and shows you the file.

⚙️ Configuration

All keys optional; override the kimi-webbridge row from a later patch layer, restating every key you need:

- id: kimi-webbridge
  name: dsh-kimi-webbridge
  config:
    baseUrl: 'http://127.0.0.1:10086'   # daemon endpoint
    session: dsh                        # daemon-side tab-group name (one per profile)
    requestTimeoutMs: 120000            # per-request timeout
    startDaemonTool: true               # expose kimi_webbridge_start_daemon
    daemonBin: null                     # override the auto-detected daemon binary
    maxRenderText: 50000                # cap on rendered result text
    disabledTools: []                   # optional tool names to hide, e.g. ['kimi_webbridge_cdp', 'kimi_webbridge_evaluate']

✅ Done / ⚠️ Not done

Done and verified

  • All 16 tools end-to-end tested through the real harness + real browser (dsh 0.1.0-rc.7, daemon v1.11.6): navigation, clicking through to real sites, form fill + value verification, file upload + files.length verification, network capture, CDP layout metrics, screenshots, PDFs, tab management, daemon self-start, status/health checks.
  • Automatic retry for capture tools (a fresh tab's first screenshot can stall while the page settles — a retry returns instantly).
  • Graceful daemon-unreachable errors with a self-heal path (kimi_webbridge_start_daemon), tested against a dead port via --patch.
  • Per-tool enable/disable via disabledTools (hide cdp/evaluate for untrusted policies).
  • Schema strictness verified against the real @deepseek-ai/dsh-tools compile + raw-JSON-schema boundary checks (tests/smoke.mjs).

Not done / known limits

  • fill/click are ignored by sites that strictly check event.isTrusted (banking portals, captchas) — those need manual interaction. Trusted input is possible at the protocol level via cdp, but that is advanced.
  • Cross-origin iframes are out of scope: snapshot/click/fill/evaluate operate on the top frame only.
  • session is per-profile, not per-agent: subagents share the same tab group. Per-agent session isolation is a future idea (see below).
  • macOS/Linux code paths exist but were not verified on real machines.
  • CDP is limited to what the extension exposes (browser-level domains such as Browser.* are not available).

🗺️ Roadmap — routes that work and routes that don't

Viable routes

  • Direct HTTP to the daemon (this plugin) — the only interface WebBridge exposes today.
  • ✅ Per-profile session naming; config-driven tool toggles (startDaemonTool).
  • ✅ Health/status tool over GET /status.
  • ✅ Per-tool enable/disable via disabledTools.
  • 🔜 Per-agent session mapping.
  • 🔜 Publishing to npm once the harness API is stable.

Dead ends (don't go here)

  • Mounting via @deepseek-ai/dsh-mcp-client — WebBridge has no MCP endpoint (/mcp and /sse return 404; only /command and /status exist). The MCP route used by e.g. Exa does not apply.
  • OAuth login flows (mcp.exa.ai?login-style) — not supported by the daemon bridge; API keys are not a WebBridge concept either.
  • Daemon lifecycle beyond start — the plugin never runs stop/restart/uninstall; that is always the user's call.
  • Headless / VM automation — the model acts as you, in your browser; this is not a scraping or CI tool.

🔐 Security

  • The daemon listens on 127.0.0.1 only; the model operates your browser as you. Review what your harness is allowed to ask for.
  • The plugin stores and sends no credentials, has no filesystem access, and never modifies the deepseek-harness installation.
  • kimi_webbridge_cdp and kimi_webbridge_evaluate are powerful; disable them for untrusted model policies with disabledTools: ['kimi_webbridge_cdp', 'kimi_webbridge_evaluate'].

🧪 Verifying your install

node tests/smoke.mjs

Offline registration + schema-boundary checks always run; live daemon round-trips (navigate → snapshot → evaluate → screenshot → close) run when the daemon is reachable. Set SKIP_LIVE=1 to force offline-only mode (used by CI).

🙏 Credits & thanks

  • DeepSeek — for the DeepSeek Harness agent runtime and its plugin architecture (dsh, Cordis, dsh-tools).
  • Moonshot AI — for Kimi WebBridge, the local browser bridge this plugin drives.
  • The Koishi/Cordis ecosystem — for the plugin framework (cordis, schemastery) that DeepSeek Harness is built on, and whose conventions this plugin follows.

📌 Version & compatibility

  • Plugin: 0.2.0
  • Tested with: dsh 0.1.0-rc.7 · Node 24 (≥18 required) · Kimi WebBridge daemon v1.11.6 / extension 1.11.5 · Windows
  • Dependencies: none declared — @deepseek-ai/dsh-tools resolves at runtime from the harness installation (no registry copies are installed)

📚 More docs

  • [Engineering documentation](docs/engineering.md) · [Glossary](docs/glossary.md) · [API reference](docs/api-reference.md) · [Solutions & pitfalls](docs/solutions.md)

📄 License

[MIT](LICENSE). Not an official DeepSeek or Moonshot product. WebBridge is a product of Moonshot AI.