DSH-File: Current Conversation Workspace File Manager for DeepSeek Harness

Preface

The plugin ecosystem of DeepSeek Harness emphasizes “everything is a plugin.” When using dsh for conversational development on the Web or desktop, a specific need often arises: the current conversation is already bound to a workspace directory, and you want to view files, edit them, and save changes without leaving the interface, rather than switching to a local editor or terminal.

dsh-file is a plugin designed for this scenario. It is maintained by chengzhi43, with the package name @rose43/dsh-file and an MIT license. Its scope is focused: browse the files of the current conversation’s workspace in the Web sidebar, and edit them in the central main area.

What It Is

dsh-file is a VS Code-style file manager plugin for DeepSeek Harness.

It brings three actions into a single interface:

  • Display the file tree of the current workspace in the sidebar;
  • Open a file editing view in the central main area;
  • File views sit alongside conversations/traces, without relying on popups.

It is suitable for scenarios where you want to work directly with the current session’s workspace files within dsh web or the desktop client.

Core Features

At the bottom of the sidebar, there is a “Files” button. Clicking it switches the sidebar body to the file manager; clicking it again switches back to the workspace/session list.

When the file manager is open, it resolves the workspace directory of the current session (SessionHeader.cwd) and uses setRoot to re-fix the gateway root directory. Therefore, the browsing scope follows the current conversation rather than being fixed to the directory where dsh web was started.

Central Column Editing

When you click a file, it opens in a “File” view in the central column. This view sits alongside “Conversations/Traces.”

The editor uses Monaco Editor and automatically applies syntax highlighting based on the file extension. Monaco Editor is loaded from a CDN; if the CDN is unavailable, it falls back to a plain text textarea.

Markdown Preview

When you open a .md file, it renders as a read-only preview by default. Markdown parsing uses marked + GFM.

A preview/source toggle button switches between display modes; the selected mode is saved to localStorage and restored the next time you open it.

Theme Settings

The “Themes” button in the editor toolbar opens the theme settings panel.

Preset themes include Light, Dark, One Dark, and GitHub. You can customize background color, text color, and font size, with a range of 10–28px. Settings apply in real time and persist to localStorage.

Themes can also be exported as JSON theme files and imported from JSON files for restoration.

Editing and Saving

You can save with Ctrl+S or by clicking the “Save” button within the editor. Unsaved changes are marked with a dirty indicator.

When multiple files are open, you can switch between them via the top tab bar and close them individually.

File Operations

Supported file operations include:

  • Create new file;
  • Create new directory;
  • Rename;
  • Delete.

Deletion requires confirmation; non-empty directories will be rejected.

Workspace Boundaries

All path resolution is relative to the currently fixed root. Out-of-bounds paths are rejected by the host, and protection against symlink escapes is included.

Installation and Activation

The npm installation command provided in the documentation is:

dsh plugin --profile web add @rose43/dsh-file

If installing locally from a cloned dsh-file directory, you need to run it from within the plugin directory:

cd /path/to/dsh-file
dsh plugin --profile web add .

For the desktop client, use the desktop profile. The command is:

cd /path/to/dsh-file
dsh plugin --profile desktop add .

After downloading a tarball from Releases, the local installation example from the documentation is:

dsh plugin --profile web add ./rose43-dsh-file-0.1.2.tgz

After running dsh plugin add, the package is pnpm-linked into the profile and appended to dsh.profile.bundles. For web plugins, you need to restart dsh web for changes to take effect.

The desktop profile is independent from the web profile, and plugins are not automatically shared. After installing to the desktop profile, you need to completely exit and restart the desktop client.

Note: Do not add plugins to ~/.dsh/profiles/desktop/cordis.yml. The correct entry point is dsh.profile.bundles + dependencies in the profile’s package.json. This is exactly what dsh plugin add does.

Additionally, do not run npm install inside the plugin directory, as this may break the symlink structure of the profiles. @deepseek-ai/* packages must not be installed as copies inside the plugin’s own node_modules; Node must resolve to the same instance in the dsh installation directory. For production releases, the plugin declares @deepseek-ai/* as peerDependencies, which are provided by the profile.

Configuration

The root in cordis.patch.yml is only a fallback root when there is no session, defaulting to process.cwd(). When the file manager opens, it re-fixes the root based on the current conversation’s workspace, so no changes are usually needed:

- insert:
    - id: '@rose43/dsh-file'
      name: '@rose43/dsh-file'
      config:
        root: !!js process.cwd()

Typical Usage

  1. Click the “Files” button at the bottom of the sidebar to open the file manager.

  2. Click a file to open it in the “File” view in the central column.

  3. If you open a .md file, use the preview/source toggle button to switch display modes.

  4. Use the “Themes” button in the toolbar to open theme settings, and export or import JSON theme files.

  5. Save changes with Ctrl+S or the “Save” button.

  6. Use the file operations provided by the plugin to create, rename, or delete files/directories.

Applicable Scenarios

It is suitable for these scenarios:

  • Using the current conversation’s workspace in dsh web;
  • Wanting to quickly view and modify workspace files in the desktop dsh;
  • Needing Markdown preview, theme settings, and basic file operations;
  • Wanting to keep file browsing and editing within the plugin-based interface.

Notes

  • The plugin runs with the permissions of the current dsh process; check the source code and license before installing;
  • Workspace boundaries depend on the currently fixed root; out-of-bounds paths will be rejected;
  • Monaco Editor relies on a CDN; when the CDN is unavailable, it falls back to a plain text textarea;
  • The desktop and web profiles are independent; the --profile flag in the installation command must match the target client;
  • Do not add plugins to ~/.dsh/profiles/desktop/cordis.yml;
  • Do not run npm install inside the plugin directory;
  • @deepseek-ai/* must resolve to the same instance in the dsh installation directory.

Links

Directory page (community directory):

https://www.skillhub.cn/plugins/chengzhi43/dsh-file

GitHub:

https://github.com/chengzhi43/dsh-file
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye