dsh-plugin-drop-path:把文件夹拖进 DSH,输入框得到本机绝对路径

前言

在 DSH 里和模型讨论本地工程时,你往往希望它「看见」的是某个目录在本机上的位置,而不是一条无法上传的附件。上游附件流程面向的是文件:拖进一张图、一份文档可以走上传;拖进整个文件夹时,目录本身不是文件,上传拿不到有用内容,输入框里却容易仍被当成附件处理。DeepSeek Harness 的社区插件 dsh-plugin-drop-path(维护者 vianvio,GitHub vianvio/dsh-plugin-drop-path)针对的是这一类场景:在客户端输入框里,把「恰好一个文件夹」的拖放改写成 @路径/ 形式的引用块,模型收到的是该文件夹的本机绝对路径,你可以接着打字发送。

这是什么

dsh-plugin-drop-path 是 DSH 客户端插件(当前 npm 版本 0.1.2,许可证 MIT,零运行时依赖)。它不改变服务端逻辑,只在浏览器侧拦截符合条件的拖放,并通过上游的引用插入通道写入路径。插件在 DSH 生态目录中的分类为客户端;SkillHub 目录页:https://www.skillhub.cn/plugins/vianvio/dsh-plugin-drop-path。

核心功能

下面介绍拖放时的行为划分(与 README 一致):

你拖进来的 结果
一个文件夹 插件接管本次拖放,把绝对路径插进输入框(folder 形状的 @路径/ 引用块)
一个普通文件 不处理,仍走上游附件流程(图片 / 文件上传)
同时拖多个 不处理(多选里含文件夹也不猜测)

只有「恰好一个文件夹」才会接管:误判一次可能吞掉本应按附件处理的文件,因此作者选择保守策略。引用块在显示上放宽了上游约 240px 宽、省略号截断的限制,以便长路径完整可见;发给模型的文本不变。

路径来源与插入方式要点:

  1. 在 window 捕获阶段监听拖放,先于挂在 document 冒泡上的上游附件插件,不依赖插件加载顺序。
  2. 绝对路径来自 DSH Desktop 的窄口桥 window.__DSH_DESKTOP_FILE_PATH__(对应 Electron 的 webUtils.getPathForFile)。普通浏览器没有这座桥时会明确提示读不到路径,而不是插入假路径。
  3. 使用上游通道 slash/input-insert-reference 插入引用,避免整篇替换 Lexical 草稿导致已有引用块降级或光标丢失。

安装与启用

安装命令以 README 为准。桌面端示例:

dsh plugin --profile desktop add dsh-plugin-drop-path

--profile 填你实际使用的 profile(桌面端为 desktop,Web 端为 web)。装完后需要重启 DSH——客户端插件多在启动时加载。命令背后通过 pnpm 安装包,并自动把声明了 dsh.bundle 的依赖写入 profile 的 dsh.profile.bundles,无需手改 package.json。

其他来源(资料原文):

从哪装 命令
npm(推荐) dsh plugin --profile desktop add dsh-plugin-drop-path
GitHub 最新提交 dsh plugin --profile desktop add github:vianvio/dsh-plugin-drop-path
本地目录(开发) 克隆仓库后:dsh plugin --profile desktop add link:$HOME/dsh-plugin-drop-path

升级与卸载:

dsh plugin --profile desktop update dsh-plugin-drop-path
dsh plugin --profile desktop remove dsh-plugin-drop-path

典型用法

  1. 在 DSH Desktop 中打开对话输入框。
  2. 从访达(Finder)或资源管理器中单独拖入一个文件夹到输入区域。
  3. 输入框出现带 folder 图标的 @…/ 引用块,内容为该文件夹的本机绝对路径;继续输入说明后发送,模型侧看到的是路径字符串而非附件。

若在普通浏览器中打开同一界面,没有 Desktop 路径桥,插件会说明无法读取本机路径——这是预期边界,不是配置错误。

适用场景与注意

适合谁: 经常在 DSH 里让模型基于本地工程目录路径做说明、脚本生成或上下文引用,且习惯用拖拽而不是手打长路径的开发者。

已知边界(README):

  • 路径仅在 DSH Desktop 可获取;Web 浏览器无 __DSH_DESKTOP_FILE_PATH__。
  • 路径原样插入:不做存在性校验、不做 ~ 缩写、不做相对化,避免模型在另一侧解释错误。
  • 仅处理「恰好一个文件夹」的拖放,其余交给上游。

安全与信任: 插件以当前 DSH 进程权限在客户端运行,会读取拖入文件夹的本机路径并写入输入框。安装前建议查看 GitHub 仓库 源码与 MIT 许可证;社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。

机制细节与验证说明见仓库内 docs/notes.md;行为与发布契约有 npm test(README 称 20 项)。

结尾

经过上面的步骤,你可以在 Desktop 端用一次文件夹拖放,把本机绝对路径以引用块形式交给模型,而绕开「目录无法当附件上传」的死胡同。更多元数据与讨论见目录页 https://www.skillhub.cn/plugins/vianvio/dsh-plugin-drop-path,源码与安装说明见 https://github.com/vianvio/dsh-plugin-drop-path。

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

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

Xiaoye