前言¶
在 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 中但会变暗,批注内容不会以长文形式出现在对话流里。
- 目录页:skillhub.cn/plugins/YubaiLoving/dsh-context-annotations
- 源码与说明:github.com/YubaiLoving/dsh-context-annotations
核心功能¶
选中文本并写注释¶
在对话任意位置选中文字(模型回复、工具卡片、自己的消息等),选区旁会出现浮动 注释 按钮。点击后输入注释,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 侧负责存储与投递。
- 浏览器将完整批注 POST 到
/api/dsh-context-annotations(经ctx.connection.fetch注册,在 carrier 信任边界内),不写入草稿。 - Host 按 Session 保存批注,监听
agent/pre-step。当本轮包含source.kind === "user"的消息时,在不改变用户消息原文的前提下,追加一条仅含标记(如💬 N 条注释)的额外消息;注释正文由ctx.systemPrompt.section()注入 prompt,并在日志中以隐藏的system/message节点记录。 - 批注只绑定被 pre-step 认领的那一轮;该轮
turn/end后从 prompt 中退役。若模型仍在回答时写了注释,批注会保持 pending,等待你的下一条消息,而不会随当前轮消失。 - 当前版本不读取任何配置项;折叠后的列表不带插件标记行,读起来像用户自己的编号笔记。
主要文件: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 / 幻方无官方从属关系,仅作发现与索引。
典型用法¶
- 安装并启用插件后,在 Web GUI 打开一场会话。
- 在需要指明的段落上拖选文字,点 注释,输入说明后 Enter 保存;可重复多条。
- 在 composer 输入本轮要问模型的话(也可留空仅用条带发送),正常发送;对话中出现
💬 N 条注释,模型在当轮 system 段中收到全部「所选文本 + 注释」。 - 发送后检查标记是否变暗、条带是否收起;若需改批注,在发送前通过条带或左侧标记编辑。
适用场景与限制¶
适合:对长回复中的某几段分别加注、希望用户消息保持简洁、又要把引用与说明一次性交给模型的场景;与 DSH「一切皆插件」的扩展方式一致,不改动其他插件的 DOM(仅依赖会话 shell 文档化的 data-* 选器与本插件选区逻辑)。
需注意:
- 标记基于会话扁平文本的字符偏移校验;上方内容变化后会对原文做空白不敏感搜索并按出现次序消歧,无 DOM 路径回退。段落被重渲染且措辞变化时,侧边标记可能丢失,但注释仍在条带中并可发送。
- 批注保存在 Host 内存(按 Session);Host 重启会丢失尚未被浏览器接管的 pending 批注。
- 插件在 当前 dsh 进程权限下运行;安装前请自行审阅源码与 MIT 许可证,勿在未信任的环境盲目安装 bundle。
结尾¶
dsh-context-annotations 把「圈选 + 批注 + 单轮随送」收进一条短标记与 system prompt 段,减轻在 composer 里堆引用说明的负担。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。