- Inicio
- Plugins
- Mejoras de UI
- dsh-add-to-chat
dsh-add-to-chat
choco9527/dsh-add-to-chat
Añade referencias ligeras de texto seleccionado en las respuestas del asistente de DSH: la selección queda fuera del editor como contexto borrador eliminable, marcada junto a su origen, y tras enviarse aparece como anotación al pasar el cursor.
Instalar
dsh plugin --profile web add github:choco9527/dsh-add-to-chatREADME
DSH对话注释插件
在 DSH 的助手回复中选中文字后,点击 添加到对话。插件会把所选内容保留为独立注释,并在用户发送下一条消息时将其作为插件来源上下文提交。 插件实现极简对话注释效果,与codex类似。
English: README.en.md
效果
在助手回复中选中文字,点击浮动的 添加到对话。

可连续添加多条注释。输入框保持普通文本;悬浮“x 条注释”可查看每段原文,并逐条删除。

继续正常输入并发送。注释会随本次提交作为独立上下文传给模型;提交成功后自动清空,提交失败则恢复。

功能说明
- 纯浏览器端 DSH 客户端插件;不需要 Host 服务或任何产品专用集成。
- 每次选区限于同一条助手回复,可连续添加多条注释。
- 支持三击选中段落;选区末尾落到时间戳起点时,会跳过正文外的空图标,仍可添加该段。浮动控件不参与正文选区,已有注释时仍可三击最后一段;跨消息或选入工具栏文字的选区不会显示入口。
- 不自动发送;用户可继续编辑普通草稿,或只发送注释。
- “x 条注释”悬浮卡片展示完整原文,支持逐条删除及全部删除。
- 预览采用竖线引用、小圆角和轻阴影,不再显示重复标题与编号。全部删除的 × 居中显示在 16px 的白底正圆内,不受宿主圆角平滑影响,按钮自身悬停时变浅灰;覆盖于注释按钮框内,不预留宽度、不加动画。鼠标悬停注释框或键盘聚焦时显示,触屏始终可见。
- 待发送注释卡片优先向上展开,空间不足时向下展开;悬浮层高于输入框,详情与删除按钮不会被输入框遮挡。
- 不向 Lexical 编辑器写入 Markdown、隐藏节点或 Chip,因此不会因 Backspace 误删。
- 注释待发送时,原助手选区右上方保留蓝底白字的水滴形编号,不弹出原文;编号按当前注释顺序排列,删除后自动更新。详情统一在输入框上方的“条注释”卡片查看。
- 界面文案跟随 DSH 当前语言,支持中文和英文,并在切换语言后立即刷新。
兼容性
插件依赖助手正文的 data-dsh-message-role="assistant" 标记、sessions.list 会话目录、conversation.draftContexts 提交服务及 DSH locale 服务。它不依赖页面 CSS class,也不要求 Host 服务或产品专用代码。
多对话视图通过正文及输入框祖先的 data-conversation-session 识别会话;每个输入框只展示自己的待发送注释。选中文本的来源会话与接收引用的目标会话分别记录,侧边对话不会把引用加到主对话。提交失败只恢复到原目标,关闭后重新展示目标对话仍能看到草稿引用。
旧版单对话页面兼容目录的 current 字段,以及 DSH 0.2.0-rc.1 唯一的 retainedBy.mainView 持有者。不按目录顺序或后台子会话猜测当前会话;多个输入框缺少明确的会话标记时,不执行默认添加。
扩展选区操作
客户端通过 ctx.inject(['chatSelection'], ...) 使用插件提供的 chatSelection 服务。registerAction 把操作加入同一个选区浮层;返回的 disposer 应随消费插件卸载。异步操作失败时显示本地化反馈并保留选区,详细错误由消费插件负责。
const off = ctx.chatSelection.registerAction({
id: 'example-side-chat',
label: () => localizedLabel,
run: async selection => {
const targetSessionId = await openSideChat(selection.sourceSessionId)
ctx.chatSelection.addQuote({ ...selection, targetSessionId })
},
})
selection 仅包含实际来源 sourceSessionId 和选中文本 text,不猜测消息序号。addQuote 要求明确的来源、目标和非空文本,只加入待发送注释,不创建会话或自动发送。类型从 dsh-add-to-chat/client-api 导入;使用重新命名的 Cordis 包时,消费方为其 Context 声明同名服务。插件不导入产品侧边聊天代码。
安装
dsh plugin --profile web add github:choco9527/dsh-add-to-chat
DSH Desktop 请安装到当前使用的 Desktop Profile;Electron 渲染器复用同一套 DSH Web 客户端模块图。
开发
corepack pnpm install
corepack pnpm run check
dsh plugin --profile web add .
安装后重启目标 DSH Profile。不要再手动把同一插件 id 写入 Profile 的 cordis.patch.yml,bundle 已自行注册。
corepack pnpm test 加载真实客户端插件,检查新旧会话目录、多输入框隔离、明确引用目标、成功提交清空、失败恢复和异步扩展反馈;无需启动模型或访问真实对话。TypeScript 使用浏览器 bundler 解析,以兼容 Cordis 的无扩展名声明文件;输出仍为 ESM。
浏览器回归:使用已安装的 Playwright 运行 node --test test/preview.browser.mjs;可用 PLAYWRIGHT_MODULE 指定其模块入口、CHROME_EXECUTABLE 指定 Chrome 可执行文件。测试加载真实插件代码,在隔离页面中检查输入框层级 7/9、窄窗口回退、三击段落、跨消息拦截、浅色与深色样式,以及悬停、键盘和触屏删除,不访问真实对话。
许可证
MIT
Plugins relacionados
dsh-web (dsh-task-board)
zhu1090093659/dsh-web
dsh-web (dsh-web-all)
zhu1090093659/dsh-web
dsh-TUI
ccch1mneyyy/dsh-tui
dsh-web-ui (dsh-task-board)
zhu1090093659/dsh-web-ui