dsh-quote-annotation: Submitting Conversation Excerpts and Annotations as Structured References to the Model

前言

在 DeepSeek Harness(DSH)里和模型长聊时,常见做法是复制某段历史回复、粘贴进输入框,或手写「请结合上面第 N 段」。引用会混进草稿,模型侧也缺少可回溯的节点信息。DSH 生态按「一切皆插件」扩展能力;社区插件目录在独立站点维护,与 DeepSeek / 幻方无官方从属关系。下面介绍维护者 stickyfinger7 的 dsh-quote-annotation:在 Chat 里选中文字、可选加注释,随下一条消息以结构化 reference context 交给 Host,而不改写编辑器、也不在界面里露出原始 JSON。

这是什么

dsh-quote-annotation 是面向 DSH Web 客户端的 Host + 浏览器模块插件(MIT,当前 package 版本 1.1.0)。它解决的是:从当前会话里引用一段对话原文(可附可选说明),在下一次用户发送时,由 Host 在 agent/pre-step 阶段追加隐藏的 context 消息;Chat 侧用 pill 与行内标记展示「发过什么引用」,便于预览和跳回来源。

分类上属于模型推理相关:引用内容进入模型上下文的方式由 Host 结构化注入,而不是把大段粘贴文本留在 composer 里。

核心功能

以下能力均来自插件 README 说明。

  • 选中 → 添加到对话:划选后出现小操作条,引用立即进入 pending 存储。
  • 可选注释:可随时添加或编辑;Enter 确认,Shift+Enter 换行。
  • 可见记录:composer 工具行显示待发送条数(中文 UI 为「N 条注释」,英文为「N quotes」);发送后用户消息上方保留 pill,点击可跳回来源。
  • 仅引用也可发送:composer 为空时发送按钮仍可用(Host 会去掉 invisible draft token,必要时回退为「(引用)」类占位)。
  • 助手回复中的行内标记:回合结束后,在提及引用的段落旁出现「注释 N」/「Note N」;悬停预览,点击跳回来源。
  • 重启后已发送记录可恢复:通过 Session log 与 GET /dsh-quote-annotation/sent 回填,Host 重启后 pill 与标记可重建;未发送的 pending 在 Host 内存中,重启会清空。
  • 不污染编辑器:不使用 Lexical chips、不在 prompt 里留隐藏字符或零宽字符。
  • 零依赖、无构建步骤:纯 ESM Host 插件 + 单个浏览器模块。
  • 界面文案随 DSH 语言:内置中英文;其他语言回退英文;在 Settings 切换语言后 pill、卡片、标记与 composer 可 live 更新。

工作流程概要:

selection ──► client ──► POST /dsh-quote-annotation/add
                              │
                              ▼
                       pending store (Host)
                              │
                    agent/pre-step (next user message)
                              │
                              ▼
        user message + hidden context message
        source.kind = "conversation-quote"

Host 在直接用户消息之后追加隐藏的 user/message;source.references 携带引用正文、可选注释及来源元数据(nodeKey、anchorKey、turn、kind 等)。Chat 不渲染普通 context 节点,因此不会出现 ## Quoted conversation references 这类原始块。

环境与要求

  • DSH 0.2.x,带 Web 客户端模块(DSH Desktop 或 dsh web),并包含 @deepseek-ai/dsh-client-locale 以支持语言切换。
  • 可修改的 profile(如 web、desktop 等)。
  • Host 侧 Node.js >=22.19.0。
  • README 记载在 DSH 0.2.1-rc.3(Web)上做过测试。

安装与启用

插件以当前 DSH 进程的权限运行;安装前应自行查看 GitHub 源码与 MIT 许可证,确认符合你的环境与安全策略。

从 GitHub 安装到 web profile:

dsh plugin --profile web add github:stickyfinger7/dsh-quote-annotation

固定某一 release:

dsh plugin --profile web add github:stickyfinger7/dsh-quote-annotation#v1.1.0

DSH Desktop 使用独立 profile:

dsh plugin --profile desktop add github:stickyfinger7/dsh-quote-annotation

安装后需 重启对应 profile 一次(Host 路由与 agent/pre-step 在 Host 启动时加载),并刷新已打开的页面。

若暂不想卸载,可在 profile 的 cordis.patch.yml 里对 quote-annotation 条目设置 disabled: true。

配置项

默认值在插件的 cordis.patch.yml,可在 profile patch 的 quote-annotation 下覆盖:

选项 默认值 含义
maxQuotes 8 每个 session 保留的 pending 引用上限
quoteMaxChars 8000 单段引用最大字符数
annotationMaxChars 4000 单条注释最大字符数
pendingTtlMs 86400000 pending 引用存活时间(毫秒)

典型用法

README 中的验证步骤可直接复现:

  1. 在 Chat 中选中文本 → 点击 添加到对话(英文 UI 为 Add to chat)。
  2. 可选填写注释;按 Enter 确认。
  3. composer 工具行应显示「N 条注释」,且发送按钮可用。
  4. 不在输入框里再打字,直接发送。
  5. 用户消息上方出现「N 条注释」pill;点击跳回来源。
  6. 助手回复完成后,正文中出现「注释 N」;悬停可预览引用。
  7. 确认 Chat 不会渲染 ## Quoted conversation references 标题块。

适用场景与注意

适合:需要在同一会话里反复指向 earlier turns 的原文、并给模型附带简短说明,同时希望输入框保持干净、引用带来源锚点的开发者或日常 DSH 用户。

局限与兼容(README 原文要点):

  • Pending 引用仅存 Host 内存;已发送记录依赖 Session log 回填。
  • Sent pill 与行内标记依赖 Chat DOM 选择器;DSH Chat DOM 变更时可能需要插件更新选择器。
  • 行内标记按段落启发式放置;若助手 paraphrase 而非复述引用,标记可能落在回复末尾。
  • 无原生 Lexical chip,这是「不修改编辑器」的设计取舍。
  • UI 文案仅中英文完整覆盖;Host 侧文案可能因标签页语言状态短暂不一致。

插件有意不依赖 conversation.draftContexts、原生 Lexical chips 或 reference pipeline,便于在现有 DSH 0.2.x Web 栈上独立运行。

结尾

dsh-quote-annotation 把「选段 + 可选注释」变成下一条消息背后的结构化会话引用,并在 UI 上用 pill 与行内标记保留可读、可跳转的记录。目录与说明见社区插件页 stickyfinger7/dsh-quote-annotation,源码与完整文档见 GitHub 仓库。

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

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

Xiaoye