Preface

When running agents in a DSH main session, two common interruptions often occur: first, when you want to follow up on a specific part of the conversation, you have to switch out to open another window or manually copy and paste; second, when the agent pops up a “question dialog” waiting for your response, the entire workflow halts. The Codex-style sidebar chat solves the former problem by opening an independent chat next to the main session that inherits the configuration and brings the results back. The dsh-side-chat maintained by heartmove takes this a step further by incorporating question dialogs into the sidebar chat, allowing you to think through your response before answering without interrupting the main session.

What is This

dsh-side-chat (heartmove/dsh-side-chat) is a web profile client plugin for DSH, currently at version 0.2.0, under the MIT license. It provides an isolated independent chat on the right panel, separated by the main session. Each sidebar chat is a hidden regular DSH session (linked to the main session via meta.parentSession and archived, not appearing in the main session list), inheriting the main session’s toolset, model, thinking difficulty, and permission presets, with awareness of the working directory. You can select dialogue content to ask questions, and AI responses can be brought back to the main session. When the main session pops up a question dialog, the questions and options are automatically listed in the sidebar panel, allowing you to analyze them in the sidebar chat before bringing the answers back.

Plugin information can be found on the SkillHub Directory Page and the GitHub Repository. SkillHub is an independent community directory for DSH plugins, with no official affiliation to DeepSeek or High-Flyer.

Core Features

Selected Content → Sidebar Inquiry

After selecting any message text, a “Ask in Sidebar Chat” button floats up. If the current session already has an active sidebar chat, a “Continue Asking in the Active Sidebar Chat” option also appears. The selected content is automatically brought into the input box of the right panel.

Inherits Main Session Configuration, Independently Adjustable per Chat

By default, the sidebar chat inherits the main session’s toolset, model, thinking difficulty, permission presets, and working directory, functioning just like the main session within the same workspace. The secondary model menu (Service Provider → Model → Thinking Difficulty) and permission menu are replicated from the main session, and each sidebar chat can be adjusted independently. There is also a “Look up information from workspace/main session when needed” toggle (off by default), which, when enabled, allows reading workspace files and main session records as needed.

AI Responses Brought Back to the Main Session

Every AI response in the sidebar chat can be brought back to the current main session (without being sent immediately):

  • Select a response snippet with the mouse, and choose “Bring Back Directly” or “Summarize then Bring Back” from the floating menu.
  • Below each response body, there are “Bring Back Directly” and “Summarize then Bring Back” buttons for one-click retrieval of the entire segment or its summary.

“Summarize then Bring Back” uses the model inherited by the sidebar chat to generate a summary before bringing it back. The implementation method can be chosen in settings: written as a draft in the input box (draft), or injected as a collapsed context line (context, serving as context without writing a draft or sending).

Question Dialogs Don’t Interrupt the Workflow

When the main session pops up a “question dialog,” the sidebar panel automatically lists the questions and options, eliminating the need to manually select text. Each question can be “Bring in All,” and each option can be “Bring in,” both supporting continuing an existing sidebar chat or creating a new one. The list can be collapsed or expanded, and individual or all items can be deleted (once deleted, they will not reappear). The main session waits quietly for the dialog response, and the workflow is not interrupted.

Panel and Other Capabilities

  • Drag the left edge to adjust the width (280–720 px), with the width automatically clamped within about 40% of the window size. It readjusts when the window size changes, and the width persists across refreshes.
  • Can be collapsed or expanded, with no close button.
  • Markdown rendering of responses, display of thinking processes, image attachments (paste/drag and drop), send/stop buttons, and thinking duration display reuse the same UI as the main session.
  • The sidebar chat list supports single-item deletion and “Delete All.”
  • The interface follows the DSH language setting (Chinese/English).

Installation and Enabling

Requirements

  • Node.js ≥ 20
  • pnpm
  • DSH ≥ 0.1.0-rc.6

Installation from GitHub

The official installation command is:

npx -p @deepseek-ai/dsh dsh plugin --profile web add github:heartmove/dsh-side-chat

dsh plugin forwards the command to pnpm under ~/.dsh/profiles/web/ and reconciles the bundle into the profile’s dsh.profile.bundles layer list. After the git installation pulls the source code, pnpm runs the package’s prepare script (tsdown) to build lib/ from src/.

With pnpm ≥ 10, the first add might fail due to the prepare script not being whitelisted, prompting “Ignored build scripts.” Write the package name printed by pnpm into ~/.dsh/profiles/web/pnpm-workspace.yaml:

allowBuilds:
  dsh-side-chat: true

Then re-run the add command. This whitelist allows the package to run code on your machine during installation—only allow packages whose source code you trust, and it’s recommended to pin the commit (github:heartmove/dsh-side-chat#<sha>) to prevent subsequent pushes from silently changing the actual running code.

After installation, restart dsh web and force refresh the browser (Ctrl/Cmd+Shift+R).

Installation from Local Checkout

Run the following in the directory containing the project checkout:

npx -p @deepseek-ai/dsh dsh plugin --profile web add ./dsh-side-chat

Typical Usage

Asking Questions from Selected Content

  1. Select a portion of text from a message in the main conversation.
  2. Click the floating “Ask in Sidebar Chat” or select “Continue Asking in the Active Sidebar Chat.”
  3. The right panel opens (or expands), with the selected text already in the input box.
  4. Adjust the model/thinking difficulty, permissions, and the “Look up information from workspace/main session when needed” toggle as needed.
  5. Send. The response streams back with Markdown rendering, and a “Thinking” collapsible row is displayed when necessary.
  6. Drag the left edge of the panel to adjust the width, or use the collapse/expand controls.

When the default sendImmediately is enabled, the selected content is sent immediately, with the set default prompt appended. After disabling it in settings, the selected content is first placed in the input box as an attachment for you to confirm and edit before sending.

Bringing Back to the Main Session

  1. In the sidebar chat, select an AI response snippet and choose “Bring Back Directly” or “Summarize then Bring Back”; or click the two buttons below the response to bring back the entire segment with one click.
  2. Depending on the bringMode setting, the content is appended to the main session input box draft or injected as a collapsed context line.

Handling Question Dialogs

  1. When the main session pops up a question dialog, a floating entry appears next to the dialog title when the panel is closed; click to open the panel.
  2. For each question, use “Bring in All,” or for each option, use “Bring in,” choosing to continue an existing or create a new sidebar chat.
  3. Let the AI analyze it in the sidebar chat, bring the answer back to the main session, and then respond to the dialog.

Settings

Open DSH Settings → Side Chat:

Setting Default Description
lookupDefault Off Whether “Look up information from workspace/main session when needed” is enabled by default when creating a new sidebar chat
sendImmediately On Whether to send immediately after selection or first place it as an attachment in the input box
defaultPrompt Empty The prompt appended to the selected content when sendImmediately is enabled
bringMode draft Bring-back method: draft writes to the draft, context injects a collapsed context line

Preferences are saved under the DSH settings namespace dsh-side-chat.

Use Cases and Notes

Who It’s For: Developers who frequently run agents in DSH main sessions and need to follow up on dialogue snippets or question dialog options via a side channel. For difficult tasks, you can switch the sidebar chat to a stronger model without affecting the main session configuration.

Security Note: The plugin runs with the permissions of the current dsh process. Git installation pulls source code and runs the prepare build script locally; the allowBuilds whitelist permits this code to run during installation. Before installation, review the GitHub source code and the MIT license, only install packages you trust, and consider pinning the commit.

Limitations: Only applicable to the DSH web profile, requiring DSH ≥ 0.1.0-rc.6. Sidebar chats are hidden sessions, relying on meta.parentSession and the archiving mechanism, isolated from the main session list.

Conclusion

dsh-side-chat combines Codex-style sidebar chat with question dialog answering: it inherits the agent capabilities of the main session, allowing you to ask questions upon selection and bring back analysis results without interrupting the main workflow for follow-ups or dialog responses. For more information, visit the SkillHub Directory Page and the GitHub Repository.