dsh-web-search-ddg
aooyoo
Zero-token DuckDuckGo search provider for the DeepSeek Harness (DSH) web seam — local headless browser, no API key, no m…
MicroHEROX/dsh-Kimi-WebBridge
Kimi WebBridge for DeepSeek Harness — a third-party dsh plugin bundle that turns the local Kimi WebBridge daemon into 15 native kimi_webbridge_* browser tools (navigate, click, fill, snapshot, screenshot, evaluate, network, upload, PDF).
PROJECT TOPICS
PROJECT README
Give your DeepSeek Harness agents the user's real browser — with their login sessions.
A third-party plugin bundle for DeepSeek Harness (dsh). It turns the local Kimi WebBridge daemon into 15 native `kimiwebbridge` tools — the agent can open pages, read them, click, type, screenshot, run JS, inspect network traffic, upload files, and save PDFs in your real browser, logged in as you.*
| 🧭 Real browser, real sessions | The model drives your actual browser — cookies, logins and all. No scraping, no headless shell. |
| 🛡️ Local-only | Everything happens on your machine: plugin → 127.0.0.1:10086 daemon → your browser. No third-party service sees your traffic. |
| 📦 One file, no build | Pure ESM, zero runtime dependencies beyond the harness's own packages. No TypeScript, no transpile, no API keys. |
| 🔌 Standard Cordis bundle | name / inject / apply + defineTool — the exact pattern the shipped harness tools use. Never touches the dsh installation. |
| 🗂️ Tab groups like the product | One session = one tab group; the model names the group in your language on first use and closes it only when you ask. |
| Tool | Purpose |
|---|---|
kimi_webbridge_navigate |
Open a URL (new tab or current), set the tab-group label on first use |
kimi_webbridge_find_tab |
Re-select a task tab by URL; active:true borrows the tab you're viewing |
kimi_webbridge_list_tabs |
List the task's tabs |
kimi_webbridge_snapshot |
Read the page as an accessibility tree with @e element refs |
kimi_webbridge_click |
Click an element (@e ref or CSS selector) |
kimi_webbridge_fill |
Type into inputs, textareas and contenteditable rich editors |
kimi_webbridge_evaluate |
Run JavaScript in the page (async supported) |
kimi_webbridge_cdp |
Raw chrome.debugger passthrough (advanced escape hatch) |
kimi_webbridge_screenshot |
Screenshot the tab or one element; returns a file path |
kimi_webbridge_network |
Capture / inspect the tab's network requests |
kimi_webbridge_upload |
Upload files to a <input type=file> |
kimi_webbridge_save_as_pdf |
Render the current page to PDF; returns a file path |
kimi_webbridge_close_tab |
Close the current tab |
kimi_webbridge_close_session |
Close the whole tab group — only when you ask |
kimi_webbridge_start_daemon |
Auto-start the local daemon when unreachable |
| Component | Version |
|---|---|
DeepSeek Harness (dsh) |
0.1.0-rc.6 (tested) — any build shipping @deepseek-ai/dsh-tools should work |
| Node.js | ≥ 18 (global fetch) |
| Kimi WebBridge daemon | v1.11.5 (tested) |
| Kimi WebBridge browser extension | 1.11.5 (tested) |
| OS | Windows (tested); macOS/Linux supported by code paths, not yet verified |
Compatibility is pinned to what was actually verified. Run
node tests/smoke.mjsafter installing to check your environment.
Option A — from GitHub (recommended):
dsh plugin --profile demo add github:MicroHEROX/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 15 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.6, discussion #913): on rare transient pnpm failures the entry can remain in
dsh.profile.bundles, and the profile then fails to boot withcannot resolve profile bundle "dsh-kimi-webbridge"—dsh plugin installdoes not fix it (community analysis: #917). Recovery: edit the profile'spackage.jsonand delete"dsh-kimi-webbridge"fromdsh.profile.bundles, then boot again.
Only runtime files (
index.js,cordis.patch.yml, READMEs, LICENSE) are installed;docs/andtests/stay in this repository. Verified withnpm pack.
dsh web --profile demo.kimi_webbridge_* tools in the catalog.snapshot, saves the screenshot, and shows you the file.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
Done and verified
files.length verification, network capture, CDP layout metrics, screenshots, PDFs, tab management, daemon self-start.kimi_webbridge_start_daemon), tested against a dead port via --patch.@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.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).status/health tool yet (the daemon exposes GET /status, but there is no tool for it — a good first contribution).Browser.* are not available).Viable routes
startDaemonTool).GET /status; per-agent session mapping; config-driven enable/disable of individual tools.Dead ends (don't go here)
@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.mcp.exa.ai?login-style) — not supported by the daemon bridge; API keys are not a WebBridge concept either.start — the plugin never runs stop/restart/uninstall; that is always the user's call.127.0.0.1 only; the model operates your browser as you. Review what your harness is allowed to ask for.deepseek-harness installation.kimi_webbridge_cdp and kimi_webbridge_evaluate are powerful; disable them for untrusted model policies.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.
dsh, Cordis, dsh-tools).cordis, schemastery) that DeepSeek Harness is built on, and whose conventions this plugin follows.@deepseek-ai/dsh-tools resolves at runtime from the harness installation (no registry copies are installed)MIT. Not an official DeepSeek or Moonshot product. WebBridge is a product of Moonshot AI.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。