DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Bridge Plugin — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-bridge-plugin

Bridge Plugin

DeepSeek Harness 插件:将本地 dsh-bridge 浏览器桥接(Python/Playwright,4 个 Web AI)作为原生 DSH 工具公开。PoC 注册 ask_deepseek;桥接本身通过 MCP stdio 复用,而非重新实现。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-bridge-plugin@0.1.2
README兼容性版本

兼容性与来源证明

Bridge Plugin 以 dsh-bridge-plugin 发布,当前版本为 0.1.2。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
npm
Registry 更新时间
2026/10/16

版本

0.1.2stable
2026/10/7
0.1.1stable
2026/10/6
0.1.0stable
2026/10/6

相关插件

正在加载相关插件…

最新版
0.1.2
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
47.6 kB
文件数
7
Surface
any
许可证
MIT
发布源
npm
周下载
245
安全扫描
✓ v0.1.2 扫描通过
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 integrations-communication 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Ab Publishdsh-ab-publish浏览器自动化发布工具,可登录任意网站并发布内容,整合为一个可发布的插件包Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "树外 wechat_scrape 工具:获取微信公众号文章,过滤推广区块,并将每篇文章保存为 Markdown 文件,供此机器的 dsh 配置文件维护者使用。" kind: "package-reference" ---Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 r

README

dsh-bridge-plugin

Ask four web AIs from inside DeepSeek Harness — no API keys, no API bills.

dsh-bridge-plugin exposes a locally running dsh-bridge as native DeepSeek Harness tools. It drives real, logged-in browser sessions on DeepSeek / Doubao / Zhipu / Qwen and returns their answers — consuming free web quotas instead of paid API tokens.

The business logic (Playwright automation, stealth, fallback chains, quality review, rate-limit state machine) stays in the Python bridge. This plugin is only a thin native shell that reuses it over MCP stdio — nothing is reimplemented.

中文说明 · Why not just MCP? · Troubleshooting

flowchart LR
    A["DeepSeek Harness<br/>model + agent loop"] -->|native tool call| B["dsh-bridge-plugin<br/>this package"]
    B -->|MCP over stdio| C["dsh-bridge<br/>Python + Playwright"]
    C --> D["DeepSeek"] & E["Doubao"] & F["Zhipu"] & G["Qwen"]

Features

🧩 Native toolsask_deepseek appears as a first-class DSH tool — no mcp__…__ prefix
♻️ One shared coreThe same Python bridge the MCP integration uses; no duplicated logic
🛡️ Built-in G20 guardRefuses to send while a site is frozen, before touching the network
🪶 Zero dependenciesPure ESM JavaScript, hand-rolled MCP client, no npm deps
🔍 Opt-in diagnosticsBreadcrumb logging you enable only when something misbehaves
🔌 Fail-softA bridge problem degrades this plugin only; it never takes DSH down

Why a native plugin?

DeepSeek Harness already speaks MCP, so the MCP path needs zero code. A native plugin buys what MCP cannot:

MCP bridgeThis plugin
Tool namemcp__dshbridge__ask_deepseekask_deepseek
UIgeneric MCP renderingnative presentCall card
ConfigMCP env/argsDSH Config (Standard Schema)
Lifecyclemanaged by the MCP clientCordis fiber, auto-cleanup on unload/HMR

Requirements

RequirementNotes
DeepSeek HarnessDesktop 0.2.0-rc.2 verified; declares dsh >= 0.1.7-rc.1
Node.js ≥ 20Provided by the DSH host itself
dsh-bridgeThe Python project (uv managed, Python ≥ 3.11)
Playwright browseruv run playwright install chromium inside dsh-bridge
Site loginsuv run dsh-login <site> before real-site calls

Install

Option 1 — npm (simplest)

In DSH open Settings → Plugins → Add plugin and paste the package name:

dsh-bridge-plugin

Or from a shell:

dsh plugin add dsh-bridge-plugin

Option 2 — local directory

Clone this repo, point the Add-plugin dialog at the folder, or use the bundled offline installer (equivalent to dsh plugin add, plus post-install verification):

powershell -ExecutionPolicy Bypass -File install.ps1
# uninstall:
powershell -ExecutionPolicy Bypass -File install.ps1 -Uninstall

Option 3 — GitHub

https://github.com/elysiamsia/dsh-bridge-plugin

Then fully quit and restart DSH Desktop. Closing the window may only minimize it to the tray — quit from the tray icon, or confirm no DeepSeek Harness process remains.

Configure

This package ships no machine-specific paths — its defaults assume dsh-bridge is on your PATH (e.g. after uv tool install . in the dsh-bridge checkout).

Running from a source checkout is the common case, and that path belongs in your profile, not in a published package. Add an override to ~/.dsh/profiles/<profile>/cordis.patch.yml:

