前言¶
在 DeepSeek Harness(DSH)里和模型讨论代码时,经常要把某个文件或目录「点进」当前会话的输入框。手动在输入区打 @ 再补全路径可以,但在右侧栏文件树里已经能看到工作区结构时,再切到输入框选路径会打断节奏。社区插件 dsh-files-to-chat(维护者 ruaibeite,分类:客户端)针对的是这一环:在官方右侧栏文件树行上增加右键与多选,把文件或文件夹写成 @ 引用插入当前会话草稿,支持批量插入。插入的是引用语法本身,不会把文件内容灌进上下文;语义与在输入框里用 @ 选文件一致。
下面介绍插件定位、能力、安装与典型用法,并说明已知限制与使用注意。
这是什么¶
dsh-files-to-chat(npm 包名 @ruaibeite/dsh-files-to-chat,当前资料中版本 0.2.4)是 DSH 的客户端插件,挂载在官方 dsh-client-ui-sidebar-files 文件树相关插槽上。它不替换官方文件树,而是在行级增强交互:右键菜单、⌘/Ctrl 与 Shift 多选、表头快捷芯片,最终通过会话输入机的 insertReference 或等价路径把 @path 写进当前对话输入框。
DSH 生态强调「一切皆插件」;插件目录页在 skillhub.cn,源码与说明在 GitHub。该目录为社区站点,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
右键与菜单¶
在文件树中对文件行或文件夹行右键,会出现例如「添加到对话」「用默认应用打开」「在文件管理器中显示」「复制路径」等项;文件夹行的打开类文案会变为「打开文件夹」「在上级目录中显示」。普通左键点击不改变官方原有行为(打开文件、展开目录),仅会清掉本插件维护的多选状态。
「打开 / 在文件管理器中显示」走官方 open-in-app 宿主能力(与文件树表头「打开方式」同一 session 远程命名空间),插件自身不起 shell 进程。宿主用 canOpenWorkspacePath() 做三态探测:仅当宿主明确回答「不支持」时才隐藏整组菜单;探测失败或未响应时菜单仍显示,点击后由宿主当场处理。
多选与批量插入¶
| 操作 | 结果 |
|---|---|
| ⌘/Ctrl + 点击 | 将该行加入或移出选择(不会打开文件) |
| Shift + 点击 | 从上次选择连选到当前行 |
| 右键已选中的行 | 菜单变为「添加所选 N 项到对话」及「复制 N 条路径」 |
| 表头芯片 | 有选择时出现在文件树表头,点击可插入,× 清除选择 |
| Escape | 关闭菜单;菜单未打开时清除选择 |
多选状态下不提供「打开」(一次拉起多个应用无意义)。
插入内容的形态¶
插入的是 @ 引用语法,与输入框内 @ 补全选文件等价:
- 工作区内路径为相对形式,例如
@iwcc/iwcc.sql; - 工作区外保留绝对路径;
- 含空格的路径使用闭合引号,例如
@"my docs/a b.md"、@"ba docs/"。
按 dsh-file-reference 的设计,@path 只是提示词中的文本,不会附带文件内容;模型仍需通过文件工具读取。文件夹引用只插入 @dir/,不会展开为目录下文件列表。
插入路径与降级¶
插件优先使用 Session 作用域下发的 inputActions,缺失时回退到会话作用域内的 conversation 输入机。引用形态上优先调用 insertReference(官方原子引用 chip);失败则尝试事件 slash/input-insert-reference;再失败则降级为 insertText 纯文本,语义与 chip 一致。插入期间用 draftRev 做 CAS:草稿被改动或正忙时,引用文本会复制到剪贴板并提示,避免静默丢失。成功后焦点回到输入框,光标落在刚插入的引用之后。
安装与启用¶
从市场或 GitHub 安装(命令来自项目 README):
dsh plugin --profile desktop add github:ruaibeite/dsh-files-to-chat
从本地目录安装:
./install.sh # 默认装进 desktop profile
PROFILE_NAME=web ./install.sh # 装进其他 profile
安装完成后重启 Harness(浏览器端随会话引导加载,仅刷新页面不够)。确认是否挂载:
dsh --profile desktop --dump-config | grep -A2 files-to-chat
插件以当前 DSH 进程权限运行;安装前建议在 GitHub 查看源码与 MIT 许可证,自行评估是否纳入工作环境。
典型用法¶
基本流程可以概括为:
右键任意文件/文件夹 → 添加到对话 → 草稿里多出一枚 @path 引用
⌘/Ctrl+点击 多选 → 右键 → 添加所选 N 项
- 在右侧栏打开会话对应的文件树,对目标文件右键,选「添加到对话」。
- 需要多个路径时,用 ⌘/Ctrl 或 Shift 多选若干行,再右键选「添加所选 N 项到对话」,或点击表头芯片一次性插入。
- 发送消息前,模型侧仍须通过工具读取
@指向的文件;大文件不会因加引用而直接进入上下文。
适用场景与注意¶
适合谁:经常在 DSH 桌面端(desktop profile)用右侧文件树浏览工作区、又希望少打字就能把路径写进对话的开发者。
已知限制(来自 README):
- 只增强官方文件树的文件与文件夹行;
other类型(socket、设备文件等)无菜单,右键仍为系统菜单。 - 多选状态保存在插件内存中,切换标签、刷新树或换会话会清空。
- 依赖官方行 DOM 契约(
data-files-entry、data-files-path、data-files-root);DSH 变更这些属性时,右键增强可能静默失效。 - 远端路径等无法映射到本机时,「打开 / 在文件管理器中显示」可能由宿主拒绝,插件会展示宿主返回的错误码。
开发侧可运行 node test/mention.mjs 校验路径相对化、@ 引用语法与批量构建等;客户端入口为手写预构建模块 client/client.js,改完重启 Harness 即可,无需额外打包步骤。
结尾¶
dsh-files-to-chat 把「从文件树到对话输入」收成右键与多选几步,与官方 @ 引用语义对齐,且不附带文件正文。若你已在用 DSH 右侧文件树,可按上文命令安装并重启后试用。