dsh-plugin-bridge

August 30, 2026 · View on GitHub

dsh-plugin-bridge moves a locked session to a new preset through a previewable five-part handoff

dsh-plugin npm ci license node ≥22 dsh rc.6 → 0.1.2-alpha.2 Listed in Awesome DSH Plugin dshfind

English | 中文

Halfway through a task and need another tool preset? Switching the produced session in place would leave tool history that belongs to the old assembly. Bridge previews a bounded five-part handoff, opens a clean target, and leaves the original session untouched.

A real Bridge migration in the official DeepSeek Harness WebUI

Quick start · Why Bridge · Evidence · Decisions · Compatibility

Quick start

Install from npm:

dsh plugin --profile web add dsh-plugin-bridge
# restart dsh web once

Pinned GitHub fallback:

dsh plugin --profile web add github:Totoro-qaq/dsh-plugin-bridge#v0.3.1

Then type in the official WebUI:

/bridge                       list target presets
/bridge --doctor              check the host contract after a DSH upgrade
/bridge code                  preview the handoff; change nothing
/bridge code --go             migrate, restate, then wait
/bridge code --go --continue  restate and start work in the same target request

On DSH rc.7 and later, the official WebUI renders /bridge as a native card. Text exposes the fixed five sections as ordinary fields and list rows; Markdown preserves full source freedom; Preview renders Markdown or a complete JSON tree. Long content scrolls inside the card while the action bar stays reachable. Confirm migration opens the created target session.

UIs that implement the official conversation.chat.commandview slot receive the same card automatically. Other custom UIs retain the complete server result, summary-file workflow, and target title/session-ID fallback; UI authors can reuse the framework-free dsh-plugin-bridge/client-contract export instead of reimplementing the wire. On an older or non-slot client, correct the printed summary file and run:

/bridge code --go --file <path>

Preview edits are temporary until migration is confirmed. Restarting the client or system may discard them; the source session remains untouched, and you can regenerate the preview.

Uninstall with dsh plugin --profile web remove dsh-plugin-bridge, then restart dsh web.

Why Bridge

PromiseWhat it means
Preview before execution/bridge <preset> creates no target and changes no source session. Review or edit the five-section handoff first.
Move state, not tool tracesDecisions, paths, current state, and next steps move to a clean preset. Incompatible calls from the old tool assembly do not.
Fail closedThe target goal is paused before kickoff. If that cannot be guaranteed, Bridge clears/cancels the target and sends no model request.

Installing Bridge adds zero prompt tokens to ordinary sessions. It is a host slash command, not a model tool or skill.

Evidence at a glance

The release gate is intentionally small and reproducible; these are regression results, not population guarantees.

GateResult
Five-part summary facts30/30
Target restatement / first useful work facts60/60 · 60/60
Critical facts / obsolete-value resurrection90/90 · 0
Existing image evidence / unresolved raw image5/5 · 5/5
Confirm / --continue target request shape2 · 1 to first useful work
Confirm extra, paired nominal median+8.1% vs --continue
Summary worker share of clean acceptance components20.74% nominal
Native WebUI repeat gate (preview / target facts)3/3 · 3/3, five facts each
DSH 0.1.2-alpha.2 npm install / doctor / targetclean · 13/13 · PTC paused

The token percentage varies widely with preset, response length, and cache state. The worker share is composition, not causal overhead versus no Bridge; the stable product claim is one additional confirmation request. Read the design and evidence boundaries, full release report, and vision report.

How it works

fold history -> five-part handoff -> preview/edit -> clean target session
             -> pause stored goal -> inject -> restate -> wait or continue
image history -> verbatim assistant evidence; unresolved originals use the attachment gateway

The five sections are Goal, Current state, Key decisions and conventions, Key files, and Next step. The original session is never rewritten; archive the target and return to the source if the handoff is unsatisfactory.

Migration decisions

SituationBridge behaviorCost / fidelity effect
Plugin installed, no /bridge callNo prompt injection or model tool0 Bridge prompt tokens
/bridge codeOne bounded summary worker; preview onlyNo target session is created
Default --goTarget restates and waitsOne explicit confirmation request before useful work
--go --continueRestate and work in one target requestLower request count; no background goal round
Image already has assistant analysisCopy that response verbatimNo raw image is resent by default
Image is unresolved and target accepts imagesCopy the original attachment and preserve the source VLMVision pricing comes from the selected provider
Image is unresolved and target is text-onlyPrompt admission rejects the image; Bridge sends a visible text fallbackNo hidden local VLM and no silent claim of visual understanding

Compatibility

DSH baselineServer handoffNative cardVerification boundary
0.1.0-rc.6YesNoNarrow RPC contract and text compatibility tests
0.1.0-rc.7 / rc.8YesContract-checkedClient-module/command-slot contract plus server fallback
0.1.1-rc.2YesYesInstalled official WebUI: doctor 13/13, edit/confirm/auto-open, three-run repeat gate
0.1.2-alpha.2YesYesOfficial npm install: typed controllers 13/13, split-client build, edit/confirm/PTC auto-open, clean removal

CI covers Node.js 22 and 24. Run /bridge --doctor after every Harness upgrade; it names missing required gateway methods instead of failing vaguely.

Current limits:

  • installation needs one WebUI restart;
  • the native card auto-opens the created target through the official Session runtime; older clients still receive the title and session ID fallback;
  • progress appears immediately while the worker runs; the current fixed three-run sample took 7.4–12.8 seconds of worker time, while previewTimeoutMs remains the hard bound;
  • text-only models cannot inspect unresolved images;
  • the native-card repeat gate is still only three fixed runs, so it is release evidence rather than a statistical guarantee.

The server command stays the compatibility core. The same package now adds an optional official client half for rendered editing and navigation; if that prerelease client contract fails to load, /bridge still returns the complete server result. See the implementation boundary.

Documentation

Development

npm ci
npm run verify

verify builds and type-checks both plugin halves, runs 167 tests, checks generated lib/ and datasets, then packs, installs, and imports the actual npm tarball. Tests spend no model tokens. prepublishOnly runs the same gate; GitHub releases also require the tag to match package.json before trusted npm publishing.

Community listings: Awesome DSH Plugin · Awesome DeepSeek Harness

Ecosystem discovery: dsh-TUI. Bridge remains a standard DSH plugin; TUI/std conformance is tracked separately.

License

MIT