dsh-selection-actions:在 DSH Web GUI 里把对话片段变成引用或侧栏并行讨论

前言

在 DeepSeek Harness(DSH)里做长对话时,经常需要把前面某段回复摘出来,写进下一条提问里当上下文。手工复制粘贴可以,但片段一多,输入框里容易堆成一大段 markdown,发送后 transcript 里也不易扫读。社区插件 dsh-selection-actions 针对 Web 客户端:在页面上选中一段对话文字,用浮动工具栏把片段暂存为「引用」,发送时转成 blockquote 给模型读;也可以 fork 当前 Session,在右侧 Sidebar 开并行侧聊,主线程不被跟问污染。

这是什么

dsh-selection-actions 是 DSH 的 Web GUI 插件(npm 包名同仓库名),维护者为 ccclosed。Host 半侧为空实现(index.js 里 apply() {}),没有 Config 与 Host 端设置;逻辑全部在 client.js。许可证为 MIT(见仓库 LICENSE)。

分类上属于客户端插件:只影响浏览器里的 Harness 界面,不改动服务端行为。

核心功能

下面介绍 README 中已说明的能力。

选区工具栏

在对话 transcript 里选中任意文字,选区旁会出现小工具栏,两个操作:

  • Add to chat:把片段放进当前会话的 composer(输入区)。
  • Add in side chat:fork 当前 Session,在右侧 Sidebar 以并行聊天打开副本,并在那边同样暂存该引用。

Add to chat:暂存与发送

片段进入当前 composer 后,输入框上方会出现紧凑条带,显示类似 N conversation selections,带移除控件;鼠标悬停可展开已暂存的引用列表。发送时,每个片段通过 input trigger 的 codec.serialize 变成 prompt 里的 blockquote,模型将其视为被引用的上下文。

发送后的展示

transcript 不会长期保留原始 > … markdown 墙,而是用卡片渲染(引号图标、摘录、「Quote from the conversation」类文案),便于人和模型扫读。插件通过 ctx.uiConversation.userText.register 与 conversation.user.text.node 完成卡片渲染。

Add in side chat:并行侧聊

复用内置的 subagentchat Sidebar 标签页,在右侧打开 fork 后的 Session,并把同一引用 staged 到侧聊 composer。主会话 thread 可继续原话题,跟问放在侧栏。若 Session 尚无 projected title,标签标题会回退为 fork 的 Session id(README 已知限制)。

安装与启用

插件是 bundle:Host 半侧为空,仅 Web client 生效。用 Harness 插件管理器安装(按 profile 安装,重启后仍保留),装完后重新加载 Web GUI 页面。

官方 README 给出的安装方式如下。

# from npm
dsh plugin --profile <profile> add dsh-selection-actions

# from a local checkout
dsh plugin --profile <profile> add /path/to/dsh-selection-actions

# from this repository
dsh plugin --profile <profile> add https://github.com/ccclosed/dsh-selection-actions

若不想走 npm,仓库提供 format-1 市场索引 market.json,可在 Settings → Plugins → Discover → index sources 添加:

https://raw.githubusercontent.com/ccclosed/dsh-selection-actions/main/market.json

索引里列出的版本以 git+https://github.com/ccclosed/dsh-selection-actions.git#<commit> 形式安装,便于固定 commit 复现。

典型用法

  1. 打开已安装该插件的 DSH Web GUI,进入任意 Session。
  2. 在 transcript 中用鼠标选中要引用的段落,等待选区旁工具栏出现。
  3. 若要在当前对话里追问:点 Add to chat,在 composer 里补充你的问题,确认条带上引用无误后发送。
  4. 若要在不污染主线程的前提下深挖:点 Add in side chat,在右侧 Sidebar 的并行 Session 里编辑并发送。

按钮与计数文案在 client.js 内注册,支持 en / ru(locale/en.json、locale/ru.json 仅含插件列表 meta)。

实现要点(可选阅读)

README 简述的挂载点:

  • shell.overlay:选区旁浮动工具栏。
  • conversation.input.dock:composer 上方的引用条带(未用 in-card overlay,因 dock 渲染更稳定)。
  • ctx.inputTriggers.registerSource:引用源与 blockquote 序列化。

适用场景与注意

适合:经常在 DSH Web 里做长对话、需要反复引用前文片段的开发者或日常 Harness 用户;需要主会话保持简洁、把分支讨论放到 Sidebar 的场景。

安装前:插件随当前 DSH 进程与用户权限在客户端执行,安装前应自行查看 GitHub 源码 与 MIT 许可证。社区目录 SkillHub 插件页 为独立生态站点,与 DeepSeek / 幻方无官方从属关系。

已知限制(来自 README):

  • 引用条带从 dock 座位挂到 composer 卡片上,会与卡片顶边重叠若干像素,而非卡片子节点。
  • 移除控件仅在本 draft 中没有「外来」reference chips 时,才会清掉本插件的引用。
  • 侧聊标签标题在 Session 无标题时会显示 Session id。

结尾

dsh-selection-actions 把「选中对话 → 引用进下一条消息或侧栏并行聊」做成 Web GUI 内的一键流程,减少手工 blockquote 与复制粘贴。更多信息见目录页与仓库:

  • 目录页:https://www.skillhub.cn/plugins/ccclosed/dsh-selection-actions
  • GitHub:https://github.com/ccclosed/dsh-selection-actions
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