Foreword

When having long conversations in DSH, you often need to follow up on specific details of a response without interrupting the main thread. Common practices include starting a new session, copying and pasting context, or switching to a sub-window — these steps are cumbersome and can easily disrupt the main conversation.

dsh-sidebar-qa moves these follow-up questions to the right sidebar: select text, click “Ask,” and an independent session is automatically created in the same workspace, allowing the main conversation to continue uninterrupted. The interaction is similar to Codex’s sidebar questioning or Claude Code’s /btw feature.

What Is This

dsh-sidebar-qa is a DSH web client plugin maintained by ChenRuoT, based on the third-party extension tab registered by dsh-better-sidebar. The current version is 0.4.0, licensed under MIT, with approximately 31 stars on GitHub.

The core problem it solves: select any text in a conversation → embed Q&A in the right panel → automatically create an independent DSH session in the same workspace (named like ❓<topic>), without interrupting the main conversation.

Core Features

The verified capabilities are introduced below by usage path.

Text Selection and Embedded Panel

  1. In any conversation (main conversation or existing follow-up), select text and click the floating “Ask” button.
  2. The right “Follow-up” panel expands into an embedded conversation: the quoted text and question are streamed in the sidebar, with the input box fixed at the bottom, without jumping to the main window.
  3. Even if the right panel is collapsed, clicking “Ask” will automatically expand it, ensuring visible feedback for the operation.

Selection restrictions (from source code constraints): within a single message, in non-streaming output, no more than 2000 characters.

Context Strategy

Each new follow-up can switch between three strategies (via chip in the panel + configuration default historyStrategy):

  • Full Inheritance (inherit): sessions.fork splits from the main session’s most recently completed turn, inheriting the complete history with the seed. The first request reuses the main session’s message prefix, benefiting DeepSeek’s prefix cache hit. If the main conversation is responding, it automatically degrades to “Compressed.”
  • Compressed (compressed, default): A fast model compresses earlier windows while preserving recent original text.
  • Mechanical Trim (trim): Takes the most recent trimWindowMessages messages in original form, with no LLM cost.

Smart Summary and Independent Sessions

Before the first follow-up, the host side uses a fast, no-thinking model to compress the main conversation context into a summary, which is injected into the first message along with the selected quote. If the summary fails, it degrades to “recent conversation + quote + question,” ensuring Q&A continues uninterrupted.

Each follow-up is an independent session in the same workspace, allowing further follow-ups and archiving. Selecting text within a follow-up conversation generates nested sub-follow-ups.

Follow-up Records

The sidebar also has a “Follow-up Records” tab: grouped by root (main) sessions, listing all nested follow-ups in the current workspace in a hierarchical tree. Nodes can be collapsed, showing the last access time; clicking to jump keeps the follow-up records tab open. Archived or deleted follow-ups are grayed out and can be removed from the records (cleaning up localStorage mappings without affecting DSH-side sessions).

Two-Stage Naming

When selecting text, the first line is used as a placeholder name; after the first response completes, the host extracts a final title of ≤15 characters based on “question + answer” and renames it.

Configuration Options

Configuration is managed through the DSH settings service sidebarqa namespace. Web entry: DSH Settings → Sidebar Card → “Follow-up” card top-right gear “Function Configuration.”

Key Default Description
historyStrategy compressed Default context strategy
trimWindowMessages 10 Number of messages to keep in mechanical trim (1–256)
summarizeProvider '' Summary model channel; empty inherits from the followed-up session
summarizeModel deepseek-v4-flash Summary model
summarizeReasoningEffort off Summary reasoning mode
answerProvider deepseek-official Sub-conversation answer channel
answerModel deepseek-v4-flash Sub-conversation answer model
answerReasoningEffort off Sub-conversation reasoning mode

Interface text and model-side prompts follow DSH’s language settings; the answer language follows the question/selected content, not bound by the interface language.

Cross-Plugin Invocation

External plugins can use dsh-better-sidebar’s openTab to pre-fill quotes without the selection floating layer:

ctx.betterSidebar.openTab(
  { type: 'dsh-sidebar-qa:ask', meta: { quote: { text: 'selected content', role: 'user' } } },
)

Installation and Activation

Prerequisites

dsh-better-sidebar must be installed and require 0.14.0+ (corresponding to DSH 0.1.0-rc.8; rc.7 and earlier cannot resolve this plugin’s peer dependencies). If not installed, this plugin will not activate, with no UI or behavior.

dsh plugin --profile web add dsh-better-sidebar@latest

Install the Plugin

# Via npm (recommended)
dsh plugin --profile web add dsh-sidebar-qa

# Or local path
dsh plugin --profile web add <local repository path>

After installation, restart dsh web (host-side changes require a restart; client-side changes can be handled with a browser hard refresh).

Typical Usage

After completing the installation steps above, you can use the plugin as follows:

  1. Open any DSH conversation, select a text segment, and click the floating “Ask” button.
  2. The right “Follow-up” panel appears with the quoted text and input box. Enter your question and press Enter to send (Shift+Enter for a new line).
  3. Responses stream in the sidebar. On the left of the bottom input box, you can select the context strategy; on the right, you can choose the model and view the context usage ring. All further follow-ups are completed within the panel.
  4. To review historical follow-ups, switch to the “Follow-up Records” tab and find the target session in the tree structure to jump to it.
  5. Adjust model or default strategy: Settings → Sidebar Card → “Follow-up” → Gear “Function Configuration.”

When starting a new follow-up, the model selection shares data with the main conversation’s session.models/selectModel. In full inheritance mode, the model selection is read-only and grayed out (forked sub-sessions inherit the main conversation’s model); in compressed/trim modes, it acts as a local draft and is applied after the follow-up session is created.

Applicable Scenarios and Notes

Who It’s For

  • DSH users who frequently ask follow-up questions on specific parts of long conversations without wanting to leave the main conversation context.
  • Developers who need a Codex-like sidebar questioning or Claude Code /btw experience and are already using dsh-better-sidebar.

Before Use

  • The plugin runs with the current dsh process permissions. Before installation, it is recommended to read the GitHub source code and MIT license.
  • Dependency chain: dsh-sidebar-qadsh-better-sidebar@0.14.0+ → DSH 0.1.0-rc.8+. Upgrade DSH first if your environment is outdated.
  • The SkillHub directory page (skillhub.cn/plugins/ChenRuoT/dsh-sidebar-qa) is a community independent site with no official affiliation to DeepSeek or High-Flyer; the DSH ecosystem philosophy is “everything is a plugin,” and this plugin is a community third-party extension, not a built-in capability.

Conclusion

dsh-sidebar-qa chains “select → sidebar follow-up → independent session” into a zero-interruption pipeline: the main conversation continues, follow-ups are recorded, nestable, and configurable with context and models. If you are already using DSH Web and better-sidebar, you can install and try it using the commands above.