DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

wanruxi /

wanruxi/dsh-selection-followup

Verified

Select text in a DeepSeek Harness conversation and quote it into the composer for a follow-up question.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@8f8d67ce

dsh-selection-followup · 选中追问

在 DeepSeek Harness 的对话里选中一段文字,旁边会浮出一个小「追问」按钮。 点一下,选中的内容就变成输入框里一枚引用卡片,接着问就行。

dsh-selection-followup 图标

它解决什么问题

看长回答时想追问某一段,通常得先复制,再切到输入框粘贴,再手动加 > 变成引用, 或者干脆把原文再打一遍。这个插件把这三步合成一步:选好、点一下,引用就位。

引用在输入框里是一枚卡片(和 @ 引用文件用的是同一种节点),一眼能看出引了哪段; 发送时它会被还原成 Markdown 引用块交给模型,模型看到的仍是原文。

行为

  • 只在非空选区出现。输入框内部、以及按钮自己的选区都会跳过,所以在输入框里打字 不会误触发。
  • 按钮跟着指针走:鼠标松开处右下方弹出;键盘选区(Shift+方向键 之类)则落在选区 上方。靠近窗口边缘会翻到另一侧,贴边收拢用的是按钮实测尺寸,中文「追问」和英文 「Quoted」宽度不同也不会被切掉。
  • 引用成功后按钮原地变成一句「已引用」回执,停留 0.9 秒。这个回执不接收鼠标事件, 不会挡住你下一次点击。
  • 选区滚出可视范围就不再出现按钮——不会把按钮钉在屏幕边缘,让你去引用一段自己 已经看不见的字。
  • Ctrl+Shift+Q 不用鼠标也能引用当前选区。所有平台都只认 Ctrl:Cmd+Shift+Q 在 macOS 上是「注销」。
  • Esc 收起按钮。
  • 引用以一枚引用卡片插到光标处(ReferenceChipNode,与 @ 文件引用同一种)。插入 走 inputTriggers 的 INSERT REFERENCE 事件;草稿版本在中间变过会重取一次再插。
  • 宿主没有提供 chip 通道时(老版本、或该会话拿不到触发器),自动退回纯文本引用块, 不会让你点了没反应。
  • 插件自己注册了引用源的 codec,发送时把这枚卡片还原成 > … 引用块。这一步不能省: 注册了源却没有 codec,任何带这枚卡片的发送都会被拒。
  • 卡片插到已有文字后面时,会先补一个空行——Markdown 的懒续行会把紧贴的 > 吞进上 一段落。
  • 插入进行中再点一次或再按快捷键,会被直接拒掉,不会插出两条重复引用。
  • 引用前先规整选区:统一换行、去掉行尾空格、合并多余空行。
  • 在别的会话(侧边对话)里选的文字,不会被引到这个会话的输入框。
  • 超过 8000 字符会被截断并加省略号,悬停提示会说明,而不是悄悄截断。
  • 点击前不让焦点跑掉(mousedown 被 preventDefault),选区不会提前消失。

和相近插件的区别

目前有几个 Harness 插件都能把选区引用进输入框,路线分三类:

本插件 输入框外的注释 monkey-patch 发送
引用放在哪 输入框里的引用卡片 输入框上方独立列表 你看不见,发送时才拼上
能不能改 能,删卡片就是取消引用 能在列表里逐条删 不能
依赖宿主私有字段 只用公开的 inputTriggers 需要 draftContexts 服务 改 sinkSerialized 等内部方法

本插件走第一条:用宿主公开的引用卡片通道,发送前由自己注册的 codec 还原成 Markdown。 代价是要多注册一个引用源(名字不能和别人撞),换来的是引用在输入框里可见、可删, 且不依赖任何私有字段名。

测试

纯函数有离线测试,不用开浏览器:

npm test      # node --test test/helpers.test.mjs
npm run check # 两半都做语法检查

覆盖引用格式、空白规整、按钮贴边收拢、离屏判定、会话隔离、插入重试与失败回退, 以及引用卡片那条线:codec 往返、卡片插入的 outcome、退化成纯文本的路径。 界面效果本身仍需人工看一遍。

安装

在要启用它的 Harness profile 里:

dsh plugin --profile <profile> add dsh-selection-followup

也可以把本仓库目录直接作为 bundle 装进插件管理器。浏览器半边立即生效,刷新页面即可, 不用重启。

兼容性

dsh.client.platform 是 web,浏览器半边用到 conversation.input.overlay 槽位、 InputActions,以及 inputTriggers 的引用通道。宿主没有引用通道时仍能用,只是退回 纯文本引用块。engines.dsh 声明的是实测下限。

引用源的名字是 selection-followup(组合成 @selection-followup)。宿主里 @ + 名字必须唯一,所以它不会和 dsh-quote-to-composer 的 @quote 撞车;万一撞了, 插件会打一条警告并退回纯文本,而不是让发送链路坏掉。

文件分工

文件 作用
lib/index.js 宿主半边——空实现,只为让 bundle 有个可加载入口
lib/client.js 浏览器半边——选区监听、浮动按钮、把选区变成引用卡片
test/helpers.test.mjs 纯函数的离线测试
cordis.patch.yml 把插件行插进插件树的 bundle patch
icon.svg 插件图标
assets/icon-180.png 商店展示图

许可

MIT。

—/ 5

No ratings yet

Verified DSH bundle

Commit 8f8d67ce4eda

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout