Introduction

When reading long responses in the DSH Web GUI, a common workflow is: copy a segment of the original text, return to the input box, manually type > to create a quote block, and then write a follow-up question. With multiple sessions side-by-side, it is easy to paste the quote into the wrong composer. The DSH main conversation body allows text selection, but the README states that there is no ready-made floating toolbar for selections in the client bundle. This article introduces the community plugin dsh-quote-to-chat (Maintainer: DEVbyQIN / Repository Author: QIN-SMART). After selecting text in a reply, a floating toolbar appears, allowing you to write the snippet to the current session draft, optionally open a sidebar conversation, or copy it to the clipboard. In terms of behavior, it approximates the “select-to-act” experience of Codex and the ChatGPT desktop client; it is exclusively for the Web client (dsh.client.platform = web).

What is this

dsh-quote-to-chat is a client-side plugin for DeepSeek Harness (DSH): select a passage of text in the conversation body, and a toolbar with Add to Chat | Ask in Sidebar | Copy appears above the selection. It is categorized as a client-side plugin; the community catalog is available at the SkillHub entry, and the source code and documentation are on GitHub (the installation path in the README points to github:QIN-SMART/dsh-quote-to-chat). The current package version is 0.2.0, license is MIT, and it has zero runtime dependencies.

Core Features

  1. Add to Chat: Inserts a quote block into the current session input box draft (normal paragraphs as > line; code blocks automatically use ```lang fences instead of stuffing them into a blockquote). The cursor returns to the input box, and the toolbar prompts “Added to chat”.
  2. Ask in Sidebar (Optional): Expands a sidebar conversation thread in the right panel, with the quote pre-filled into the sidebar input box; relies on dsh-better-sidebar. If not installed, the button is hidden entirely, and other features remain unaffected.
  3. Copy: Copies the selected original text to the clipboard and prompts “Copied”.
  4. Constrained Boundaries: No toolbar appears when selecting inside the input box; it collapses on Escape, clicking elsewhere, or when the selection becomes invalid; it only covers the conversation body—no popup appears for selections in the sidebar, document preview, or trajectory view. In multi-session scenarios, it writes back to the corresponding composer based on DOM ownership; if it cannot uniquely determine the target, it prompts rather than writing to the wrong box.

The toolbar uses DSH native menu material variables and overlays native fills on an opaque base layer to avoid the 58% transparent menu and dense text bleeding into each other when floating over content (details in the README).

Draft writing goes through formal APIs: inputActions.captureInsertion() and insertText, without relying on build-time hash class names; session ownership relies on stable contracts such as data-chat-turn and data-slot="conversation.session" (based on DSH 0.2.0-rc.1, see the “Implementation Basis” table in the README).

Installation and Enablement

Run the following in an environment where the DSH CLI is already configured (commands from the README):

# Install from GitHub (Recommended)
dsh plugin --profile web add github:QIN-SMART/dsh-quote-to-chat

# Install from npm (after release)
dsh plugin --profile web add dsh-quote-to-chat

After installation, simply refresh the browser page; no need to restart dsh web.

Uninstallation:

dsh plugin --profile web remove dsh-quote-to-chat

The plugin runs with the permissions of the current DSH process and Web client; please review the repository source code and MIT license before installing. SkillHub is a community directory and has no official affiliation with DeepSeek / High-Flyer.

Typical Usage

Action Result
Select a passage of text in the conversation body Add to Chat \| Ask in Sidebar \| Copy pops up above the selection
Click Add to Chat Quote + empty line inserted into draft; cursor returns to input box
Click Ask in Sidebar Sidebar thread in the right panel (inherits current session context), quote pre-filled, cursor at the end
Click Copy Original text goes to clipboard
Escape / Click elsewhere / Scroll causes selection to become invalid Toolbar collapses

There are no settings in the UI. For debugging, you can use the handles from the README in the browser console, for example:

__dshQuoteToChat.config()
__dshQuoteToChat.setConfig({ format: 'plain' })   // auto | quote | fenced | plain
__dshQuoteToChat.setConfig({ attribution: true }) // Add "(Quoted from reply #N)" after the quote block
__dshQuoteToChat.setConfig({ enabled: false })

Configuration is persisted in localStorage['dsh.quote-to-chat.v1'].

Use Cases and Notes

Suitable for: Users who frequently ask follow-up questions regarding response fragments in DSH Web, wish to minimize manual formatting of quotes, and are already using or willing to install dsh-better-sidebar for sidebar threads.

Notes:

  • Quotations are plain text blockquotes / fences, not DSH atomic quote chips.
  • Lists, tables, etc., selected are restored as block-level line breaks, without adding Markdown list markers or table lines.
  • “Ask in Sidebar” writes drafts via the optional plugin DOM; if the other party significantly changes the input box implementation, it may degrade to a clipboard fallback (a clear prompt will appear if the input box is not found within 5 seconds).
  • The repository provides node --test test/verify.mjs and node tools/real-ui-check.mjs for maintainer self-testing; users only need to install as described above.

Conclusion

dsh-quote-to-chat condenses “Select Reply → Quote or Sidebar Follow-up” into three explicit actions and hooks into DSH’s formal inputActions and Web slots, making it a suitable client-side enhancement in the DSH “everything is a plugin” ecosystem. For further information, visit the SkillHub catalog page and the GitHub repository.