Introduction

When referencing local files in a DSH web session, manually typing the full path is prone to errors, especially in deep directory structures, with temporary files, and when switching between multiple sessions. dsh-dir-tree is a floating directory tree plugin for the DSH web interface: it displays the current session’s workspace directory in the bottom right corner of the interface, supporting expanding subdirectories, searching filenames, dragging paths into the dialog box, and automatically following when switching workspaces or sessions. The following sections introduce its capabilities, installation methods, typical usage, and a few points to note during integration.

What is it

dsh-dir-tree is a web client floating window plugin for DeepSeek Harness (DSH), maintained by bentong-chain, and licensed under MIT. The core problem it solves is: quickly viewing the current workspace directory, locating files, copying paths, and directly filling file/folder paths into the dialog box input in DSH web sessions. The README explicitly states that this is a standard DSH bundle; it can be installed using dsh plugin add without needing to checkout source code, modify built-in packages, or enter creative mode.

Core Features

dsh-dir-tree provides the following verified capabilities:

  • Floating display of the current session’s workspace directory tree, minimizable in the bottom right corner.
  • Lazy loading: Click to expand subdirectories; large directories do not lag.
  • Drag and drop files/folders into the dialog box to automatically fill in the full path.
  • Double-click to copy path; single-click to select.
  • Search and filter filenames.
  • File type icons, blue highlighting for directories, indented tree lines.
  • The directory tree automatically follows when switching workspaces/sessions.
  • Draggable floating window position.

Installation and Usage

1. Prepare DSH web runtime environment

You can install DSH globally or run it temporarily via npx.

Global installation:

npm install -g @deepseek-ai/dsh

Temporary run:

npx @deepseek-ai/dsh web

Both methods share the same $DSH_HOME, with the default directory being ~/.dsh. Plugins, sessions, and configurations are interconnected.

2. Install the plugin

Plugins can be installed from npm or from git.

npm installation:

dsh plugin --profile web add dsh-dir-tree

Installation from git:

dsh plugin --profile web add github:bentong-chain/dsh-dir-tree

If installing from git, the first time it will prompt you to add build authorization in the profile’s pnpm-workspace.yaml:

allowBuilds:
  dsh-dir-tree: true

After adding, re-run:

dsh plugin --profile web add github:bentong-chain/dsh-dir-tree

3. Start DSH web

Common ways to start the web profile are as follows:

dsh --profile web

Or the equivalent alias syntax:

dsh web

If using npx for temporary run, it can also be written as:

npx @deepseek-ai/dsh web

These methods start the web profile, with the directory at:

~/.dsh/profiles/web

After starting, a “Current Workspace” floating window will appear in the bottom right corner of the DSH interface.

Typical Usage

  1. After starting DSH web, check the “Current Workspace” floating window in the bottom right.
  2. Click next to the folder to expand subdirectories.
  3. Drag the file or folder you need to reference into the dialog box input, and the plugin will automatically fill in the full path.
  4. Use the search box to filter filenames.
  5. Double-click a node to copy the path, single-click to select the path.
  6. Click or × to minimize the floating window, then re-expand it via the restore button in the bottom right.

Integration and Implementation Notes

If you need to inspect or distribute this plugin, you can focus on the declarations in package.json related to client-side loading.

dsh-dir-tree’s package.json declares dsh.client.platform as web and injects the following runtime modules:

"dsh": {
  "client": {
    "platform": "web",
    "inject": [
      "@deepseek-ai/dsh-client-runtime",
      "@deepseek-ai/dsh-client-connection",
      "@deepseek-ai/dsh-client-ui-layout"
    ]
  }
}

At the same time, exports must export ./package.json:

"exports": {
  ".": "./index.js",
  "./client": "./client.bundle.js",
  "./package.json": "./package.json"
}

If ./package.json is not exported, the client bundle might be silently skipped.

Additionally, the client bundle must use:

import React from 'react';

Otherwise, when the persistent client bundle directly references the global React, it might trigger a ReferenceError during the apply phase.

Use Cases

This plugin is suitable for the following scenarios:

  • Daily use of DSH web sessions requiring frequent referencing of workspace file paths.
  • Finding files and folders in long directory structures and quickly copying them to the dialog box.
  • Switching between multiple workspaces or sessions and wanting the directory tree to follow the current context.
  • Desiring a more intuitive way to browse the local workspace in the web interface.

Note: The plugin runs with the permissions of the current dsh process. It is recommended to check the source code and license before installing. dsh-dir-tree uses the MIT license, and the GitHub repository address is:

https://github.com/bentong-chain/dsh-dir-tree

Conclusion

dsh-dir-tree places the current DSH session’s workspace directory tree into a floating window in the web interface, reducing errors caused by manual path input and allowing directory browsing, path copying, and drag-and-drop references to be completed in one place.

  • GitHub: https://github.com/bentong-chain/dsh-dir-tree
  • Directory Page: Search dsh-dir-tree in the integrated DSH community directory; the specific URL depends on what the directory site actually provides. The community directory is an independent site and does not represent DeepSeek or Hypersphere’s official app store.