dsh-better-quotes:在 DSH Web 中整句引用与跨 Session 转发

前言

在 DeepSeek Harness(DSH)Web 里做 follow-up 时,常见做法是拖选 transcript 里的一截文字再引用。模型拿到的往往只是片段,缺少说话人、时间、模型路由、已加载 skill、@session 引用和附件等上下文;多选时还容易变成多条互不关联的 blockquote。若要在另一个本地 Session 里复用同一段上下文,还得自己拼文本。

dsh-better-quotes 是维护者 SpellingDragon 发布的客户端插件(MIT 许可证,当前 npm 版本 0.5.0),面向 DSH Web:用一条消息为单位引用或转发,把元数据打进一个 <quoted_messages> 包,并支持右侧边栏多选与跨 Session 转发。下文按安装、用法和格式说明如何接入。

这是什么

插件全名 dsh-better-quotes,归类为 DSH 客户端插件,仅注入 Web 端 UI 与相关 API,不发起外网请求。官方简介概括为:在 DeepSeek Harness Web 中对整句消息做引用或转发——一键引用、右侧边栏多选、持久化消息元数据、跨 Session 转发。

与「只复制选中文本」的引用方式相比,它引用的是整条消息(user、steering 或已结束的 assistant),并附带发送方、时间、身份、session_id、seq、message_id(若宿主暴露)、provider/model、skills、references 以及附件名与尺寸等,再封装成模型可读、可按身份回查的一个有界 bundle。

核心功能

以下能力均来自项目 README,安装后需在 DSH >=0.2.1-rc.3 且 <0.3.0-0 的 Web 配置下使用。

一个控件,两种结果。 每条消息 Copy 与 Fork 之间的引用图标:单击立即引用该条;长按约半秒,或按 Shift+Enter,进入多选。Transcript 不会额外出现复选框或工具栏。

右侧边栏整句多选。 多选时在右侧 Sidebar 的 Quotes 标签里勾选 user、steering 与已 finalize 的 assistant 消息;选消息时 transcript 不滚动、不空白、不被遮挡。

持久元数据。 每条被引用消息携带 role、time、session_id、seq、message_id、provider/model、已加载 skills、@session references,以及图片/文件附件的名称、大小与尺寸等。

单一有界 bundle。 一次插入对应一个 <quoted_messages> 信封,替代 N 条互不相干的 blockquote;模型把引用当作上下文,并可通过身份字段回查原事件。

跨 Session 转发。 在同一面板里把同一 bundle 作为非 instruction 的参考上下文,发到任意其他本地 Session。

点击定位。 已发送的 bundle 卡片默认折叠;展开后点击同 Session 内条目会滚到原文并短暂高亮,必要时先展开折叠的过程组。来自其他 Session 的卡片会标注 From another session,且不显示定位导航。

Composer 中的摘要 chip。 输入框显示一行摘要(条数与消息预览),而不是裸的 envelope 标签。

本地优先。 无外部 HTTP、无分析、无远程服务,逻辑都在本机 DSH 进程内执行;转发也只在本进程内、且目标限于客户端列出的 Session(不含当前 Session 与子 agent Session)。

若希望模型按 session_id + seq 调用 session_event_read 读源事件,可挂载可选工具(见下文「模型回查」);不挂载时 bundle 仍可阅读,但无法按身份查询。

安装与启用

环境要求:Node.js >= 20,DSH 版本 >=0.2.1-rc.3 <0.3.0-0。插件以当前 DSH 进程权限运行,安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。

从 npm 安装(README 推荐路径):

dsh plugin --profile web add dsh-better-quotes

从源码本地打包安装:

npm ci
npm run build
npm pack
dsh plugin --profile web add /absolute/path/to/dsh-better-quotes-0.5.0.tgz

若你在 DSH 源码 checkout 里开发,把上述命令中的 dsh plugin 换成 pnpm dsh plugin。

安装完成后重启 dsh web 或刷新浏览器,Web 端即可加载插件。

典型用法

引用单条消息

单击 Copy 与 Fork 之间的引用图标。该消息会立刻进入 composer,交互与官方「选中引用」类似;quote chip 显示一行摘要,bundle 随引用一起带入。

引用或转发多条

  1. 长按同一图标约半秒,或按 Shift+Enter。
  2. 右侧 Sidebar 打开 Quotes 标签,当前消息默认选中,列表从最新消息开始。点击行切换选中,可用搜索缩小列表,并用单一全选/全不选控件操作当前列表。
  3. 选 Insert quote (N) 在 composer 放入一个 bundle,或选 Forward 再选一个本地 Session 发送同一 bundle。完成后 Sidebar 会收起。
  4. 转发目标不包含当前 Session 与子 agent Session。

在 transcript 中定位

已发送的 bundle 卡片默认折叠。展开后点击同 Session 条目,会滚到渲染出的原文并短暂高亮;若原文在折叠的过程组内,会先展开该组。跨 Session 转发的卡片不提供源定位。

模型回查(可选)

当需要模型按 bundle 内的身份读源事件时,在配置中挂载 session 查询工具:

- name: '@deepseek-ai/dsh-tool-session-query'

未挂载时,引用内容仍可读,但无法通过 session_id、seq 等字段程序化回查。

Bundle 格式概要

一次插入产生一个 envelope;draft 阶段 composer 会带上与 chip 一致的一行摘要,发送后由卡片持有,transcript 上主要看到卡片而非裸标签。结构示例(字段含义见 README):

<quoted_messages version="1" source_session="…" count="2">
<quoted_message role="user" time="2026-10-26T04:05:06.789Z" seq="12" message_id="…" session_id="…">
<metadata>
<skill name="pdf" />
<reference name="Spec" />
</metadata>
The deployment failed after the schema change.
[attachment kind=file name="deploy.log" bytes=4096 id="…"]
</quoted_message>
<quoted_message role="assistant" time="2026-10-26T04:05:08.000Z" seq="13" message_id="…" session_id="…">
<metadata provider="deepseek" model="deepseek-chat">
</metadata>
It fails because the migration dropped the index.
</quoted_message>
</quoted_messages>

附件以引用方式记录,不复制文件内容;若历史 compaction 移除了原消息,图片像素可能不可用;文件仅在历史中仍保留保存路径时可读。

适用场景与注意

适合谁: 经常在 DSH Web 里基于整轮对话做追问、需要把 user/assistant/steering 与路由、skill、引用、附件一并交给模型的开发者;需要在多个本地 Session 之间传递同一段结构化上下文、又不想手工复制粘贴的场景。

实现与兼容: 宿主提供 insertQuote 时优先使用;较旧宿主回退为在光标处 insertText。多选列表通过标准 Session 属性读取 Chat 快照,不 scrape DOM。样式类名以 bq- 为前缀。

生态说明: DSH 采用「一切皆插件」的扩展方式;社区目录站点(如 SkillHub 上的条目)独立于 DeepSeek / 幻方,并非官方应用商店。仓库在 GitHub 上当前约 1 star,Issue 与更新以仓库为准。

安全与隐私: 插件声明不发起外网请求;仍建议在安装任意第三方插件前自行审阅源码与权限边界。

结尾

dsh-better-quotes 把「整句引用 + 元数据 bundle + 侧栏多选 + 本地 Session 转发」收进 Web 客户端的一条工作流里,减少片段引用丢失上下文的问题。目录页:SkillHub — SpellingDragon/dsh-better-quotes;源码与完整说明:GitHub — SpellingDragon/dsh-better-quotes。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye