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/branchlog-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¶
- Select a segment of text in the main conversation body.
- The question box appears. Enter a question and press Enter (or click “Ask”).
- A branch panel appears in the right-hand details column and starts streaming the answer.
- 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.