Introduction

The core design philosophy of DeepSeek Harness (DSH) is “everything is a plugin.” In the default workflow, the model typically has access to a single directory only. When developers need to switch between multiple projects, libraries, or dependency directories, the traditional switching method is inefficient and error-prone. The sttrevens/dsh-linked-folders plugin aims to solve this limitation. It mimics Codex’s linked folder mechanism and injects multi-directory context so that the model can access multiple folders.

What Is It

This is a DSH plugin that provides multi-folder workspace access. It supports a globally persistent link list (valid across sessions) and temporary session-level links (which expire when the conversation ends). The plugin was developed by Sttrevens and follows the MIT license.

Installation and Activation

The Web profile must be specified during installation, because this plugin depends on the Web sidebar and management interface.

  1. Run the following command to install the plugin:
dsh plugin --profile web add @steven-wu/dsh-linked-folders
  1. After installation is complete, restart the Web profile and refresh the page.

Core Features

  • Multi-folder workspace: Allows the model to access multiple directories, instead of a single directory.
  • Global persistent links: Maintains a global link list that persists across sessions.
  • Session temporary links: Dynamically add or remove links during the current conversation.
  • Web management interface: Provides a visual sidebar management panel.
  • Tool support: Provides link_folder and unlink_folder tools for the model to call.
  • Workspace selector enhancement (optional): Provides a patch script to enhance the workspace selector functionality.

Usage

Managing via the Interface

Click the 📁 button (or the folder icon on the left) to the left of the Composer input field. In the panel that opens, you can view the global link list, add new links (absolute paths or the browse button are supported), remove links, and view temporary links for the current session.

Managing via Conversational Commands

During a conversation, the model can invoke tools using natural-language commands:
* Add a link: Say “link folder /path/to/foo”. The model will call the link_folder tool.
* Remove a link: Say “unlink /path/to/foo”. The model will call the unlink_folder tool.

Temporary links added during a session are marked with (this session) in the system prompt.

Enhancing the Workspace Selector (Optional)

The official workspace selector menu does not support direct injection by plugins. The plugin provides a patch script that adds a new entry to the menu. Run the following command:

python3 scripts/patch-workspace-picker.py

After running it, restart dsh web. Note: this script must be run again after dsh is updated.

Configuration and File Storage

The plugin state is stored in a local configuration file. The default path is:

~/.dsh/linked-folders.json

Example configuration file structure:

{
  "global": ["/Users/you/projects/app", "/Users/you/projects/lib"],
  "sessions": { "session-abc…": ["/tmp/scratch"] }
}

The default path can be overridden by the environment variable DSH_LINKED_FOLDERS or the config.path field in the bundle line. All linked paths are normalized to real paths and must be existing directories.

Sandbox and Permission Notes

The plugin only advertises folders to the model and provides a management UI; it does not change the underlying file sandbox mechanism:
* In danger-full-access mode, the model has read and write permissions in any location.
* In workspace-write mode, the model can only read linked folders, while write operations are still limited to the session workspace root directory.

Notes

  • Path validity: Configured paths must be existing directories.
  • Patch maintenance: If the workspace selector enhancement patch is installed, the patch script must be run again after DSH is updated.
  • Package name consistency: Note that the package name @steven-wu/dsh-linked-folders and the GitHub maintainer name Sttrevens are inconsistent. This is a known inconsistency.

Summary

dsh-linked-folders gives DSH Codex-like multi-directory access. By combining a global persistent list with session temporary links, developers can build a flexible workspace environment for the model without increasing the model’s system permissions. For more details and source code, see: GitHub repository.