前言¶
在 DeepSeek Harness(DSH)里和 Agent 协作时,经常要对某段回复或预览文档里的几句话单独发表意见。把整段复制到输入框再写注释,容易打乱上下文,也不利于一次说明多处修改点。社区插件 dsh-annotation(npm 包名 @fanfan4589/dsh-annotation)走另一条路:在对话正文或右侧栏可选中文本上直接弹出批注框,批注汇总成输入框上方的「N notes」卡片,再按需一次性发给 AI。
下面介绍插件定位、能力边界、安装方式与典型操作;事实以 GitHub 仓库 README 为准。
这是什么¶
dsh-annotation 是由维护者 feifandiv 发布的 客户端 类 DSH 插件。当前 npm 版本为 2.3.0,许可证 MIT,要求宿主 DSH >= 0.2.1-rc.1。
插件实现的是「行内批注」:选中 DeepSeek Harness 回复正文,或右侧栏里 Markdown / 纯文本 / 代码等预览中的文字,旁边出现批注输入框;确认后批注进入聚合卡片,可用快捷键把全部待发送批注作为一条用户消息交给 Agent。README 英文简介概括为:对回复与侧边栏文档做 inline annotation,在 composer 上方收集笔记并发送给 agent。
实现上为 纯客户端 bundle:index.js 的 apply() 为空,逻辑在 client.js;通过 DSH 的 additive slots(overlay、composer 上方卡片、右侧栏 tab、侧栏底栏入口等)挂载 UI,不替换内置界面。批注高亮使用 CSS Custom Highlight API,避免直接改动 React 持有的 DOM。
目录页:SkillHub — feifandiv/dsh-annotation。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
选文批注与快捷键¶
| 操作 | 效果 |
|---|---|
| 选中文字 | 选区旁出现批注框并聚焦 |
输入后 Enter |
确认批注,收入 composer 上方的「N notes」卡片 |
Cmd/Ctrl + Enter |
确认并立即把当前所有待发送批注发给 AI(可在批注框内,或没有任何输入聚焦时) |
Shift + Enter |
批注框内换行 |
批注框内无选中文本时 Cmd/Ctrl + C |
复制打开批注框时所选原文 |
Esc |
关闭批注框 |
| 点击「N notes」卡片 | 展开引用与笔记,可跳转或删除 |
| composer 里已有正文时发送 | 已输入文字与全部待发送批注合并为一条消息(附件保留) |
| 点击编号圆点 / 高亮文字 | 编辑或删除对应批注,编号与列表一致 |
| 侧栏底栏 → Annotations | 在右侧以原生 tab 打开批注列表(与对话并列,不遮挡聊天) |
发给 Agent 的消息格式¶
批注批量发送时,AI 收到结构化说明(语言随当前 DSH UI 语言),例如:
I annotated 2 specific places below. Please review and act on each one:
1. Quote: "…"
Location: conversation reply
Note: …
2. Quote: "…"
Location: `docs/report.md`
Note: …
可用表面与限制¶
| 表面 | 是否支持 |
|---|---|
| 对话中的助手回复(含展开的 reasoning) | 是 |
| 右侧栏 Markdown / 纯文本 / 代码预览 | 是 |
| 右侧栏 PDF、Word/PPT 转 PDF 的可选中文本层 | 是(文本可选时) |
| 右侧栏 Excel 预览 | 否(网格非文档文本) |
| 右侧栏 HTML / 网页预览 | 否(opaque-origin iframe,父页面无法读选区) |
| 图片、终端 | 否 |
上述限制来自宿主对各表面的渲染方式,非插件单独裁切。
设计与数据生命周期¶
- 高亮颜色单一,强调放在批注文字上;批注不会把大段文字贴进 composer,而是聚合在卡片里。
- 批注保存在浏览器
localStorage,键名dsh.annotation.v1(按浏览器配置隔离,同配置多窗口通过storage事件同步)。 - 列表展示当前会话的对话批注加上文档批注;删除的会话在启动或打开列表后会自动清理对话批注;归档会话的批注会保留直至手动「Clean up」。
- 文档批注在批量发送后约一秒清除;对话批注发送后需通过「Clean up → Clean sent annotations」清理。
- 插件不提供导出、复制合集或诊断等额外功能,只做批注与发送。
安装与启用¶
从 npm 安装(命令来自官方 README):
dsh plugin --profile <profile> add @fanfan4589/dsh-annotation
也可让 DSH Agent 通过 plugin_manager 的 install_bundle 安装 checkout,刷新页面一次后生效。卸载走 Plugin Manager;卸载后 localStorage 中的批注仍会保留。
安装前建议自行查看 源码与 LICENSE;客户端插件随当前 DSH 进程与页面环境运行,权限边界与浏览器配置一致。
典型用法¶
1、在助手回复里选中需要质疑或修改的句子,在弹出框里写简短说明,按 Enter 确认。可继续在其他位置选文添加批注。
2、需要让 Agent 一并处理时,在批注框或空闲焦点下按 Cmd/Ctrl + Enter,或在 composer 写好补充说明后正常发送;待发送批注会随同一条消息发出。
3、批注较多时,点击 composer 上方的「N notes」或侧栏底栏 Annotations,在右侧 tab 中展开列表,逐条跳转、编辑或删除。
4、在右侧栏打开项目里的 Markdown 或 PDF(可选中文本层),对具体段落批注;发送后文档侧批注会按 README 描述的生命周期清理,避免旧高亮干扰下一轮修改。
流程概览:
flowchart LR
A[Select text] --> B[Comment box appears]
B -->|Enter| C[Confirm + collect into the card]
C -->|Keep annotating| A
B -->|Cmd/Ctrl + Enter| D[Send all annotations to the AI]
适用场景与注意¶
适合需要在 DSH 里多点、原位向 Agent 反馈的场景:代码审查式对话、对照侧边栏文档改稿、对长回复分段提修改意见等。
应注意:
- 批注只存在于当前浏览器配置;换机或清站点数据会丢失。
- 扫描版 PDF(无可选文字层)无法批注。
- 修改
client.js后需刷新页面;第三方侧栏若在选区上叠放按钮,批注框会尝试避让,仍可能偶发遮挡。
已知宿主要求 dsh >= 0.2.1-rc.1;无额外 npm 运行时依赖(开发构建仅需 Node 内置模块)。
结尾¶
dsh-annotation 把「选中 → 旁注 → 聚合 → 一次发送」固化为 DSH 客户端内的标准动作,减少复制粘贴与遗漏上下文。进一步了解能力与快捷键表,见 GitHub README(含 中文版 README.zh.md);在生态目录中检索:SkillHub 插件页。