Adds file and folder drag-and-drop attachments to the Web UI, with composer cards, persistent history, and workspace-backed paths.
Install
# from npm (prebuilt)
dsh plugin --profile web add dsh-attachment
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:WJZ-P/dsh-attachments
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
dsh-attachment
Drag-and-drop file and folder attachments for DeepSeek Harness.
简体中文 · English
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.
Image conversation history
Native image messages continue to render in persistent conversation history and remain available to multimodal models.
Multiple image previews
Multiple native image previews share the composer attachment rail used by plugin-provided file and folder cards.
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.patchpoints tocordis.patch.yml, which inserts the Host plugin row.dsh.client.platformisweb, andexports["./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.mdfor supported versions and private-reporting guidance.
License
Links
More in this category
zhu1090093659/dsh-web#packages/dsh-task-board★ 6553
Task board for the dsh web GUI: a sidebar multi-column kanban whose cards run in real DSH agent sessions and can also be scheduled with cron expressions, executed host-side even with the browser closed.
zhu1090093659/dsh-web#packages/dsh-web-all★ 6553
Plugin and skin collection for the DSH Web UI: task board, Git graph, right-side panel, remote mobile UI, pet, live token stats, and a skin center.
omdsh-dev/DSH-better-sidebar★ 3156
Full sidebar workbench with file rendering and editing, terminal, Git, and subagents; third-party plugins can register new tabs.
ccch1mneyyy/dsh-TUI★ 2736
Claude Code-style full-screen terminal UI: pixel-whale header, live status line, and streaming thought expansion.
MeteorNOX/DeepSeek-Balance-Whale-Widget★ 1432
A fixed-corner whale widget showing DeepSeek balance, today usage, per-turn cost and random talk lines, with sound effects and a menu.
Devin-AXIS/deepseek-design#deepseek-idesign★ 614
Visual design studio for websites, app prototypes, posters, cards, reports, and magazines, with templates, direct element editing, selection-aware AI draft handoff, and export.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.