DeepSeek Harness Plugin

suiyideali/dsh-selection-toolbar

Stars ★ 0 Category UI Enhancements Added 2026-08-19

Shows a floating toolbar above text selected in a conversation, with copy, quote, ask, explain, translate, summarize, and custom prompt actions.

Install

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:suiyideali/dsh-selection-toolbar

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time. Only install sources you trust, and pin a commit (github:owner/repo#sha).

README

This plugin publishes its README in Chinese only.

English | 中文

Select text inside a DeepSeek Harness conversation and a small floating toolbar appears above the selection: 复制 · 引用 · 询问 · 解释 · 翻译 · 总结 (copy · quote-reply · ask · explain · translate · summarize).

All AI actions reuse the current session — the selected text is sent into the active conversation as a normal user message, so the model has full context.

Features

Action Behavior
复制 Copy Copy the selected text to the clipboard.
引用 Quote Insert the selection as a markdown blockquote (> …) at the composer caret.
询问 Ask Opens an inline input; Enter sends 你的问题 + selection. Leaving the input empty sends the raw selection as a plain message.
解释 Explain Send 请解释下面这段内容: + selection.
翻译 Translate Send 请把下面这段内容翻译成中文: + selection.
总结 Summarize Send 请用简洁的语言总结下面这段内容: + selection.

The popup hides on Escape, scroll, or clicking elsewhere; the 询问 input stays open while typing (focusing the input collapses the page selection without closing the popup).

Settings

The plugin appears in 设置 → 插件 → 插件列表 as a native-style card — the same collapsible look as the built-in 终端 / 网页搜索 entries — with:

  • 弹窗出现延时 — delay before the toolbar appears after selecting (0–500 ms)
  • 功能开关 — toggle each toolbar entry individually (复制 · 引用 · 询问 · 解释 · 翻译 · 总结); disabled entries disappear from the popup immediately, and 全部开启 re-enables everything at once
  • 恢复默认 — reset all options

Options persist in the browser (localStorage) and apply to the popup live, no reload needed.

Install

From GitHub:

dsh plugin --profile web add github:suiyideali/dsh-selection-toolbar

or from a local checkout:

dsh plugin --profile web add /path/to/dsh-selection-toolbar

Then restart the web app so the new client bundle is picked up.

Requirements

  • dsh web (v0.1.0-rc.6 tested)
  • The profile must already mount @deepseek-ai/dsh-client-runtime and @deepseek-ai/dsh-client-ui-slots (standard in the web profile).

Architecture notes

  • Client-only: the plugin has no host half. AI actions prompt the session through the client sessions service — binding(id).session.prompt(...) — the exact path the composer itself uses, so queueing and error surfaces are native.
  • Quote insert uses the official inputActions.setDraft standard prop from the conversation.input.dock slot. It deliberately avoids sessions.scope()
    • event bails, which the dynamic-plugin facade forbids (cross-context guard); the markdown blockquote is the same shape as other quote-reply plugins.
  • Selections are scoped to the message list ([data-chat-flow]) and exclude the composer, inputs, and contenteditable regions.
  • Fixed actions build fixed prefixes; the 询问 question caps at 2k chars and the selection at 20k chars to keep injected messages bounded.

License

MIT

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →