dsh-inline-comment:在 DSH Web 会话里选中即批注

前言

在 DSH Web 里和模型来回改需求时,经常有”指某句话有问题”的时刻。现有的做法通常是复制一段引文粘进输入框,手动加 > 前缀,再敲几句说明。引文一旦改错行、少了前缀,模型读不到上下文;等会话变长,想回指某条早期消息也只能靠整段复制。

下面介绍的插件就是把这件事流程化:选中文本、写一句批注,它会作为一枚 chip 附着在输入框里,随下一条消息一起发出,模型收到的是规范化的引文块,用户界面上看到的仍是紧凑的胶囊。

这是什么

dsh-inline-comment 是一个 DSH Web 客户端插件,由 proto-commons 维护,用于在会话里按选区创建批注。它只存在于客户端,没有 Host 侧的 service、tool 或 prompt,不改变 session 格式。

它解决的问题是:把”引用某句话 + 说明为什么改”从手工粘贴变成一次选区动作,并保证发出去的文本结构稳定、界面上不散落大段引文。

安装与启用

只面向已有 DSH profile(带 Web client)的环境。安装命令来自 README:

plugin_manager install_bundle
  target: /path/to/dsh-inline-comment

target 指向本地 checkout 的绝对路径,例如 ~/protocom/dsh-inline-comment。安装后需要重载 Web 窗口;只有在客户端 bundle revision 没有刷新时才需要完整重启 DSH。

使用流程

  1. 在会话任意文本上拖选(消息、回复、工具输出都可以),松开后在选区旁出现 Annotate 胶囊。
  2. 点击胶囊,在卡片里写批注,按 Enter(或 ⌘/Ctrl+Enter)提交。引文被固定在卡片中,消息发送后 chip 保留;Shift+Enter 换行,Esc 取消。
  3. chip 追加在输入框末尾,光标跟在其后;Backspace 会整枚删除。悬停或点击 chip 可以回看引文与批注。
  4. 发送后,模型收到的文本是:
> the selected sentence (up to 320 characters)
>
> Annotation: why it needs to change

配置项

设置 默认值 位置
提交快捷键 Enter 提交,Shift+Enter 换行 Settings → General → Comment shortcut
备选方案 ⌘/Ctrl+Enter 提交,Enter 换行 同一行
引文上限 320 字符 MAX_QUOTE in client.js
批注上限 4000 字符 MAX_COMMENT in client.js

快捷键偏好存在浏览器 localStorage["dsh.inline-comment.submit-mode"](enter 或 mod),切换后立即生效。

实现方式

插件在客户端的几个扩展点上挂载:

界面元素 扩展点
浮动胶囊、编辑卡片、预览卡片 shell.overlay
Composer 桥接(inputActions、useInput) conversation.input.overlay
真实的引用 chip session 级 slash/input-insert-reference + inputTriggers source
已发送消息上的 chip uiConversation.userText rule + conversation.user.text.node
快捷键行 settings.general.item

批注追加到草稿末尾的流程是:先算出草稿末尾的 detect offset(引用 chip 记一个字符,命令 chip 按 claim.token),再走 @file 选择器同款的引用 chip 路径插入。chip 的 ref 里以 base64url JSON 存引文和批注,因此草稿能被保存、预览并在重载后恢复。发送时插件的序列化器把 chip 展开成引文块,渲染时由 user-text rule 重新识别为胶囊。

项目结构上,client.js 承担 UI、chip 来源、已发送消息规则和设置行;index.js 是 Host 侧空操作;cordis.patch.yml 是 bundle 插入行。因为 profile 以链接方式安装该目录,改 client.js 没有构建步骤,编辑后用 node --check client.js 检查语法,再重载 Web 窗口即可;若修改不生效,重启 DSH 以重建客户端 bundle。README 里的预览图是设计稿(设计 mock),不是实际会话截图,实际渲染跟随宿主主题。

适用场景与注意

适合在 DSH Web 长会话中需要频繁指出具体句子问题、希望批注跟着消息走而不污染气泡的开发者。插件是纯客户端实现,不依赖额外运行时,界面文案随客户端 locale 在 zh / en 之间切换,零配置。

需要留意几点:插件基于随 0.2.1-rc.5 附带的 DSH 桌面客户端构建,仅在客户端生效;chip 复用 composer 的 reference-chip 外壳(appearance: file),并用 scoped CSS 规则隐藏文件图标,若宿主改了该 DOM,chip 会退回文件图标,功能仍可用。已发送消息的识别是文本级别的:任何手写的 > quote + > 批注:… 块都会被渲染成 chip,这是有意为之,和 @file 提及的识别方式一致。另一个限制是:如果草稿里还带着批注 chip 就卸载插件,那份草稿会发不出去,需要先删掉 chip。引文在进入 chip 前截断到 320 字符,批注截断到 4000 字符。

插件运行时使用当前 DSH 进程的权限,安装前建议先检查 client.js、index.js、cordis.patch.yml 等源码与 MIT 许可证。它是社区目录中的第三方插件,与 DeepSeek / 幻方无官方从属关系。

小结

dsh-inline-comment 把会话里的引用批注压缩成一次选区动作,chip 在输入框、已发送消息和悬停预览三处保持一致,模型侧拿到的仍是可读的引文块。目录页在 https://www.skillhub.cn/plugins/proto-commons/dsh-inline-comment ,源码在 https://github.com/proto-commons/dsh-inline-comment 。

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

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

小夜