Skip to content

CocoSgt/dsh-attachments

72Last commit Aug 14, 2026

dsh-attachments DSH plugin

dsh-attachments is a third-party plugin for DeepSeek Harness that lets you bring any file into a conversation. Files are stashed into the session workspace, rendered as cards above the composer, and injected into the model request without polluting the draft. Images are read by the model via the native read_image tool, so non-vision models are never blocked.

How to install the dsh-attachments DSH plugin

dsh plugin --profile web add dsh-attachments

Copying does not run this command. Review the repository and version before installing the dsh-attachments DSH plugin.

dsh-attachments DSH plugin data source

dsh-attachments DSH plugin snapshot date: Aug 16, 2026

discovered

What the dsh-attachments DSH plugin can do

  • Three entry points: paperclip button, full-window drag & drop, and paste (including paste of reference lines to re-materialize cards)
  • Files are stashed to <cwd>/.dsh/uploads/ and displayed as cards with file name, size, extension icon, and a remove button
  • Image cards show a local thumbnail preview; clicking opens a preview overlay (images render directly, text/code as plain text, else “open with system app”)
  • Cards disappear automatically after the next message is sent, and the stash is injected into the model request during the agent/pre-step wave
  • Full localization support (zh/en) for UI and RPC error messages
  • No type sniffing: any file type is accepted, including images, without requiring vision model support

Where the dsh-attachments DSH plugin fits

  • Attach an image to a conversation for the model to analyze via read_image
  • Drag and drop a code file to quickly share its content with the model
  • Paste a previously copied attachment reference line to re-attach the same file
  • Add multiple files at once via the paperclip button without filtering by type
  • Preview a file’s content before sending it to the model

Who the dsh-attachments DSH plugin is for

  • DeepSeek Harness users who need to include files (images, code, documents) in their conversations
  • Developers working with AI models who want a clean, non‑polluting attachment workflow

dsh-attachments DSH plugin limitations

  • Requires a session workspace directory (cwd); without one, every file stash fails
  • Per‑file transfer cap of 32 MB (JSON‑wire limitation); larger files must be placed directly in the project directory
  • Pending stash lives in host memory: after a dsh restart, unsent cards are lost (files remain in uploads and can be re‑dragged)
  • .dsh/uploads/ is not garbage‑collected automatically; only the ✕ button deletes the file, and sent files remain on disk

dsh-attachments DSH plugin: from the repository README

Quoted from the CocoSgt/dsh-attachments README, the upstream source of the dsh-attachments DSH plugin. Copyright remains with the original authors.

npm package: `dsh-attachments` · GitHub repository: [CocoSgt/dsh-attachments](https://github.com/CocoSgt/dsh-attachments) A third-party attachment plugin for DeepSeek Harness (dsh): **bring any file into the conversation, zero type rejection**. - **Every file — images included — goes through the stash pipeline**: the file is written to the session workspace at `<cwd>/.dsh/uploads/` and staged per session, and a card (icon tile + file name + size + ✕) appears above the composer. Nothing uses the host's native draft-image pipeline (`createDraftImages`/`addImages` are not used); if the model needs to see an image, it reads it by path with the harness-native `read_image` tool, so non-vision models are never blocked by "this model doesn't support images". - **The draft stays completely clean** — no reference text is ever written into the input box. When you send your next message, the host folds the attachment list into the model request during the `agent/pre-step` wave as a message with `source: { kind: 'user' }` (inserted right before your message, same injection pattern as the official dsh-agent-instructions), so it lands in the logs and replays safely. After injection the cards di

Read the full READMEThe repository declares no license. Check with the authors before using it.

dsh-attachments DSH plugin questions

How do I install dsh-attachments?

Run `dsh plugin --profile web add dsh-attachments` in your terminal. If you have a self-built profile, make sure its `package.json` lists `@deepseek-ai/dsh-base` and `@deepseek-ai/dsh-web-app` in `dsh.profile.bundles`. After installation, restart `dsh web`.

What file types are supported?

All file types are accepted. The plugin does no type sniffing, so there is no "unsupported format" rejection. The only hard limit is the 32 MB per-file transfer cap. Larger files can be placed directly in the project directory and referenced by path in the message.

Why can't I attach files when there is no workspace?

The plugin requires a session workspace directory (cwd) to write files to `<cwd>/.dsh/uploads/`. Without a workspace, every file stash fails because there is nowhere to put the file. Open a project in DeepSeek Harness to create a workspace.

My attachments disappeared after restarting dsh. What happened?

The pending stash (unsent cards) lives in host memory. After a dsh restart, unsent cards are lost. The files themselves remain in the `.dsh/uploads/` directory and can be dragged in again. To avoid losing cards, send your message before restarting.

How do I uninstall dsh-attachments?

Run `dsh plugin --profile web remove dsh-attachments` in your terminal. Then restart `dsh web` for the change to take effect.