Introduction¶
DeepSeek Harness is architected around plugins. In Web Composer use scenarios, handling local files usually requires specific tooling support. The dsh-local-file-upload plugin solves the need to upload local files directly from the Web interface into the current Session workspace, allowing agents to use those files directly.
What is this¶
This is a client-side plugin maintained by zhangbo1201. It enables local files to flow into the DSH workspace by adding an upload button to the Web Composer toolbar.
Installation and Enabled¶
Before installing, make sure you are currently using the Web profile.
dsh plugin --profile web add dsh-local-file-upload
After installation, you must restart the currently active dsh web process for the upload button to appear in the toolbar.
Core Features¶
The plugin provides the following capabilities:
- Input methods: Supports selecting multiple files at once from the toolbar, or directly pasting normal files into the composer using
Cmd+V/Ctrl+V. Image formats (PNG/JPG/WebP/GIF) use DSH’s native image attachment path, while other file types are handled by this plugin. - Storage path: Files are written to the
.dsh-uploads/directory under the current Session workspace. - File naming: The system automatically assigns non-conflicting filenames to prevent overwriting existing files. Stored filenames are automatically sanitized, removing path separators, spaces, and
@symbols. - Security restrictions: The plugin refuses to upload symlinked directories and validates the decoded byte count on the Host side.
Usage and Notes¶
After a successful upload, the composer automatically appends an @.dsh-uploads/<name> marker, which can be used directly by dsh-at-file and agent filesystem tools.
Keep the following points in mind:
- Single-file limit: The transfer limit per file is 10 MiB.
- Local transfer: Files are transferred only over the local DSH loopback connection and are not uploaded to any cloud service.
- Cleanup: Uploaded files remain in the workspace’s
.dsh-uploads/directory until manually removed. It is recommended to add this directory to the project’s.gitignoreto avoid accidentally committing sensitive files or large files.