Introduction

In the DeepSeek Harness (DSH) Web GUI, the view tabs in the conversation header (such as “Chat” and “Trajectory”) are provided by official view plugins through the conversation.view slot. By default, DSH does not provide features to hide tabs, rename them, or reorder them.

The dsh-view-manager plugin achieves fine-grained management of these tabs by intercepting the data from the official slot and applying configuration at the DOM layer.

Plugin Overview

  • Purpose: Manages the view tabs in the DSH conversation header (Chat / Trajectory, etc.).
  • Maintainer: runcat-tommy
  • License: MIT

Key Features

  • Enable / Disable: After disabling a view tab, the tab is hidden in the conversation header, while the underlying view functionality remains unaffected.
  • Reordering: Adjust the display order of tabs using the move up / move down buttons.
  • Renaming: Customize the display name of a tab; leave the input blank to restore the default name.
  • Localization support: Plugin strings automatically switch with the DSH interface language (Chinese / English).
  • Local storage: Configuration is stored in the browser’s localStorage; changes take effect immediately without restarting the Web UI.
  • Update reminders: Automatically detects new versions on npm and displays an update card at the top of the panel. It supports updating now, ignoring, or handling later.

Installation and Enabling

Run the following command to install the plugin:

dsh plugin --profile web add dsh-view-manager

After installation, restart the Web UI. Open any conversation; a ⚙ 逃咪-View Manager button appears on the right side of the conversation header. Click it to open the management panel.

Usage

  1. Open a conversation (chat or trajectory view).
  2. At the far right of the conversation header, click ⚙ 逃咪-View Manager.
  3. In the management panel, perform the following operations:
    • Use switches to enable or disable view tabs.
    • Modify the display name in the input box (leave it blank to restore the default).
    • Use the ↑ / ↓ buttons to adjust tab order.
    • Use the “Restore Defaults” button to clear all custom configurations.

How It Works

  • Data source: Reads the official slot data slots.entries("conversation.view"), ensuring that all currently registered view items can be retrieved.
  • DOM manipulation: Aligns the tab buttons within the [role="tablist"] container.
  • Rendering guard: Uses MutationObserver to monitor DOM changes, ensuring that the configuration remains effective after React re-renders.
  • Style control: Hiding is implemented with display:none, ordering is implemented with flex order, and renaming directly modifies textContent.
  • Copy management: Registers the viewManager namespace through the locale service to follow the interface language.

Development and Maintenance