DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Selection Ask — DeepSeek Harness 插件(DSH Plugin)
← Plugins
S

dsh-selection-ask

Selection Ask

适用于 DeepSeek Harness 的 ChatGPT 风格文本选择助手:在对话中选择文本后,会出现悬浮的「询问 DeepSeek」按钮;点击即可将所选文本引用到输入框中。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:lzbaclz/dsh-selection-ask#d17ea0555110a01f6c9d0b19f4412ca515706fea
README兼容性版本

兼容性与来源证明

Selection Ask 以 dsh-selection-ask 发布,当前版本为 0.1.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/17

版本

0.1.1stable
2026/9/17

相关插件

正在加载相关插件…

最新版
0.1.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 5
周下载
0
最近提交
2026/9/17
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Web App@monotykamary/dsh-web-appdsh browser-surface 捆绑包:在 dsh-base 之上的 Web 补丁层,加上运行时衔接插件(前端 dist 提供服务、web-surface 提示符、Bash 运行时变量、URL 行)

README

dsh-selection-ask

banner

简体中文 · Installation · Usage · Development · Troubleshooting · License

Select it. Quote it. Ask DeepSeek.

DeepSeek Harness is a text-first terminal/agent workspace. But quoting a piece of context back into the chat should be one gesture, not a copy-paste chore. dsh-selection-ask gives the web GUI a ChatGPT-style selection helper: select text in a conversation and a floating 「询问 DeepSeek」 button appears beside it. Click it — the selection is quoted into the composer as a Markdown blockquote (> ), the composer is focused, and the caret is parked at the end. Just type your follow-up and send.

Why

  • Zero friction quoting — the exact gesture you know from ChatGPT, in DeepSeek Harness.
  • Official integration, no hacks — writes through the harness's inputActions.setDraft input-machine API, so undo history and draft persistence keep working. It never touches DSH internals or DOM state directly.
  • One command to install — the compiled lib/ is committed, so a github: install fetches ready-to-load artifacts with no build step.

Features

  • Button follows the selection — positioned at the selection's screen coordinates (position: fixed), clamped to the viewport, hidden once the selection scrolls away.
  • Quotes conversation text only — selections must be inside the transcript ([data-conversation-scroll]); selecting inside the composer itself does nothing (quoting the draft back into itself is nonsense).
  • Quote-aware append — every selected line gets a > prefix; an empty draft is replaced, a non-empty draft gets the quote appended as its own paragraph (blank line in between).
  • Session-scoped — the button state resets on session switch, and the button hides while a takeover composer (question/approval) replaces the default one.

