In DeepSeek Harness (DSH) application development, it is common to need in-depth analysis of a specific passage within the current conversation context. Inserting this directly into the main conversation interrupts the context, while creating a new session is cumbersome. The dsh-conversation-branches plugin solves this pain point by enabling selection-based questioning and providing IM-style independent Q&A branches in the right-hand details column.

Plugin Overview

This plugin is maintained by Caramel-Geass and is licensed under the MIT License. It allows users to select text in the main conversation and immediately start an independent streaming Q&A session in the details column, with the data persisted along with the main session.

Installation and Enablement

This is a dsh bundle plugin declared through dsh.bundle. After adding it, no manual mount configuration is needed; it automatically becomes part of the profile’s composition layer.

The installation command is as follows:

dsh plugin --profile <name> add @deepseek-ai/dsh-conversation-branches

Core Features

  • Selection-based questioning: Selecting text in the main conversation brings up a question box, enabling an independent Q&A about the selected passage without interrupting the main conversation.
  • IM bubble conversations: Branches are displayed as chat bubbles and support streaming output as well as multiple follow-up turns within the same branch.
  • Persistence with the session: Branch data is written to the session log as fork/branch log-only events and replayed in order when reloading.
  • Locate and highlight: Clicking “Selected text” in a branch card returns to the main conversation and briefly highlights it.
  • Collapse / delete: Branch cards can be collapsed to a single line and support deletion.

Typical Usage

  1. Select a segment of text in the main conversation body.
  2. The question box appears. Enter a question and press Enter (or click “Ask”).
  3. A branch panel appears in the right-hand details column and starts streaming the answer.
  4. Continue with follow-up questions; click “Selected text” to locate the main conversation; collapse or delete the branch.

Technical Details

Dependencies

  • Runtime dependencies: @deepseek-ai/dsh-session, @deepseek-ai/dsh-typert-protocol.
  • Peer dependencies: react, @deepseek-ai/dsh-client-connection.

Namespace Resolution

The plugin self-mounts the conversationBranches Remote namespace. Because the host that mounts it and this plugin are sibling fibers, resolving it directly through the ctx.remote.conversationBranches fiber-store chain can cause a deadlock. Therefore, it should be resolved uniformly through ctx.get('remote.conversationBranches') via the shared reflect store.

Summary

dsh-conversation-branches enhances the flexibility of DSH sessions by providing a non-intrusive branch interaction model. Developers can refer to the GitHub repository for more source code and development details.