Introduction

The official DeepSeek Harness (DSH) sidebar only supports grouping sessions by workspace. When there are multiple topics in the same workspace, all sessions are squeezed into one group, making it difficult to split them by topic.

The dsh-session-topics plugin introduces a “Topic” axis in the presentation layer, rendering the sidebar as “Workspace → [Topic → Subtopic → Session] + Unassigned Topics”. It is a purely client-side plugin, does not depend on any Host service, and does not modify the official data model.

Core features

1. Sidebar hierarchy

The sidebar display order is: Workspace → Topic → Subtopic → Session → Unassigned Topics.
* Create Topic: There is a + button on the right side of each workspace row for creating a new topic within that workspace.
* Topic actions: Hovering over a topic row shows + (create subtopic), ✎ (rename), and × (delete).
* Session time: The right side of a session row shows relative time (e.g., “just now”, “5 minutes ago”), refreshed automatically every minute.
* Open session: Clicking a session row opens the session normally.

2. Drag-and-drop interaction

This plugin takes over the official drag gestures, but separates ordering and grouping logic:
* Reorder: Drag a session to the upper/lower half of another session; an insertion indicator line is shown to adjust the order.
* Assign to topic: Drag a session onto a topic title (including subtopics) to assign the session to that topic.
* Remove from topic: Drag a session onto the “Unassigned Topics” title to move the session out of the topic back to the unassigned state.
* Reject cross-workspace: Dragging across workspaces is directly rejected.

3. Right-click menu

  • Session right-click menu: Rename (inline edit), fork session, archive session, remove from topic.
  • Workspace right-click menu: Create topic, rename workspace, delete workspace (confirmation before deletion).

4. Data persistence

Expanded/collapsed state and topic assignment relationships are all persisted to browser local storage, and remain after refreshing the page or restarting DeepSeek Harness.

Installation and usage

Install

Run the following command in the terminal to install:

dsh plugin --profile web add github:WangXuexin24/dsh-session-topics

Temporarily disable

In Plugin Marketplace → Installed list, turn off the “Enabled” switch on this plugin card, then restart DeepSeek Harness as prompted.

Re-enable

Turn the same switch on again and restart DeepSeek Harness.

Uninstall

Click the “Uninstall” button on the plugin marketplace card to uninstall; or use the command:

dsh plugin --profile web remove dsh-session-topics

Upgrade and verification

  • Update local code: Modify the project files directly and refresh the browser page (the client bundle is re-fetched on every load).
  • Verify run: The sidebar shows a “Topic” grouping structure instead of the official pure workspace grouping, or run node test/smoke.mjs, output RESULT: all checks passed.

Technical implementation and limitations

Design principles

  • Zero dependencies: Does not depend on any Host service, does not invoke subprocesses, does not generate scripts, does not modify host files, does not register tools, zero token cost.
  • Slot takeover: The plugin takes over the sidebar.workspaces slot (priority: -1) and must implement all operational capabilities of the replaced component (such as the session right-click menu).
  • Data storage: Topic assignment is stored locally in the browser (dsh.session.topics.v2), and every change is automatically backed up to dsh.session.topics.v2.bak. If the main storage is empty while the backup exists, a recovery bar appears at the top of the sidebar.
  • Scrolling contract: It must follow the official ui-workspace flex layout contract (flex:1; min-height:0; flex-direction:column); otherwise, content may not scroll.

Known limitations

  • Topic depth: Currently limited to two levels (Topic → Subtopic). Although the MAX_TOPIC_DEPTH limit can be modified to allow deeper nesting, the sidebar width may not accommodate deeper nesting.
  • Data synchronization: Topic assignment data is stored only locally in the current browser, not synchronized across devices, and not persisted with the Host process.
  • npm publishing: Currently not published to npm (optional); installation is supported only from GitHub.

References

  • GitHub repository: https://github.com/WangXuexin24/dsh-session-topics
  • Community directory: https://www.skillhub.cn/plugins/WangXuexin24/dsh-session-topics
  • License: MIT