Introduction

DeepSeek Harness (DSH) uses a plugin architecture. When developing agents or tools on the Web client, you often need to mount additional panels on the right side of the interface (such as Shell or debuggers). dsh-right-drawer provides a hosting solution that manages these panels through the dockPanels registry, presenting them as full-height drawers and automatically handling edge label stacking and width adjustment.

Features

This plugin mainly addresses layout and interaction issues for right-side panels:

  1. dockPanels registry
    The plugin acts as the host and provides the dockPanels client service. Content plugins (such as dsh-soln-panel and dsh-agent-shell) connect via the registry without needing to handle low-level layout logic themselves.

  2. Automatic label stacking
    The labels on the drawer edge are tightly stacked based on their measured heights and centered vertically as a group. When expanding or collapsing the drawer, only the X-axis position changes, so the label group does not shift.

  3. Width dragging
    A handle is provided on the left side of the drawer, supporting drag-to-adjust width. The width ranges from 280 to 900px and never exceeds 80% of the viewport width. When switching between drawers, the width state is preserved.

  4. Coordination with the solution panel
    The plugin detects the position of dsh-soln-panel. The open drawer and remaining labels automatically snap to the left edge of the solution panel to avoid content overlap.

Installation and Enabling

Install the plugin with the official command:

dsh plugin --profile web add @deepseek-ai/dsh-right-drawer

If the plugin has not been published, install it from a local directory:

dsh plugin --profile web add file:C:/path/to/dsh-right-drawer

After installation, restart DeepSeek Harness. Vertical labels will appear on the right side; click one to expand the corresponding drawer.

The uninstall command is as follows:

dsh plugin --profile web remove @deepseek-ai/dsh-right-drawer

Typical Usage

Content plugins must register with the dockPanels service on the client side (inside apply):

// 在内容插件的 client 侧代码中
const dock = ctx.get('dockPanels')
if (dock !== undefined) {
  const dispose = dock.register({
    id: 'shell',
    label: 'Shell',
    order: 1,
    render: () => React.createElement(ShellContent, { connection }),
  })
}

The registry API supports register, unregister, subscribe, and snapshot.

Architecture and Dependencies

  • Browser side: Provides the dockPanels service and mounts the DockHost component via slots.inject('shell.overlay').
  • Node side: An empty implementation that only ensures smooth bundle resolution.
  • Dependencies:
    • @deepseek-ai/dsh-tools
    • @deepseek-ai/dsh-client-connection
    • @deepseek-ai/dsh-client-ui-slots
    • react (version requirement: ^18.2.0)

Notes

This plugin runs with the permissions of the current DSH process. It is recommended to review the source code and license (MIT) before installation.

Summary

dsh-right-drawer provides standardized right-side drawer hosting capabilities for DSH Web plugins. It decouples content plugins from layout logic through the registry pattern. It is suitable for developers who need to build full-height sidebars or complex UI layouts.

Plugin Catalog | GitHub Repository