Preface

After using DeepSeek Harness (dsh) for a while, historical sessions will accumulate. In one session, a well-tuned MCP config or a finalized solution might be forgotten by the time you want to reference it a few days later—you can’t recall which workspace or which day you discussed it. Scrolling through sessions one by one is unrealistic, and relying on memory for the model to retell it is unreliable.

dsh itself provides session full-text indexing (session-query-sqlite) and a mechanism for cross-session reference injection, but these two capabilities lacked direct user entry points. dsh-session-workbench fills this gap: it combines the three steps of search, locate, and recall into one interface, along with management of the session view tab bar. The following sections introduce them one by one by function, installation, and usage.

What is it

dsh-session-workbench is a plugin for the dsh web profile, by PolinniZhong, licensed under MIT. In one sentence: it searches all historical sessions, recalls the required sessions to the model as @references, and manages the display/hide and sorting of session view tabs—one plugin, three entry points.

It follows dsh’s philosophy of “everything is a plugin” and is installed into the web profile as a static bundle, loaded by the client runtime.

Name clarification: The directory page and the scraping source use dsh-session-kb, while the README title, name, and repository in package.json are dsh-session-workbench. This article uses package.json as the standard.

Core Features

README labels some features with v1.1 / v1.2, while the current version in package.json is 1.0.1. The correspondence between the two has not been confirmed in the documentation, so the following text follows the labels in README.

  • Full-text search covering all historical sessions (all workspaces), supporting filtering by workspace, time range, and archive, as well as cursor pagination.
  • Search defaults to include archived sessions; results carry an “Archived” badge and can be filtered by “All / Active only / Archived only”.
  • When no keywords are entered, a list of recent sessions is displayed, excluding archived by default.
  • Matching is literal phrase (FTS limitation); typing MCP config searches for that exact phrase.
  • Compressed (compacted) session content can still be searched: the official FTS index includes shadowed content.

Fragment Hit and Location

Search results return fragment hit cards grouped by session (v1.1): each card provides the best hit for that session, highlights the hit sentence with context, and uses lazy loading. Expanding a fragment card reveals other hits within the same session (v1.2): it lists the first 5, can load more, and highlights all of them.

Clicking “Locate” on a card opens the corresponding session, scrolls to the exact hit message, and flashes it; starting from v1.2, it uses composite anchors. On match failure, it prompts manual scrolling via a non-blocking toast, without interrupting current operations.

Recall

Select sessions in the results (up to 3 per message), click “Insert references into input”, and @session reference chips appear in the input box. After continuing to input the question and sending, the platform injects a readonly snapshot (## Referenced sessions), and the model answers based on historical context.

Each session snapshot has a default limit of 64 KB. Very large sessions may only retain partial content, with a hint provided in the preview.

Session View Management

Added in 1.0.0: manage custom views on the session tab bar, supporting show/hide and drag-and-drop sorting. Two entry points: “Session Workspace -> Session Views” in the settings page, and the right-click / double-click panel on the session tab bar.

Local Execution and Settings

The plugin runs entirely locally with zero network requests; it only reads session metadata and hit fragments, does not modify or delete any sessions; see PRIVACY.md for details. The colors, spacing, border radius, fonts, and interactions in the interface follow the DSH design system metrics. Settings include enable/disable toggles, default search scope, and privacy notice.

Installation and Enablement

The plugin requires the dsh web profile. Installation command:

dsh plugin --profile web add dsh-session-workbench

The plugin is a static bundle, provided by the client at runtime: client content changes take effect by refreshing the page, while host/profile changes require a restart.

To use session library search, you also need to manually enable the persistent FTS index. The web profile defaults to disabling FTS (openAt: never), so you need to override the configuration of session-query-sqlite in <DSH_HOME>/profiles/web/cordis.patch.yml:

- id: session-query-sqlite
  config:
    path: '/Users/<you>/.dsh/session-query.sqlite'
    openAt: startup

Two requirements: path must be an absolute path (the platform resolves it using path.resolve, does not expand ~ or environment variables); the index builds and reuses on startup with openAt: startup, do not use :memory:—it rebuilds on every search and blocks the host.

After changing the configuration, restart the DSH application.

Typical Usage

The following is a complete walkthrough of the steps: “Search -> Locate -> Recall”:

  1. Open the Session KB tab in the right sidebar (can be enabled/disabled in “Settings -> Session KB”);
  2. When no keywords are entered, recent sessions are displayed; click the search icon in the top right to expand the input box, type keywords (literal phrase match, e.g., MCP config) to switch to search results;
  3. Click the ⋯ button to filter by workspace, time range, and archive status;
  4. Click a result to expand the preview (hit context + session metadata); click “Locate” to open the session and scroll to the hit message; after confirming, check it (max 3);
  5. Click “Insert references into input”, and @session chips appear in the input box;
  6. Continue typing the question and send; the platform injects a readonly snapshot, and the model answers using historical context.

Managing session views is a separate path: open “Settings -> Session Workspace -> Session Views”, or right-click / double-click on the session tab bar, and in the panel, toggle the display of each view and drag ⋮⋮ to sort.

Suitable Scenarios and Considerations

Suitable users: those using dsh in multiple workspaces long-term and frequently needing to look back at old sessions for context; archived sessions are in the search range by default, so digging up old records doesn’t require unarchiving first.

Notes before use:

  • The plugin runs with the permissions of the current dsh process; it is recommended to review the source code and license (MIT) before installing;
  • Search is literal phrase matching, does not support synonyms or semantic search; the “Platform limitations” section in README lists the full limitations; this section was incomplete during the latest scraping, refer to the original text;
  • A maximum of 3 sessions can be referenced per message, and each session snapshot has a default size of 64 KB;
  • Privacy: runs completely locally, zero network requests, read-only (see PRIVACY.md).

Conclusion

dsh-session-workbench has woven dsh’s existing session indexing and referencing capabilities into an actionable interface: searchable, precise navigation, and recallable, plus the ability to organize the session view tab bar, all running locally.

Related Links:

  • Directory: https://www.skillhub.cn/plugins/PolinniZhong/dsh-session-kb
  • GitHub: https://github.com/PolinniZhong/dsh-session-kb

Two notes: the directory site skillhub.cn is an independently maintained community site with no official affiliation to DeepSeek / Hypersphere; the repository/homepage in package.json is dsh-session-workbench, which is inconsistent with the dsh-session-kb links above (possibly a repo rename), and the current canonical address could not be confirmed.