# Replace with YOUR absolute path to the dsh-bridge checkout
- id: dsh-bridge-plugin
  config:
    command: uv
    args: [run, --no-sync, dsh-bridge]
    cwd: /absolute/path/to/dsh-bridge
    toolCallTimeoutMs: 180000

A patch replaces the whole config object for that id, so list every field you need.

All configuration fields
FieldDefaultPurpose
commanddsh-bridgeExecutable that starts the bridge
args[]Arguments passed to command
cwd""Working directory (inherited when empty)
env{}Extra environment variables
toolCallTimeoutMs180000Per-call timeout; real-site asks drive a browser

PYTHONIOENCODING=utf-8 and PYTHONUTF8=1 are always forced on the child process — the bridge prints emoji, and Windows' default GBK console would crash it.

Usage

Once loaded, the model can call the tool directly:

Use ask_deepseek to explain the CAP theorem, then summarize it in two sentences.
Tool reference
ToolParametersReturns
ask_deepseekprompt (required), conversation_id (optional){ reply, conversation_id?, site }
dsh_bridge_probeecho (optional){ ok, plugin, echo? } — proves the plugin loaded

dsh_bridge_probe is a zero-dependency diagnostic: if it works but ask_deepseek does not, the problem is the bridge, not the plugin.

⚠️ Rate limit — read before using real sites

This project is built around one hard rule:

Every real-site smoke run revokes all four site accounts at once.

Rule
Allowed sitedeepseek only, smoke tests only
Preconditionuv run --no-sync dsh-verify readiness must report hours_left >= 6.0
Renewaluv run --no-sync dsh-login deepseek

The bridge's ask path does not check the rate limit itself — so this plugin adds a pre-flight gate: before sending, it reads the verify state through the bridge's pure-logic route_task call (no browser, no network) and refuses when the site is frozen, returning an actionable dsh-login message. If the pre-flight check itself fails, the plugin fails closed rather than risk sending.

Troubleshooting

Switch on diagnostics

Logging is off by default. Turn it on for one run:

$env:DSH_BRIDGE_PLUGIN_DIAG = "$env:TEMP\dsh-bridge-plugin.log"

The plugin then writes breadcrumbs for module import, apply entry (including the real shape of ctx), every step, and any exception with a full stack. This is how the "plugin loads but the tool never appears" class of bug is solved without guessing.

The tool never appears

SymptomCheck
Plugin row shows failedDSH_BRIDGE_PLUGIN_DIAG — the log names the failing step
Plugin not listed at allIt was never installed, or DSH was not fully restarted
DSH crashes at startup%APPDATA%\@deepseek-ai\dsh-desktop\logs\crash-*-host.log
A UTF-8 BOM in the profile manifest crashes DSH at startup

DSH reads the profile's package.json with a bare JSON.parse. A BOM makes it throw SyntaxError: Unexpected token '' at readProfileManifest — a startup crash.

Windows PowerShell 5.1's Set-Content -Encoding UTF8 writes a BOM. Always write BOM-less:

[System.IO.File]::WriteAllText($path, $json, (New-Object System.Text.UTF8Encoding($false)))

install.ps1 does this and asserts the result. Mind the inverse trap too: PowerShell scripts containing non-ASCII text must have a BOM, or PS 5.1 decodes them as GBK and fails to parse.

Development

node probe/verify-plugin.mjs                    # pure + registry layers, no browser needed
# then, to also exercise the real bridge:
export DSH_BRIDGE_REPO=/path/to/dsh-bridge      # PowerShell: $env:DSH_BRIDGE_REPO="..."
node probe/verify-plugin.mjs
ScriptPurpose
probe/verify-plugin.mjsSelf-check: pure functions, tool registration, pre-flight gate, bridge
probe/verify-loader.mjsReplays the host loader's six steps against an installed profile
probe/verify-profile.mjsProfile health check (per bundle, detects BOM)
probe/mcp-probe.mjsRaw Node → Python MCP handshake + tools/list
probe/asar-extract.mjsRead a file out of DSH's app.asar (DSH_ASAR=…)

Machine-specific paths are never committed: every script takes them from environment variables and tells you what to set when one is missing.

Releasing

Releases are automated by .github/workflows/publish.yml, which publishes to npm when a v* tag is pushed:

npm version patch        # or minor / major — bumps package.json and creates the tag
git push --follow-tags   # the tag triggers the workflow

The workflow verifies that the tag matches package.json, runs the offline self-check, then publishes with provenance. It needs a repository secret named NPM_TOKEN — a granular access token with "Bypass 2FA" enabled (this npm account uses 2FA; a plain token is rejected in CI with E403). You can also trigger it manually from the Actions tab, where the default is a --dry-run.

Contributing

Issues and pull requests are welcome. Please run the self-check above before opening a PR, and keep the zero-dependency constraint — this package must stay installable via dsh plugin add with no build step and no transitive dependencies.

License

MIT

Acknowledgements

  • dsh-bridge — the Python browser bridge this plugin drives
  • DeepSeek Harness — the host and its Cordis plugin system