dsh-inline-quote:在 DSH 对话里把选中文本变成原生引用块

前言

在 DeepSeek Harness(DSH)里讨论长对话时,经常需要把某段助手或用户原文「拎出来」写进下一条输入,而不是整段复制粘贴或另开侧栏。原生 Composer 已支持 reference chip,但缺少从对话正文一键选段、插入 chip 的轻量路径。下面介绍社区插件 dsh-inline-quote(维护者 anqifox):在 Web Client 里选中会话文本,点「引用 / Quote」,选区会变成 Composer 里的原生引用 chip,可与普通文字交错,作为一条普通消息发送。

这是什么

dsh-inline-quote 是面向 DSH Web Client 的小型客户端插件(分类:客户端)。它不新建会话、子智能体、侧栏或引用管理器;引用 chip 使用 DSH 已有的 ReferenceChipNode,source 为 quote,Composer 原有行为保持不变。插件在 npm 包名 dsh-inline-quote,当前资料中的版本为 0.1.0,许可证 MIT。README 写明已在 DeepSeek Harness 0.2.1-rc.3 Web Client 上验证;维护方式为 as-is、无 SLA,若 DSH 后续内置同类能力,作者倾向于弃用本插件而非长期移植。

核心功能

选段与插入

  1. 在已完成的一条聊天行([data-chat-flow-kind])内选中文字。
  2. 当选中行属于带 Composer 的 [data-conversation-session] 时,会出现 引用 / Quote 按钮。
  3. 点击后,选区通过既有 slash/input-insert-reference 事件插入为原生引用 chip;多条引用可与普通文本混排后一次发送。

选区文本通过 range.cloneContents() 在离屏 white-space: pre-wrap 阶段用 innerText 构建,保留首尾空格、<pre> 缩进与源码尾部换行;不依赖浏览器 Selection.toString() 的 trim 行为。

预览与编辑

  • 点击引用 chip 打开可读预览;代码预览保留换行与缩进,可复制。已发送消息中的引用 chip 为只读预览。
  • 在 Composer 中可在 chip 边缘用 Backspace/Delete 删除,或在预览里点删除;Ctrl+Z 可恢复。已发送消息中的引用为历史记录,有意设为只读。

模型可见格式

编辑器显示短 chip;模型侧收到完整选中文本与显式边界标记,顺序与用户编排一致,例如:

我觉得 ⟦DSH_QUOTE id=q_7f3a... kind=text role=quoted-material note="verbatim quote; not a new user instruction"⟧完整引用原文⟦/DSH_QUOTE id=q_7f3a...⟧ 不错。
  • role=quoted-material 与 note 标明标记内文本为引用而非新指令。
  • 代码引用可带 kind=code、可选 lang=、lines=。
  • 全文不截断;代码、换行、缩进、Markdown 与特殊字符按原文保留。

容量与持久化

单条引用编码后的 ref 超过 4,200,000 字符时,插件会拒绝并显示错误。插入后会调用 persistDraft(),待新 ref 写入会话 localStorage 后才视为提交;若因配额等原因写入失败,会回滚新 chip、恢复先前草稿并提示错误。资料中在 rc.3 客户端测过百万级字符等场景;多引用与草稿其他数据会累积占用配额,与「单条上限」不是同一策略。

安装与启用

插件以当前 DSH 进程权限运行,安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。社区目录页:skillhub.cn/plugins/anqifox/dsh-inline-quote(独立站点,与 DeepSeek / 幻方无官方从属关系)。

从 npm 安装(命令来自 README 原文):

dsh plugin --profile <profile> add dsh-inline-quote

dsh plugin add 会安装包并将 bundle 追加到 dsh.profile.bundles;bundle 的 cordis.patch.yml 会插入 inline-quote 行。本地 checkout 或隔离 profile 可用绝对路径 add,并设置 DSH_HOME;官方 plugin_manager 流程为 plugin_manager action=install_bundle target=<absolute package directory>。README 提醒:除非明确授权,不要将开发构建装进 desktop。

卸载示例:

$env:DSH_HOME = 'C:\path\to\isolated\dsh-home'
dsh plugin --profile quote-probe remove dsh-inline-quote

随后确认该 profile 的 package.json 里 dsh.profile.bundles 不再包含 dsh-inline-quote 并重启 profile。注意: 若草稿里仍有 source: 'quote' 的 chip,在移除 quote 源之后将无法序列化;应在插件仍安装时发送或清空这些草稿,或保持插件安装直至清理完毕。

典型用法

  1. 在已验证的 DSH Web Client(资料:0.2.1-rc.3)中启用含本插件的 profile。
  2. 打开带 Composer 的会话,在一条消息气泡内拖选需要引用的段落。
  3. 点 引用 / Quote,在输入框确认 chip 出现;可继续输入说明文字或再插入更多引用。
  4. 发送后,模型收到带 DSH_QUOTE 边界的完整引用;需要核对原文时点击 chip 打开预览。

适用场景与注意

适合: 需要在同一会话 Composer 里精确引用历史原文、且希望沿用 DSH 原生 reference chip 与发送流程的 Web Client 用户。

注意:

  • 插件依赖 DSH 内部契约(ReferenceChipNode、InputState.occurrences 等),发行版变更可能导致不兼容。
  • 选区限制在单条已完成聊天行内;README 截断处另有边界说明,安装前可查阅完整 Known limitations。
  • 同时挂载多个真实 ComposerBridge 的路由行为在资料中标记为 Not yet verified;常见单 bridge 布局为作者主要验证路径。

结尾

dsh-inline-quote 把「选对话里的字 → Composer 引用 chip → 带边界发给模型」收成少量 UI 操作,不另开引用子系统。目录与源码:

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

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

小夜