Skip to content
dsh-market Browse plugins GitHub 中文

WJZ-P/dsh-attachments

Adds file and folder drag-and-drop attachments to the Web UI, with composer cards, persistent history, and workspace-backed paths.

Stars ★ 6 Category UI Enhancements Listed 2026-08-19 npm dsh-attachment

Install

Inside DeepSeek Harness, with dsh-market

dsh plugin --profile web add dshmarket

Or from the command line

dsh plugin --profile web add dsh-attachment

Installing runs third-party code with your own permissions — it can read your files, use your credentials and reach the network. Review the source first, and pin a commit (github:owner/repo#sha) when you can.

Screenshots

README

dsh-attachment

Drag-and-drop file and folder attachments for DeepSeek Harness.

简体中文 · English

CI


dsh-attachment adds file and folder attachments to the DeepSeek Harness Web UI. Images continue through Harness's native image pipeline; the plugin handles generic files and complete directory trees.

Features

  • Drop ordinary files, images, or folders from the operating system.
  • Keep native PNG/JPEG/WebP/GIF preview, history gallery, and model-capability checks.
  • Represent one dropped folder as one attachment card while preserving its directory tree.
  • Copy committed files and folders into .deepseek-harness/attachments/ in the active workspace before the model step.
  • Render attachment cards in both the composer and persistent message history.
  • Stream upload and download bytes without adding plugin-defined file-count or per-file-size limits.
  • Leave the original composer layout unchanged while no plugin-owned attachment is present.

Screenshots

Drag-and-drop surface

The plugin adds its window-level dashed drop boundary while preserving Harness's native image-intake surface.

Drag-and-drop attachment surface

Image conversation history

Native image messages continue to render in persistent conversation history and remain available to multimodal models.

Image message and model response

Multiple image previews

Multiple native image previews share the composer attachment rail used by plugin-provided file and folder cards.

Multiple image previews in one prompt

Install

Install the prebuilt package from npm into a native DSH web profile:

dsh plugin --profile web add dsh-attachment

Build and install a local checkout:

pnpm install
pnpm run build
dsh plugin --profile web add .

Inspect the composed profile and start DSH:

dsh --profile web --dump-config
dsh --profile web

Remove the plugin:

dsh plugin --profile web remove dsh-attachment

DSH package contract

This package follows the installable DSH bundle format:

  • dsh.bundle.patch points to cordis.patch.yml, which inserts the Host plugin row.
  • dsh.client.platform is web, and exports["./client"] exposes the prebuilt browser bundle.
  • Official @deepseek-ai/* compatibility packages are declared as peer dependencies.
  • The npm tarball contains prebuilt lib/ artifacts, so registry installs do not need to build the browser bundle.

The Host half owns byte transport, durable metadata, and workspace materialization. The browser half contributes composer and history UI through Harness extension slots. The package has no Tauri runtime dependency.

Compatibility

The current release targets the interfaces in DeepSeek Harness 0.1.0-rc.5: standard bundle loading, web client discovery, conversation input/history slots, session events, and Host route registration.

Development

pnpm install
pnpm run build
pnpm test
npm pack --dry-run

The ready-to-copy catalog YAML and screenshot URL template are maintained in MARKETPLACE.md. README image assets belong in assets/markdown/.

Security and portability

  • Filenames, MIME types, attachment IDs, and directory member paths are treated as untrusted input.
  • Drive-prefixed, UNC, absolute, and traversal paths are rejected before workspace materialization.
  • GitHub CI exercises both Linux and Windows path semantics.
  • See SECURITY.md for supported versions and private-reporting guidance.

License

MIT

Content from the project README on GitHub ↗

Comments

Comments live in GitHub Discussions. Sign in with GitHub to post or react.