dsh-context-annotations:在 DSH 对话里圈选文本、批注后随下一条消息一并发送

前言

在 DSH(DeepSeek Harness)里和模型长对话时,经常需要对某段回复、工具卡片或自己先前的话加一句「这里指的是什么」「请按这个约束改」——若把这些说明直接写进输入框,既挤占可见消息,也容易和正文混在一起。常见做法是复制引用再粘贴到 composer,或把要点塞进 system 提示,但前者繁琐,后者往往和「这一轮要指明的具体段落」对不齐。

下面介绍社区插件 dsh-context-annotations(维护者 YubaiLoving):在 Web GUI 里对对话任意位置选中文本、挂上注释,把整批注释只随下一轮用户消息发给模型;界面上只出现一条短标记,完整批注通过 system prompt 段进入请求。插件归类为「记忆」,仓库采用 MIT 许可证,要求 DSH >=0.1.7-rc.2。

这是什么

dsh-context-annotations 是 DSH 的 Web GUI 插件:在会话中选中文本 → 写注释 → 收集多条 → 与下一条用户消息(或仅注释)一起发送;该批注释只参与一轮请求,发送后标记留在 transcript 中但会变暗,批注内容不会以长文形式出现在对话流里。

核心功能

选中文本并写注释

在对话任意位置选中文字(模型回复、工具卡片、自己的消息等),选区旁会出现浮动 注释 按钮。点击后输入注释,Enter 保存,Shift+Enter 换行,Escape 取消。

收集与编辑待发送批注

每条已保存注释在对应段落左侧显示编号标记;悬停标记可查看该条注释。输入区上方出现 N 条注释 条带,点击可打开待发送列表,查看引用的原文与注释,并支持编辑、删除。点击左侧标记也可打开该条编辑器(含删除)。

与下一条消息一并发送

发送用户消息时,对话里只会多一条短气泡,例如 💬 2 条注释;悬停该气泡可看到本批引用的段落与各条注释摘要。注释正文不会出现在可见消息里;模型侧通过 system prompt 一节收到完整列表,格式类似:

1. 所选文本:
<the selected passage>
注释:<your note>

2. 所选文本:
<the selected passage>
注释:<your note>

批注发送后即被消费:浏览器与 Host 同步后条带收起,标记保留但变暗;后续轮次不会继承上一批。

仅发送注释

若 composer 为空,可通过条带上的发送按钮单独发起一轮:等价于一条空用户消息加上注释标记,注释仍通过 system prompt 进入该轮请求。

工作原理(简要)

浏览器侧负责选区、编辑 UI 与条带;Host 侧负责存储与投递。

  1. 浏览器将完整批注 POST 到 /api/dsh-context-annotations(经 ctx.connection.fetch 注册,在 carrier 信任边界内),不写入草稿。
  2. Host 按 Session 保存批注,监听 agent/pre-step。当本轮包含 source.kind === "user" 的消息时,在不改变用户消息原文的前提下,追加一条仅含标记(如 💬 N 条注释)的额外消息;注释正文由 ctx.systemPrompt.section() 注入 prompt,并在日志中以隐藏的 system/message 节点记录。
  3. 批注只绑定被 pre-step 认领的那一轮;该轮 turn/end 后从 prompt 中退役。若模型仍在回答时写了注释,批注会保持 pending,等待你的下一条消息,而不会随当前轮消失。
  4. 当前版本不读取任何配置项;折叠后的列表不带插件标记行,读起来像用户自己的编号笔记。

主要文件:lib/index.js(Host:批注存储、API、pre-step 折叠)、lib/client.js(浏览器:选区按钮、标记、条带与面板)。

安装与启用

从 GitHub 仓库安装(命令来自仓库 README):

plugin_manager install_bundle  target="github:YubaiLoving/dsh-context-annotations"

若已在本地拥有该目录,也可:

plugin_manager install_bundle  (target: this directory)

安装前请确认本机 DSH 版本满足 >=0.1.7-rc.2(见 package.json 中 dsh.engines)。插件通过 cordis.patch.yml 写入 profile,属于 DSH 生态中的 bundle 安装方式;社区目录站点 SkillHub 与 DeepSeek / 幻方无官方从属关系,仅作发现与索引。

典型用法

  1. 安装并启用插件后,在 Web GUI 打开一场会话。
  2. 在需要指明的段落上拖选文字,点 注释,输入说明后 Enter 保存;可重复多条。
  3. 在 composer 输入本轮要问模型的话(也可留空仅用条带发送),正常发送;对话中出现 💬 N 条注释,模型在当轮 system 段中收到全部「所选文本 + 注释」。
  4. 发送后检查标记是否变暗、条带是否收起;若需改批注,在发送前通过条带或左侧标记编辑。

适用场景与限制

适合:对长回复中的某几段分别加注、希望用户消息保持简洁、又要把引用与说明一次性交给模型的场景;与 DSH「一切皆插件」的扩展方式一致,不改动其他插件的 DOM(仅依赖会话 shell 文档化的 data-* 选器与本插件选区逻辑)。

需注意:

  • 标记基于会话扁平文本的字符偏移校验;上方内容变化后会对原文做空白不敏感搜索并按出现次序消歧,无 DOM 路径回退。段落被重渲染且措辞变化时,侧边标记可能丢失,但注释仍在条带中并可发送。
  • 批注保存在 Host 内存(按 Session);Host 重启会丢失尚未被浏览器接管的 pending 批注。
  • 插件在 当前 dsh 进程权限下运行;安装前请自行审阅源码与 MIT 许可证,勿在未信任的环境盲目安装 bundle。

结尾

dsh-context-annotations 把「圈选 + 批注 + 单轮随送」收进一条短标记与 system prompt 段,减轻在 composer 里堆引用说明的负担。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。

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

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

Xiaoye