Foreword¶
DeepSeek Harness (DSH) uses a plugin-based architecture, allowing functionality to be extended within a Web Profile. Viewing local file structure or contents during a session usually requires switching browser tabs or sending a message to the Agent. The dsh-workspace-files plugin provides a file browsing panel directly beside the session interface without interrupting the current workflow.
Plugin Introduction¶
This plugin is maintained by Momojie-S. It provides a resizable file tree on the right side, recursive file search, Markdown and multilingual code highlighting preview, and remote file download capabilities. The plugin is open-sourced under the MIT license.
Core Features¶
- Session title bar toggle: Clicking the button in the title bar opens or closes the panel.
- Resizable file tree: The width of the right-side file tree can be adjusted between 240px and 900px.
- Recursive search: Supports recursive filename search across the entire workspace and automatically skips the
.gitandnode_modulesdirectories. - Content preview: Supports Markdown rendering (headings, lists, tables, code blocks, links, images) and syntax highlighting for various text files.
- Floating window zoom: Double-click a file to preview it enlarged and centered in a floating window; close with the Esc key or by clicking the overlay.
- Remote download: Supports downloading remote (domain/local area network) files directly to local storage.
Installation and Enabling¶
Before installing, ensure the environment meets the requirements: DeepSeek Harness >= 0.1.0-rc.6 (Web Profile), and Node.js >= 20 during the build.
dsh plugin --profile web add @momojie-s/dsh-workspace-files
During the initial build, add the allowBuilds permission to the Profile’s pnpm-workspace.yaml.
After installation, click the “🗂 Files” button in the DSH session title bar to load the panel.
Usage¶
- Browse files: In the file tree on the left, click a directory to expand or collapse it. Single-click a file to preview it on the right; double-click a file to view it enlarged and centered in a floating window.
- Search files: Enter a keyword in the search box and press Enter to perform a recursive search across the entire workspace. Press the Esc key to return to the file tree.
- Adjust the panel: Drag the left edge of the panel to adjust its width; click the “›” button in the middle of the left edge to collapse the panel.
- Download files: Click the download button in the title row of the preview bar or the title row of the floating window. For binary files or files that exceed the preview limit, a download link is also provided next to the prompt message.
Configuration¶
Behavior can be adjusted by patching the config field. The main configuration items are as follows:
| Field | Default | Description |
|---|---|---|
maxReadBytes |
1000000 |
Maximum bytes to read for a single file preview; files exceeding the limit are not previewed. |
maxDownloadBytes |
200000000 |
Maximum bytes for downloading a single file; requests exceeding the limit return 413. |
maxSearchNodes |
4000 |
Node budget for recursive search (files + directories). |
maxSearchMatches |
300 |
Maximum number of search result entries. |
skipDirs |
['.git', 'node_modules'] |
Directory names skipped in the file tree and search. |
trustedHosts |
[] |
Allowed list of non-loopback host[:port] values. This must be configured for remote domain/local area network access; otherwise, all routes return 403. |
Example remote deployment configuration (overrides the bundle line):
- id: workspace-files
config:
trustedHosts: ['dsh.example.com']
Status and Recommendations¶
⚠️ The plugin has been deprecated (2026-09-11)
DSH versions 0.1.5 and above include an officially built-in file panel with equivalent capabilities (its ID conflicts with this plugin, so they cannot coexist). The official sidebar file panel (ui-sidebar-files file tree + ui-sidebar-documentpreview preview) covers the main use cases.
- DSH 0.1.5+: Please use the official built-in panel directly.
- DSH 0.1.2-rc.1 or earlier: You can continue to use this plugin.
The plugin is no longer maintained. Please check the source code and license before installing.