DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
D

dsh-deepseek-sidebar

Deepseek Sidebar

DeepSeek web chat inside the DeepSeek Harness sidebar: one left-sidebar row opens it in the right pane, fullscreen on demand, and the login survives restarts.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:Dcmwfg/dsh-deepseek-sidebar#25c1d74d89adb1b57cb071b9084b0ee6ce1b7960
READMECompatibilityVersions

Compatibility and provenance

Deepseek Sidebar is published as dsh-deepseek-sidebar and currently resolves to version 1.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
10/20/2026

Versions

1.1.0stable
10/20/2026

Related plugins

Loading related plugins…

Latest
1.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 1
Weekly downloads
0
Last push
10/20/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

Related plugins

More verified plugins in integrations-communication.

Acp App@deepseek-ai/dsh-acp-appThe dsh ACP profile bundle: automation-only JSON-RPC stdio and process lifecycle over dsh-baseRemote Bridge@linxin666/dsh-remote-bridgeDSH remote bridge: the host half serves protocol v1 over one exact /ios/v1 WebSocket route — session roster, history baseline, prompting, live turn increments with tool activity, interrupt, and in-process agent approval — to a device paired by a one-shot Remote Web Ui@linxin666/dsh-remote-web-uiScan-to-pair remote access for the dsh web GUI that shares one official interface: a QR beside the settings button pairs phones and PCs into the same Web GUI (a portrait-touch adaptation layer for phones, full desktop on PCs) through one-time tokens and rDs Botds-botDS Bot: a team of long-lived Bots for DeepSeek Harness, with Main Bots, Bot-to-Bot messages and group chats

README

dsh-deepseek-sidebar

DeepSeek web chat inside the DeepSeek Harness sidebar.

One row in the left sidebar opens the free web chat (chat.deepseek.com) in the right pane, keeps it alive while you keep working in the conversation, expands to fullscreen on demand, and — with the helper script below — stops asking you to log in on every restart.

English | 中文


What you get

ActionResult
Click the DeepSeek row in the left sidebarThe right sidebar opens with a DeepSeek tab; the conversation stays untouched
Click Fullscreen in the tab toolbarThe chat takes over the main area
Click Dock to sidebar in the fullscreen toolbarBack into the right pane
Restart DSHThe chat is still signed in (see persistent login)

The webview reuses the sidebar browser partition (persist:zcodebrowseruse), i.e. the same cookie jar as the built-in sidebar browser — no second account, no token juggling.

Requirements

  • DeepSeek Harness desktop (Electron) whose UI exposes the sidebar.panellist, main, sidebarRightTabs and sidebar.right.pane.tab seats.
  • Node.js 20+ (DSH ships its own; nothing extra to install).
  • Windows only for tools/apply-persist-patch.ps1; the plugin itself is platform-neutral.

Install

The plugin is a plain DSH bundle: package.json + host half (index.js) + client half (client.js) + cordis.patch.yml.

Manual (works on every build)

  1. In <profile>/package.json add the dependency and the bundle entry:

    {
      "dependencies": { "dsh-deepseek-sidebar": "link:E:/path/to/dsh-deepseek-sidebar" },
      "dsh": { "profile": { "bundles": ["dsh-deepseek-sidebar"] } }
    }
    

    Write it as UTF-8 without BOM — the host JSON-parses it, and a BOM silently drops the whole profile.

  2. Create the junction so the loader can resolve the package:

    mklink /J "<profile>\node_modules\dsh-deepseek-sidebar" "E:\path\to\dsh-deepseek-sidebar"
    
  3. Fully restart the app. Client bundles are resolved at boot — a page refresh is not enough.

Managed

dsh plugin --profile <profile> add github:<owner>/dsh-deepseek-sidebar

Use it when your build accepts third-party bundles for that profile; otherwise stick to the manual step above.

Persistent login (one-time patch)

Out of the box DSH builds every sidebar webview session on a random, memory-only partition, so cookies die with the process and every launch asks you to sign in again. A plugin cannot override that: the main process rejects any guest whose partition differs from the one it issued.

tools/apply-persist-patch.ps1 rewrites the single statement that decides it:

pwsh -File tools\apply-persist-patch.ps1          # apply (idempotent, keeps app.asar.orig-bak)
pwsh -File tools\apply-persist-patch.ps1 -Check   # report only
pwsh -File tools\apply-persist-patch.ps1 -Restore # roll back
beforea 50-byte template producing dsh-sidebar-browser-<uuid> (no persist: prefix)
afterpartition="persist:"+workspace.replace(/\W/g,""); (same 50 bytes)

A DSH upgrade replaces app.asar, so re-run the script after every upgrade; otherwise the login starts disappearing again. The patch is equal-length and applied in place, so no header, offset or integrity field is invalidated, and it is idempotent — running it twice is harmless.

How it works

left sidebar row (sidebar.panellist, id "deepseek-chat")
  click -> ctx.layout.selectPanel("deepseek-chat")      (hard-coded in ui-sidebar.js)
     our shadow method intercepts the id
        -> sidebarRight.openTab("deepseek-chat")        right-pane tab
        -> expand the right column if collapsed
     the main area keeps the conversation (nothing remounts)

right-pane tab (kind "deepseek-chat", id "dsh-deepseek-sidebar/chat", keepMounted)
  body = ChatBody(mode="tab")   webview on partition persist:zcodebrowseruse
  toolbar: back / forward / reload / home / fullscreen
fullscreen  -> main key "deepseek-chat-full" = ChatBody(mode="full")

Why the obvious alternative — registering a main entry that opens the tab and returns to the conversation — cannot work is documented with the exact call sites in docs/architecture.md. Short version: selectPanel(id) replaces the conversation, the right-pane surface is mounted under the conversation, so it is already gone when the redirect runs (sidebarRight: no session surface is mounted).

Diagnostics

The desktop shell runs on a dsh-app:// origin and its renderer console is unreachable from outside, so the host half exposes a same-origin route:

MethodPathPurpose
GET/deepseek-sidebar/reportcollected entries (?clear=1 resets)
POST/deepseek-sidebar/reportclient batches { source, entries }

Entries are also appended to %TEMP%\dsh-deepseek-sidebar\diag.log (override with DSH_DEEPSEEK_SIDEBAR_LOG). Events worth reading: patch:layout, patch:intercept, openTab:ok|error, toSidebar:result, guest:acquired|did-finish-load.

Limitations

  • Without a sidebarRight service the row still opens the fullscreen page; the tab is simply never placed.
  • keepMounted: true keeps the tab webview alive while the fullscreen one is created, so two webviews can coexist for a moment. Each ChatBody owns its own guest lease for that reason.
  • DSH's own platform login cannot be reused by the web chat: that credential is scoped to the account origin and wiped on close. The sidebar partition is the only reusable session.

Uninstall

Drop the package from the profile dependencies and dsh.profile.bundles, delete the junction, restart. Run the patch script with -Restore if you also want the archive pristine.

License

MIT — see LICENSE.