DSH(DeepSeek Harness)采用插件化架构。在智能体开发或日常使用中,区分“引用的历史内容”与“用户当前的意图”是常见需求。dsh-quote 插件解决了这个问题,它是一个极简工具,允许用户在对话或侧边栏文件中选中文字,并将其作为“引用上下文”在发送下一条消息时自动注入,而不污染用户的输入正文。
核心功能¶
该插件主要实现以下逻辑:
-
选区捕获与触发
支持对话中任意文字块(assistant、自己或 tool 输出),以及侧边栏中打开文件的选段。触发方式为划选后松手,在选区上方弹出胶囊菜单,提供“复制文本”和“添加到对话”两个选项。 -
输入框交互
选择“添加到对话”后,引文以附件卡片形式渲染在输入框内(挂载点为conversation.input.overlay)。卡片显示引文的有界预览和来源行类型,并支持移除。卡片在用户发送消息后立即消失。 -
对话区展示
引文不会伪装成用户消息,而是通过插件私有的source.kind投递,并在对话区渲染为一条带标签的“引用上下文”折叠行。折叠时显示摘要,展开后查看全文。 -
文件与长文处理
支持从侧边栏文件中选段注入。卡片副标题显示文件名,注入时附带绝对路径。单条引文上限为 200000 字符,超出会拒绝并在输入框提示。长引文在输入框中仅显示有界预览。 -
技术实现
插件通过POST /claim提交声明,并使用quoteSummary、quotePreview、quoteFrame等函数对文本进行整形,确保模型输入的头部说明和正文结构清晰。
安装与启用¶
安装命令如下:
dsh plugin --profile <name> add <dsh-quote 本地路径或包名>
安装完成后需刷新浏览器。客户端代码支持热加载,但宿主代码改动需要重启 dsh web 进程。
典型用法¶
- 在对话中选中一段 assistant 或 tool 的输出,松手后点击菜单中的“添加到对话”。
- 卡片会出现在输入框中,确认无误后发送消息。发送后卡片消失,引文会作为“引用上下文”折叠行出现在对话记录中。
- 在右侧侧边栏打开文件,选中内容后添加到对话,卡片副标题会显示文件名,发送后引文会附带文件绝对路径出现在模型输入中。
注意事项¶
- 投递机制:引文只在下一条真正带用户文字的回合投递。如果 agent 卡在长工具循环中,引用会等待该回合开始。
- 宿主折叠:已知边界是引文行在回合结束后会被宿主收进“回合过程”折叠组,进行中可见,结束后需展开查看。
- 版本兼容:本插件面向
@deepseek-ai/dsh0.1.7-rc.2。 - 依赖约束:宿主自带的包只能是
peerDependencies,绝不能进入dependencies,否则会导致插件静默死掉。
总结¶
dsh-quote 提供了一种低侵入式的引用方式,通过 conversation.input.overlay 挂载点和私有 source.kind 区分引用内容与用户输入,适合需要频繁引用上下文但不想手动拼接文本的开发场景。更多细节与源码可参考其 GitHub 仓库。