前言¶
在 DSH Web 里和模型对话,常见做法是复制助手回复里某段文字,贴到输入框再写问题。多段引用时,消息会越堆越长,气泡里也很难区分「原文」和「你的追问」。
dsh-annotation 是 omdsh-dev 维护的 DSH 客户端插件(GitHub 约 95 stars)。它在浏览器端实现「选中 → 批注 → 回车发送」:批注块随消息发给模型,但你的气泡里只显示问题和「批注 ×N」标签,模型回复按 Annotation N 逐条对照。插件以官方 bundle 形态发布,不改 DSH 核心文件。
这是什么¶
dsh-annotation 是 DSH Web 的选中批注插件,维护者为 omdsh-dev,分类为客户端插件,许可证 MIT。
形态上是官方 bundle 插件:package.json 里声明 dsh.bundle 与 dsh.client,经 client-modules 把 client.js 注入浏览器;Node 侧为空实现。cordis.patch.yml 仅插入自身 id 一次,profile patch 保持 [],不修改 DSH 本体。
核心功能¶
下面按交互顺序介绍已核实的能力。
选中即批注¶
在助手回复里选中任意文字,工具条点「批注」,写下批注内容(可留空,仅标记原文)。点选外部或按 Esc 收起。原文位置会出现蓝色编号脚标和高亮,视口内锚定并做碰撞避让,滚出屏幕也不丢失。
跨回合收集¶
批注可跨消息、跨回合累积,编号从 1 开始递增。输入框旁出现「批注 ×N」标签,悬浮可查看全部批注,也可逐条删除。
回车随消息发送¶
直接回车,批注块与输入框里的问题一并发给模型。模型收到完整批注协议块;你的气泡里不出现批注块文本,只显示问题和「批注 ×N」标签。发送瞬间在浏览器绘制前从 DOM 隐藏批注块,实现零闪烁;刷新后历史消息会自动修复显示。
回复逐条对照¶
插件向消息注入格式指令,引导模型按 Annotation 1:… 至 Annotation N:… 逐条回应。回复里的 Annotation N: 会渲染为可悬浮芯片,hover 可查看对应原文与批注内容。UI 文案与批注协议块跟随 DSH locale 服务(zh/en)实时切换。
安装与启用¶
安装走官方 bundle 路径,任选其一:
# npm 公开包(无需 npm 账号)
dsh plugin --profile web add @changfenhuang/dsh-annotation
# 从 GitHub 公开源码安装
dsh plugin --profile web add git+https://github.com/omdsh-dev/dsh-annotation.git
# 本地路径(开发调试)
cd /path/to/dsh-annotation
dsh plugin --profile web add .
仅作 Node 依赖、不注册到 DSH 时:
npm install @changfenhuang/dsh-annotation
npm install 不会把插件注册进 DSH,在 DSH 中使用时仍需执行 dsh plugin add。
若在 v1.4.2 之前装过旧包名,先迁移:
dsh plugin --profile web remove @omdsh-dev/dsh-annotation
dsh plugin --profile web add @changfenhuang/dsh-annotation
安装后按平台重启 web 服务。Linux/WSL 下常见命令:
systemctl --user restart dsh-web
部分容器环境无需重启,client.js 按请求 no-cache 提供,硬刷新(Ctrl+Shift+R)即可。
自检是否生效:
dsh --profile web --dump-config | rg "id: dsh-annotation" # 必须恰好 1 行
curl -s -o /dev/null -w '%{http_code}\n' "http://127.0.0.1:3080/plugins/@changfenhuang/dsh-annotation/client.js" # 200
注意:只做 dsh plugin add,不要在 profile 或 home 的 cordis.patch.yml 里重复 insert 同 id。
典型用法¶
交互流如下:
选中助手文字 ──▶ 工具条「批注」──▶ 写批注/留空保存 ──▶ 原文亮蓝编号+高亮
▲ │
└────────────── 任意多条、跨回合累积 ◀────────────────┘
│
▼
输入框旁「批注 ×N」标签(hover 看内容/删除)
│
回车发送
▼
模型收到:批注块(编号+原文+批注)+ 你的问题
你的气泡:只显示问题 +「批注 ×N」标签
模型回复:Annotation 1:… Annotation 2:…(可悬浮芯片)
实际操作可概括为:
- 在助手回复中选中要讨论的文字,点「批注」,写下备注(可留空)。
- 继续对话、继续选中并批注,多条会累积在「批注 ×N」里。
- 在输入框写好问题,回车发送。
- 查看模型按
Annotation 1、Annotation 2等编号逐条回复;hover 芯片可对照原文与批注。
中文环境下,发给模型的批注块格式类似:
我批注了以下 N 处内容…
1. 原文
批注:…
请用「Annotation 1:…」…
提问:
适用场景与注意¶
适合需要在 DSH Web 里对助手长回复做分段追问、又不想把大段引用塞进气泡的场景。纯浏览器端实现,不依赖 Node 侧逻辑;与 dsh-focus-chat 聚焦会话视图兼容。
安装前请注意:
- 插件以当前
dsh进程权限运行,安装前应自行检查 GitHub 源码 与 MIT 许可证。 - 当前 npm 包名为
@changfenhuang/dsh-annotation(v1.4.2),与 GitHub 仓库omdsh-dev/dsh-annotation对应;旧名@omdsh-dev/dsh-annotation已弃用。 - 需要 Node >= 20,peer 依赖 cordis ^4.0.0-rc.7 或 ^4.0.1。
DSH 生态主张「一切皆插件」;社区目录 SkillHub 是独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-annotation 把「选中批注 → 随消息发送 → 编号对照回复」做成一条完整链路,气泡侧隐藏批注块、回复侧悬浮芯片,改动集中在 bundle 插件内。可在目录页查看条目,或到 GitHub 阅读完整文档与架构说明。
- 目录页:https://www.skillhub.cn/plugins/omdsh-dev/dsh-annotation
- GitHub:https://github.com/omdsh-dev/dsh-annotation