Requirements

  • DeepSeek Harness with the web profile (dsh web), DSH packages of the 0.1.0-rc.6 era.
  • A browser page on the harness GUI (http://127.0.0.1:3080 by default).
  • Building from source needs Node ^22.19.0 || >=24 and pnpm. Installing the prebuilt package does not (compiled lib/ is committed).

Install

Requirements: DSH ≥ 0.1.5-rc.2 (the next channel / the DSH Desktop app).

Plugin versionWorks with
0.1.1DSH ≥ 0.1.5-rc.2
0.1.0DSH 0.1.0-rc.x (the dsh-client-runtime era)

ation

1. Install the package

From GitHub (recommended)

dsh plugin --profile web add github:lzbaclz/dsh-selection-ask

Pin a release for reproducibility: dsh plugin --profile web add github:lzbaclz/dsh-selection-ask#v0.1.0

From a local clone

git clone https://github.com/lzbaclz/dsh-selection-ask.git
dsh plugin --profile web add link:/absolute/path/to/dsh-selection-ask

From npm (not published yet — dsh plugin --profile web add dsh-selection-ask will work once it is; see Roadmap)

2. Activate it

dsh plugin add already registers the package in your profile's dsh.profile.bundles list, and this package ships its own cordis.patch.yml, so the entry row is inserted automatically at boot. Choose one of the two activation paths — never both.

Path A — restart (zero YAML editing; recommended for new setups)

Restart dsh web (or just start it if it is not running). Done — no config files to edit.

# stop your dsh web process, then:
dsh web

Path B — hot activation on a running server (no restart)

Use raw pnpm (not dsh plugin, which would also register the bundle) so the bundles list is untouched, then patch the profile's patch layer, which DSH watches and applies live:

cd ~/.dsh/profiles/web
pnpm add github:lzbaclz/dsh-selection-ask

Now open ~/.dsh/profiles/web/cordis.patch.yml and replace the [] with the insert block — the file must stay a valid YAML list:

# BEFORE:
# Your patch layer for this dsh profile, applied after every bundle layer:
# a top-level YAML array of loader patch entries (id-targeted config
# overrides, disables, and insert lists; `!!js` expressions allowed).
[]

# AFTER:
# Your patch layer for this dsh profile, applied after every bundle layer:
# a top-level YAML array of loader patch entries (id-targeted config
# overrides, disables, and insert lists; `!!js` expressions allowed).
- insert:
    - id: dsh-selection-ask
      name: dsh-selection-ask
      config: {}

Save the file and refresh the browser page — the plugin is loaded.

⚠️ Do not combine Path A and Path B (e.g. dsh plugin add + a manual patch row): the entry would be registered twice and dsh web fails to boot with duplicate loader entry id: dsh-selection-ask.

⚠️ Do not append the YAML block after an existing [] — that produces an invalid file and dsh web fails to boot with failed to parse patches. Replace the [] as shown above.

If your profile is not named web, substitute your profile name; if you set a custom harness home, substitute your $DSH_HOME for ~/.dsh.

Older profiles (created by an earlier dsh version) may lack the autoInstallPeers: false line in pnpm-workspace.yaml. Add it so pnpm never tries to auto-install pre-release peers:

packages:
  - .

nodeLinker: hoisted
autoInstallPeers: false

3. Verify

Refresh the GUI page and select a sentence in the chat flow — the 「询问 DeepSeek」 button floats beside the selection. Click it: the text lands in the composer as a quote.

Upgrade & hot reload

dsh plugin --profile web add dsh-selection-ask@latest   # fetch the new version

The DSH composition always mounts the dsh-client-hmr chain, which watches installed plugin bundles and reloads them:

  • Upgrading an installed plugin (same entry, new file content) is hot — no app restart, usually not even a page refresh.
  • Installing a brand-new plugin (a new roster entry) needs one DSH restart.

Every side effect (style tag, locale dictionaries, slot registrations) is owned by the plugin fiber, so a hot reload never leaves stale code behind.

Usage

  1. Select text anywhere in the conversation transcript.
  2. Click the 「询问 DeepSeek」 button floating beside the selection.
  3. The selection is quoted into the composer (> selected text), the composer is focused and the caret is at the end — type your follow-up question and send.

Uninstall

dsh plugin --profile web remove dsh-selection-ask

If you used Path B, also remove the insert block from cordis.patch.yml (put the [] back), then refresh / restart.

Troubleshooting

SymptomCause & fix
dsh plugin add fails with ERR_PNPM_NO_MATCHING_VERSION for @deepseek-ai/...Your profile is missing the autoInstallPeers: false line in pnpm-workspace.yaml (older profiles), so pnpm tries to auto-install pre-release peers. Add the line (see below), remove any stray @deepseek-ai/* entries from the profile's package.json dependencies, delete the profile's pnpm-lock.yaml, then re-run. This plugin also marks every peer optional, so it never triggers auto-install.
dsh web fails to boot: failed to parse patchesThe insert block was appended after the file's existing [], making the YAML invalid. Replace the [] with the block instead (see Path B).
dsh web fails to boot: duplicate loader entry id: dsh-selection-askThe package is registered twice — you used dsh plugin add (which adds the bundle) and a manual patch row. Remove one of the two.
Installed via dsh plugin add but nothing appears after a page refreshBundle-list changes are composed at boot — restart dsh web (Path A), or use the hot-activation Path B.
Button never appears after selecting textSelection is outside the transcript (try selecting a chat message), the page wasn't refreshed after activation, or the insert row is missing.
Button appears but click does nothingAn outdated bundle is cached — hard-refresh the page (Cmd/Ctrl+Shift+R). If the package was rebuilt locally, re-run pnpm build and re-link: it.
Button gone while a question card is showingExpected: the overlay hides with the default composer under a takeover. It returns when the default composer does.
dsh plugin add failsAny pnpm specifier works (link:, github:, tarball URL). Check the profile path under ~/.dsh/profiles/ and your Node version.

Development

The compiled lib/ is committed, so normal installs never need a build. To hack on it:

git clone https://github.com/lzbaclz/dsh-selection-ask.git
cd dsh-selection-ask
pnpm install
pnpm typecheck   # host + client tsc programs, zero errors
pnpm build       # tsc(host) + tsc(client) + tsdown bundle
pnpm verify      # offline smoke: manifest/exports/patch/bundle shape
pnpm test:dom    # headless DOM test: mounts the built button in jsdom and asserts the quote flow      # offline smoke checks over the built artifacts
  • src/index.ts — host half (empty apply; exists so the roster scan finds the package).
  • src/client/index.tsx — browser half: injects CSS, registers into the conversation.input.overlay slot.
  • src/client/SelectionAskButton.tsx — the floating button: selection detection, positioning, quote writing.
  • src/client/quote.ts — pure buildQuote / appendQuote helpers (exercised offline by verify).
  • src/client/styles.ts — button CSS + HMR-safe <style> injection.

After changing src/, rebuild, reinstall (or re-link:), and refresh the page.

How it works

The plugin registers a component into the session-scoped conversation.input.overlay slot, which grants it the session input kit (useInput, inputActions). A document-level selectionchange/mouseup listener detects selections inside the transcript and renders a position: fixed button at the selection's bounding rect. Clicking builds a Markdown quote, joins it with the current draft, writes the full draft through inputActions.setDraft — the input machine's official write path — then focuses the composer textarea.

Roadmap

  • Publish to npm (dsh plugin --profile web add dsh-selection-ask).
  • Optional keyboard shortcut (e.g. ⌘⇧Q) to quote the current selection.
  • Configurable button label / language.

License

MIT © lzbaclz


Issues and PRs are welcome any time — open an issue and tell us what you built with it.