Introduction

DeepSeek Harness (DSH) adopts a plugin-based architecture, and the default Web client sidebar displays only a two-level structure: Projects and Sessions. When the number of workspaces grows or project structures become complex, this flat list can be difficult to manage. dsh-workspace-groups is a client plugin designed to elevate the sidebar view hierarchy to three levels: Category folders → Project folders → Sessions.

The plugin defines category rules through a sidebar YAML configuration file, and supports fully manual grouping, drag-and-drop sorting, and persistent saving. It provides a good user interaction experience while maintaining zero intrusion into the core storage implementation.

Plugin Overview

  • Name: dsh-workspace-groups
  • Maintainer: z-col
  • Category: Client
  • License: MIT
  • Positioning: Sidebar grouping manager for the DSH Web client

Core Features

  1. Three-level tree navigation
    Expands the original two-level list into a three-level structure: Category → Project → Session. Both category folders and project folders can be collapsed, and their expanded state is saved independently and retained across refreshes and restarts.

  2. Group management
    Supports manual creation, renaming, and deletion of any group. Rule-based categories defined by YAML also support renaming and hiding operations.

  3. Rule-based automatic categorization
    Category rules are defined in a YAML file loaded alongside the plugin, with support for pathPrefix, nameContains, basenameContains, and others. Modifying the YAML file adjusts the grouping logic without modifying code.

  4. Drag-and-drop interaction
    Supports dragging projects into or out of groups. During dragging, an insertion indicator line with a 2px height precisely shows the target drop position. Drag-and-drop reordering is supported both within groups and between top-level projects.

  5. Zero-intrusion persistence
    All manual operations, including group creation, sorting, and renaming, are written to the plugin’s own override file (~/.dsh/workspace-groups.manual.json), using atomic writes to ensure data integrity. The plugin never modifies DSH core storage files (~/.dsh/storages/workspace.).

Installation and Enablement

Before installing, make sure DeepSeek Harness is installed (the dsh command is available) and that the target configuration profile has been initialized, such as the built-in web profile.

  1. Install the plugin
    Run the following command to add the plugin to the Web configuration profile:
    dsh plugin --profile web add github:z-col/dsh-workspace-groups
  1. Restart the service
    Plugin loading depends on the packaging layer, so you must restart the Web configuration profile after installation for changes to take effect:
    dsh web
  1. Verify the installation
    Check the configuration output to confirm that the plugin has been recognized:
    dsh --profile web --dump-config | grep -A3 workspace-groups
The expected output should include `id: workspace-groups` and related configuration information.

Configuration and Usage

  1. Configuration file location
    The default configuration file is located in the .dsh folder under the user’s home directory:
    ~/.dsh/workspace-groups.yaml
You can also specify a different path using the environment variable `$DSH_HOME`.
  1. YAML rule configuration
    The configuration file defines category names and their matching rules. The rules are combined with a logical OR, categories are matched in order, and the first matching rule takes priority.
    categories:
      - name: DSH 插件
        rules:
          - pathPrefix: /path/to/special/folder
          - nameContains: plugin
          - basenameContains: plugin
      - name: 个人项目
        rules:
          - pathPrefix: /path/to/personal
  1. Category priority
    The plugin follows this priority logic:
    • Manual override: Groups specified directly through drag-and-drop menus or operations have the highest priority.
    • YAML rules: Automatic categorization is applied when projects match the configured rules.
    • Top level: Projects that do not match any rule are displayed at the top level; there is no separate “Uncategorized” group.

Notes

  • Restart requirement: Installing or uninstalling the plugin, as well as modifying the configuration file, requires restarting the Web configuration profile for the changes to fully take effect.
  • Data safety: The plugin uses an atomic write mechanism. Invalid configuration writes return a 400 error and preserve the original file, preventing data loss.
  • License: This plugin is open-sourced under the MIT License.

Conclusion

By introducing category levels and rule-based management, the dsh-workspace-groups plugin solves the management complexity that can occur in the DSH Web client when handling multiple projects. It preserves DSH’s plugin-based ecosystem while ensuring system stability through a zero-intrusion design.

  • Catalog page: https://www.skillhub.cn/plugins/z-col/dsh-workspace-groups
  • Source repository: https://github.com/z-col/dsh-workspace-groups