dsh-annotation:DSH Web 选中批注,回车随消息发送

前言

在 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.bundledsh.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:…(可悬浮芯片)

实际操作可概括为:

  1. 在助手回复中选中要讨论的文字,点「批注」,写下备注(可留空)。
  2. 继续对话、继续选中并批注,多条会累积在「批注 ×N」里。
  3. 在输入框写好问题,回车发送。
  4. 查看模型按 Annotation 1Annotation 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
羽毛球分组比赛记分
小程序二维码

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

小夜