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¶
- In any conversation (main conversation or existing follow-up), select text and click the floating “Ask” button.
- 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.
- 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.forksplits 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 recenttrimWindowMessagesmessages 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:
- Open any DSH conversation, select a text segment, and click the floating “Ask” button.
- 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).
- 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.
- 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.
- 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
/btwexperience and are already usingdsh-better-sidebar.
Before Use
- The plugin runs with the current
dshprocess permissions. Before installation, it is recommended to read the GitHub source code and MIT license. - Dependency chain:
dsh-sidebar-qa→dsh-better-sidebar@0.14.0+→ DSH0.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.
- Directory page: https://www.skillhub.cn/plugins/ChenRuoT/dsh-sidebar-qa
- GitHub: https://github.com/ChenRuoT/dsh-sidebar-qa