Install
Inside DeepSeek Harness, with dsh-market
dsh plugin --profile web add dshmarket
Or from the command line
dsh plugin --profile web add github:Ruiming-cn/dsh-ask-in-sidebar
Installing runs third-party code with your own permissions — it can read your files, use your credentials and reach the network. Review the source first, and pin a commit (github:owner/repo#sha) when you can.
README
A DeepSeek Harness (DSH) web plugin that lets you select text in an assistant answer and ask questions about it in an ephemeral right-side panel, using the main conversation's existing context without modifying or reloading it.
Features
- Select any text inside an assistant answer in the main DSH conversation.
- A floating Ask in Sidebar action appears next to the selection.
- Clicking it opens a right-side panel with:
- the quoted selected text,
- a question/composer input,
- a running discussion transcript,
- live streaming output,
- a collapsible thinking process,
- timing metadata (time to first thought, first token, total duration, and token usage when available).
- Assistant answers are rendered as safe Markdown: headings, lists, inline code, code blocks, blockquotes, links, and tables.
- The first question is answered from a snapshot of the main conversation's existing LLM message history plus the quoted text.
- Follow-up questions remain inside the same ephemeral sidebar discussion.
- Closing the panel discards the sidebar discussion and its in-memory host snapshot.
- Starting a new ask by selecting different assistant text creates a fresh discussion with a fresh main-conversation snapshot.
How it preserves the main conversation
- The host only reads the main session's already-derived LLM message history and latest request header. It does not index, scan, summarize, or reload the project.
- The plugin registers no tools, opens no new DSH session, and never appends messages to the main session.
- The sidebar transcript lives in browser memory for the lifetime of the panel and in a short-lived host-side in-memory snapshot for the same discussion. Both are removed on close/discard or after a TTL.
- There is no persistent side-session archive, no history tree, and no workspace write path.
Installation
Requirements: a local DSH web profile with Node.js 20+.
# one-command install from GitHub (replace "web" with your profile name if needed)
dsh plugin --profile web add github:Ruiming-cn/dsh-ask-in-sidebar
# or install the pinned GitHub release tarball
dsh plugin --profile web add https://github.com/Ruiming-cn/dsh-ask-in-sidebar/archive/refs/tags/v0.2.0.tar.gz
# or build from a local checkout and install it
npm run build
dsh plugin --profile web add /path/to/dsh-ask-in-sidebar
The plugin is also compatible with the DSH super-injector / dev hot-inject
workflow: build lib/ with npm run build, then inject or link the package
into the target profile. The package includes:
lib/index.js– host half (HTTP endpoints)lib/client.js– browser half (selection action + sidebar panel)cordis.patch.yml– stable bundle-layer insertpackage.jsondsh.bundleanddsh.clientmetadata
Usage
- Open a DSH web conversation.
- Select a portion of an assistant answer.
- Click Ask in Sidebar.
- Type a question such as "Why is it done this way?" and press Enter or click Send.
- Read the answer in the panel and ask follow-up questions as needed.
- Close the panel at any time to return to the main conversation.
Configuration
There is no plugin-specific configuration. The sidebar uses the main
conversation's current provider/model route; if no request/header is
available, it falls back to the live agent's options, then to the first
configured LLM provider. The sidebar uses a small dedicated tool-less system
prompt so it answers from the supplied context instead of trying to use the
main agent's tools.
Context snapshot boundaries
- A snapshot is taken when the first question of a sidebar discussion is submitted. It contains the main session's derived LLM messages at that moment and the latest request header.
- Follow-up questions in the same panel reuse that same snapshot plus the sidebar's own completed history.
- The main conversation may continue to change while the panel is open; the open sidebar discussion does not automatically pick up those later main messages.
- Starting a new ask (a new selection + panel) takes a new snapshot of the then-current main conversation.
- Sidebar context never carries over between separate asks unless the user is explicitly continuing in the same open discussion.
Limitations
- The Markdown renderer is intentionally lightweight; it does not cover every Markdown extension (nested tables, footnotes, task lists, etc.).
- The plugin does not provide tools to the sidebar model, so it cannot call host tools or mutate the workspace from the panel.
- Model context follows the main session. Very long main conversations may produce large sidebar requests because the full derived history is reused.
- Ephemeral snapshots are process-local. A host restart drops them; a follow-up after a restart falls back to a current-main-context snapshot.
- The panel is a plain-DOM overlay, not a DSH native slot. It follows the
conversation DOM contract used by the current web UI (assistant rows expose
data-chat-flow-kind="assistant-step").
Development
npm test # unit tests for the host core
npm run build # copy src/ -> lib/
npm run check # test + build
License
MIT. See LICENSE.
Suggested repository tags when publishing: dsh, dsh-plugin,
deepseek-harness, sidebar, ask-in-sidebar, context.
Release workflow: see RELEASING.md.
Credits and acknowledgements
- DeepSeek Harness (MIT) provides the DSH plugin, session, LLM, and web runtime this plugin runs on.
- The host-side HTTP route + same-origin guard pattern and the browser
window.__ModuleLoader__/ plain-DOM injection pattern are informed by the existing MIT-licensed DSH plugins: - No third-party code is copied into this repository. The implementation is original and attributed to the DSH ecosystem where API shape or patterns are derived from it.
Comments
Comments live in GitHub Discussions. Sign in with GitHub to post or react.