前言¶
在 DSH 里要把「另一个对话」的上下文带进当前输入框,常见做法是手打 @ 再点选会话。步骤不多,但侧栏里已经摆着目标会话时,仍要在编辑器里走一遍菜单。若你更习惯从列表直接「拎」过来,再接着打字、自己按发送,dsh-drag-graft 做的是这件事:把侧边栏会话行拖到对话区松手,草稿里出现与 @ 选对话同类的原生引用 chip,一条消息里可以同时带上引用和你的问题。
这是什么¶
dsh-drag-graft 是社区维护的 DSH 插件(维护者 yoyococo1234,当前包版本 2.2.1,MIT 许可证)。它不增加常驻按钮或浮层,只在拖拽成功时在输入框插入 chip;失败时在底部闪一行提示。插件不修改宿主文件、不联网,也不会替你发送消息(插入失败时的兜底除外,见下文)。
目录页:https://www.skillhub.cn/plugins/yoyococo1234/dsh-drag-graft
源码与说明:https://github.com/yoyococo1234/dsh-drag-graft
核心功能¶
下面介绍插件在界面上的主要行为,均可在 README 中对照。
会话引用。 从侧边栏拖起别的会话行,拖到对话区(输入框或聊天区)松手,输入框出现蓝标 chip,与手打 @ 选对话一致。可连拖多个不同会话,依次插入多个 chip;上限跟随宿主(原版 DSH 为 3 个,第 4 个会在拖入时被拦住并提示)。
文件夹引用。 侧栏里装着对话的工作区(文件夹)行也可拖到对话区,松手后草稿里多一枚文件夹引用 chip(与 @ 选目录同一种节点),一次退格可整段删除。插入的是绝对路径;宿主未提供 conversation 服务时会退化为纯文本插入。
刻意不拦截的行为。 拖到侧边栏内部仍走官方排序或 dsh-workspace-mover 等逻辑;拖文件到对话区仍走宿主上传;拖当前对话自己会被拦下并提示(避免宿主 cannot reference itself)。
零常驻 UI。 没有按钮、投放条或浮层面板;成功时草稿里多出的 chip 即反馈。
插入失败兜底。 若宿主内部 API 变化导致 chip 插不进去,插件会退化为直接发一条只含引用的消息,输入框保持干净,避免静默失败。
安装与启用¶
装好后需刷新页面再试拖拽。package.json 中 engines.dsh 要求宿主版本 >=0.2.1-rc.2 <0.3.0-0;README 记载 DSH Desktop 0.2.1-rc.3 端到端实测通过。安装前建议浏览仓库源码与许可证;插件在 DSH 进程权限下运行。
方式 A:让 DSH 里的 agent 装
plugin_manager { action: "install_bundle", target: "dsh-drag-graft" }
方式 B:命令行
dsh plugin --profile desktop add dsh-drag-graft
方式 C:设置面板
DSH → 设置 → 插件 → 安装 → 输入包名 dsh-drag-graft → 安装 → 刷新页面。
停用或卸载示例:
plugin_manager { action: "set_bundle", target: "dsh-drag-graft", enabled: false }
plugin_manager { action: "remove_bundle", target: "dsh-drag-graft" }
命令行卸载:dsh plugin --profile desktop remove dsh-drag-graft
典型用法¶
经过上面的安装与刷新,可按下面步骤自检:
- 侧边栏拖起任意一个别的会话行。
- 拖到对话区松手。
- 确认输入框出现引用 chip,继续输入正文。
- 自行按发送;发送后消息头可显示「引用会话 · …」。
30 秒自检:拖完后按 F12,在控制台执行:
__dragGraft.state()
应看到类似 { currentSessionId: "session-…", hasInputTriggers: true, hasInputActions: true, limits: { maxReferences: 3, … } } 的对象。
故障排查时还可使用:__dragGraft.limits()、__dragGraft.refCount()、__dragGraft.refreshLimits() 等(完整列表见仓库 README「故障排查」一节)。
适用场景与注意¶
适合谁。 希望当前模型了解其他对话(或某个工作区目录)的上下文,且仍要在同一条消息里继续打字、自己控制发送时机;与手打 @ 引用同类能力,但交互从侧栏拖拽完成。
与 @mars.liu/dsh-graft 的差异(README 对照表)。 本插件是拖拽 → 草稿里的原生引用 chip,宿主会按默认策略压缩对方会话注入;dsh-graft 则会话头开关、选段转发,把选定轮次原文写进目标会话。两者可共存。
隐私与安全(README 摘要)。 不联网、不读本地文件内容;宿主半区只读,提供有限 RPC 与诊断工具;不绕过界面里本就可做的权限。
兼容性。 依赖 DSH 内部 API(Lexical 输入框、inputTriggers、inputActions.captureInsertion 等),宿主升级后可能降级为「直接发引用消息」,README 说明不会因此拖垮页面。
结尾¶
dsh-drag-graft 用拖拽把侧栏会话或工作区行接进输入框的原生引用管线,无额外 UI,失败有提示或兜底。社区目录:https://www.skillhub.cn/plugins/yoyococo1234/dsh-drag-graft;安装命令、上限行为与调试命令以 GitHub README 为准:https://github.com/yoyococo1234/dsh-drag-graft。