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.

Save Button — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins

dsh-save-button

Save Button

Download files delivered by `present` straight from the Web GUI delivery card — no SFTP, no extra tools.

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

npx -y @deepseek-ai/dsh plugin --profile web add dsh-save-button@0.1.5
READMECompatibilityVersions

Compatibility and provenance

Save Button is published as dsh-save-button and currently resolves to version 0.1.5. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

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

Versions

0.1.5stable
10/10/2026
0.1.4stable
9/28/2026
0.1.2stable
9/27/2026

Related plugins

Loading related plugins…

Latest
0.1.5
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
115.2 kB
Files
11
Surface
web
License
MIT
Source
npm
GitHub
★ 0
Weekly downloads
0
Last push
10/10/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 productivity-workflow.

Deepseek Ipptdeepseek-ipptiPolloWork PPT Studio and its curated slide templates as a native DeepSeek Harness conversation view.Codex Ui@michengai/dsh-codex-uiDSH Codex UI — 为 DeepSeek Harness Web 提供 Codex 风格侧栏、工作区会话树、全局搜索和轮次导航 · A Codex-style sidebar, workspace session tree, global search, and turn navigation for DSH WebRemotedsh-remoteRemote-work assistant for DeepSeek Harness: connect SSH (password/key/agent/keyboard-interactive/proxy jump), pick a remote workspace, operate on it with 22 rw_* tools (incl. rw_edit/rw_stat/rw_mkdir/rw_remove/rw_move/rw_forward), conflict-aware mirror syAi Novel Writer@ethanyoq/dsh-ai-novel-writerA local-first novel project plugin for DeepSeek Harness

README

dsh-save-button

English | 中文

Adds a Download button next to Open on DSH Web GUI delivery cards: files the model delivered with present (a zipped build, a report, a dataset, images…) go straight to your machine through the browser — no SFTP/SCP detour.

┌──────────────────────────────────────────────────────────────────┐
│  📄  HexHowitzer-windows-x86_64.zip                    ┌────────┐ │
│      Preview in sidebar                                │ Open ▾ │ │  ← official card
│                                                        └────────┘ │
└──────────────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│  📄  HexHowitzer-windows-x86_64.zip           ┌────────┐ ┌──────┐ │
│      Preview in sidebar                        │ Open ▾ │ │ ⬇ Download │  ← with this plugin
│                                                └────────┘ └──────┘ │
└──────────────────────────────────────────────────────────────────┘

Most useful when DSH runs remotely or inside a container (cloud host, GPU box, WSL, intranet server): the file lives on the Host, the browser is in your hands, and the only thing missing is a button.

Features

  • One-click download from the delivery card: every file declared by present gets a Download button. It responds with Content-Disposition: attachment, so the browser's own download manager streams it to disk — a 100 MB zip never has to fit in page memory.
  • Official card abilities preserved: clicking the card or Open previews the file in the sidebar; the ▾ menu still offers the official Open in default app and Open containing folder / Show in Finder / Show in File Explorer, disabled with an explanation when the Host has no desktop.
  • In-place status feedback: Preparing download… / Download started / Download failed. Click to retry. Open and reveal report their own status the same way.
  • No interference with official rendering: the "Files changed" chips and the multi-file collapse (All N files / Collapse) keep working, and a Turn without a delivery is left entirely to the official renderer.
  • Zero dependencies, zero build: a plain ESM host half plus a hand-written browser bundle — no postinstall, no compile step.
  • Bilingual UI: follows the GUI language (English / 中文).
  • Works on DSH 0.1.5-rc.*, 0.1.7-rc.* and 0.2.0-rc.*: see Supported DSH versions.

Install

Install from npm into your web profile:

dsh plugin --profile web add dsh-save-button

A git checkout works too — the package has no build step, so lib/ ships as-is:

dsh plugin --profile web add github:hanbernate/dsh-save-button

For local development, link this checkout instead so edits take effect through Loader recomposition:

dsh plugin --profile web add /path/to/dsh-save-button

If dsh is not on your PATH, use the CLI you started the Web GUI with, for example:

node ~/.dsh/profiles/node_modules/@deepseek-ai/dsh/lib/bin.js \
  plugin --profile web add dsh-save-button

This appends dsh-save-button to the profile's dsh.profile.bundles and lets the Loader insert the entry declared in this package's cordis.patch.yml. A link: install keeps the Host half live through Loader recomposition; an npm or git install serves the published code.

To take effect:

  • Reload the browser page after installing (the browser half is a bundle loaded with the page, so a reload is what fetches it again).
  • If the button still does not appear after a reload, restart the Web GUI: dsh web (or however you start it).

To verify: have the agent present any file (for instance ls a zip you just built) and a Download button shows up on the right of the card.

Usage

The button sits to the right of the official Open button, one per delivered file:

ActionBehavior
Downloadfirst sends HEAD /api/download.button?sessionId=…&seq=…&index=… to probe availability, then hands the file to the browser's download manager with <a download>; the file name comes from the Host's Content-Disposition
Opensame as official: previews the file in the sidebar
▾ menuofficial actions: open in default app / open containing folder (Finder / File Explorer); disabled when the Host has no desktop
On failurethe reason is shown in place (e.g. "file is no longer in this session") and the same button retries
More than 4 filesthe official collapse is preserved: All N files / Collapse

Downloads are addressed only by the (sessionId, seq, index) triple — there is no path parameter — so the only files that can be downloaded are the ones this session declared with present. Resolution, containment and type checks, and chunked reads all happen in the Host half. See doc/architecture.md (Chinese).

Supported DSH versions

DSH RCturnTail contractIntegrationStatus
0.1.0-rc.2 … 0.1.2-rc.1— (no present / workspaceFiles)not applicablenot supported
0.1.5-rc.1 / rc.2 / rc.3chainclaims the whole turn row with priority: -1 and draws the card itselfsupported (rc.3 verified 11/11)
0.1.7-rc.1 / rc.2listofficial card untouched; injects a Download button into deliverables.file.actionssupported (rc.2 verified 12/12)
0.2.0-rc.1 / rc.2listsame as 0.1.7: official card untouched; injects a Download button into deliverables.file.actionssupported (rc.2 verified 12/12)

At init time the plugin picks its adapter from what the runtime actually declares — a client plugin cannot read the DSH version — so one installation works on every supported line. The contract list, test layers, itemized verification records and the tag-switching handbook are in doc/compatibility.md (Chinese).

Uninstall

dsh plugin --profile web remove dsh-save-button

Then reload the page. Once the plugin is gone the official delivery card is back exactly as before — this plugin never modifies any official file.

Troubleshooting

SymptomWhat to do
No Download button on the cardreload the page first; then check that dsh-save-button is listed in dsh.profile.bundles in ~/.dsh/profiles/web/package.json; if it still does not show up, restart dsh web
Button appears, click reports "Download failed. Click to retry."open the browser devtools and look at the /api/download.button?... response: 401/403 = authentication, 404 = that declaration is not in the Session (different session, or the event was pruned), 422 = not a regular file / outside the workspace
Open reports "Open failed"expected when the Host has no desktop (a headless server); use Download or the sidebar preview instead
exports["./client"] must be a stringthe exports field in package.json got broken; run npm test for the guard
Edited lib/client.js but nothing changedreload the page (the Host serves the bundle by revision, and it is not refetched until the page reloads)

Docs

The detailed docs under doc/ are currently written in Chinese:

DocumentContents
doc/architecture.mdhow a download works end to end, the two halves, the adapter + capability-probe selector, the icon capability table, security boundary, design decision records
doc/compatibility.mdsupport matrix, official contract list (C1–C10), history of the two breaking points, test layers and cases, real-machine verification records (V1–V23), tag-switching handbook
doc/development.mddirectory layout, running tests, how edits take effect, steps for adding an adapter, pre-release checklist, development pitfalls

License

MIT, see LICENSE.