dsh-selection-chat:在 DSH 里选中文字加入对话、侧边提问与评论

前言

在 DeepSeek Harness(DSH)里和模型协作时,经常要把右侧预览里的代码、文档段落,或聊天记录里某条回复,贴进当前输入框。手动复制粘贴容易丢路径和行号,也不容易区分「文件引用」和「会话记录」。DSH 生态按「一切皆插件」扩展能力;社区插件目录在 SkillHub,与 DeepSeek / 幻方无官方从属关系。

下面介绍维护者 xywen97 的客户端插件 dsh-selection-chat:在 Web GUI 里拖选文字后浮出操作条,把片段写入输入框草稿,不会自动发送。

这是什么

dsh-selection-chat 是面向 DSH 桌面 Web 客户端的插件(分类:客户端)。在右侧栏文件预览正文或聊天记录里选中一段文字,旁边会出现 加入对话 | 侧边提问 | 评论,动作结果只追加到草稿。

与在输入框里自己粘贴相比,插件会按来源生成结构化引用(代码预览带 文件路径:行号,Markdown/纯文本预览只带路径,聊天记录标注为 会话记录)。

核心功能

选中文字后的流程可以概括为:

选中代码/文档 ──▶ [ 加入对话 | 侧边提问 | 评论 ] ──▶ 写进输入框草稿(不自动发送)

三个动作含义如下(资料中对标 Codex / Claude Code 的类似交互):

  1. 加入对话:把 文件路径:行号(或路径/会话记录)与引用正文追加到当前主对话草稿。
  2. 侧边提问:打开侧边聊天,并把片段写入侧边输入框草稿;需同时安装同作者的 @xywen97/dsh-sidechat,未安装时点击会提示先装。
  3. 评论:弹出小输入框,确认后把「引用 + 评论」追加到草稿。

有意不触发浮条的区域:预览 tab 条、路径头部、输入框内草稿、应用自带按钮和标题——避免引用正在编辑的内容或 UI chrome。

写入目标:侧边聊天面板打开时,浮条仍写入主对话草稿,不会占用侧边面板输入框。

失败兜底:会话提交中草稿被锁、或拿不到宿主 inputActions 时,会重试一次;仍失败则复制到剪贴板并提示,不静默丢弃。

插件依赖宿主槽位 conversation.input.dock 提供的 captureInsertion 与 insertText,不调用 submit。

安装与启用

已发布到 npm:dsh-selection-chat@0.1.0。宿主要求(见 package.json):Node >=20,DSH >=0.2.1-rc.5 <0.3.0-0。

一条命令安装(npm 或 git 二选一):

# npm(推荐)
dsh plugin --profile desktop add dsh-selection-chat

# 或直接钉 Git 提交(未发布 npm 时可用)
dsh plugin --profile desktop add "git+https://github.com/xywen97/dsh-selection-chat.git"

也可在桌面版 设置 → 插件 → 安装,spec 填 dsh-selection-chat。装完后几秒内热加载生效,必要时 Cmd/Ctrl + R 刷新窗口。

若要用 侧边提问,需额外安装:

dsh plugin --profile desktop add @xywen97/dsh-sidechat

未装 @xywen97/dsh-sidechat 时仍可使用「加入对话」和「评论」。

安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。客户端插件在浏览器侧运行,行为与当前 DSH 进程及页面权限一致,请自行评估是否适合你的环境。

典型用法

  1. 在聊天记录里拖选文字,或在右侧栏预览正文里拖选(可通过 @文件 引用芯片或右侧 Files 打开预览)。
  2. 松手后浮条出现,选择 加入对话 | 侧边提问 | 评论。
  3. 点 加入对话 后,草稿末尾出现引用块,并 toast 提示「已加入输入框草稿(未发送)」。
  4. 点 评论 后输入内容,用 ⌘/Ctrl + Enter 或 插入评论 写入草稿。
  5. Esc 或点击空白处收起浮层。

代码预览引用示例(行号来自 Shiki 的 pre > code > span.line):

引用 /private/tmp/dsh-test/ws/demo.py:4-6
> def add(a, b):
>     """Return the sum of two numbers."""
>     return a + b

评论示例:

评论 /private/tmp/dsh-test/ws/demo.md
> 第二项:给选中的一段话写评论
我的评论:这条可以合并进上一条

拖选时首尾空行会自动去掉,行号相应内收。Markdown / 纯文本预览只给路径,不给行号。

适用场景与注意

适合:经常在 DSH 里对照右侧预览或历史消息写 prompt、需要带路径/行号或「会话记录」标注的开发者。

限制(README 已说明):

  • 只处理右侧栏预览中的可选中文本;PDF / Office / 表格等预览没有文本锚点,不处理。
  • 评论写入聊天草稿,不是钉在文件上的持久批注。
  • 行号依赖 Shiki 行结构;宿主换渲染器时可能降级为仅路径。
  • 极端窄窗口下浮条位置可能遮挡内容。

插件卸载或热重载时会移除 DOM 监听、样式与浮层;宿主改动 [data-slot="sidebar.right.tab.document"] 等契约标记时可能静默降级(路径/行号缺失或改走剪贴板)。

结尾

dsh-selection-chat 把「选中 → 引用进草稿」做成固定交互,并明确不自动发送,适合作为 DSH 桌面工作流里的客户端小插件。

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

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

小夜