← 返回列表
⚠ 装前注意
DSH Desktop 插件:把文件夹拖进 composer,得到它的原生绝对路径DSH 原生只收文件
基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/21 · 已提供中文文档
DSH Desktop 插件:把文件夹拖进 composer,得到它的原生绝对路径(DSH 原生只收文件)
综合分
29.9
GitHub 分
29.9
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add chiyu-star499/dsh-folder-drop未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
信任档位:已验证本站已于 1 天前真实安装成功
- 是什么
- dsh 原生插件 · desktop
- 装得上吗
- 本站已真实安装成功(非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 4 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/25
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/22(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-folder-drop(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20.19 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
未发布到 npm registry,仅可从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/22 15:34:04
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-folder-drop
把文件夹拖进 DeepSeek Harness,得到它的原生绝对路径。
License: MIT
DSH: 0.1.5-rc.2
把文件夹拖进 DSH Desktop 的 composer,就能在草稿里得到它真实的绝对路径 —— 无需复制,无需上传。
DSH 的 composer 原生只收文件。拖放链路只读 dataTransfer.files
(@deepseek-ai/dsh-client-ui-attachment 的 ComposerAttachments),文件选择器是没有
webkitdirectory 的 ,粘贴只认 kind === "file" 的项;
而浏览器从不把目录内容当 File 交出来。结果是:拖文件夹要么毫无反应,要么在附件栏里
变成一个 0 字节空壳。
本插件补上这一段:目录拖进来 → 直接把路径写进草稿,交给 agent 自己的文件工具去读。
行为
| 拖放内容 | 结果 |
| --- | --- |
| 纯文件 / 纯图片 | 一行不碰,完全交回 DSH 原生附件链路 —— 附件栏、上传进度、失败重试、图片预览全部保持原样 |
| 含文件夹(可以与文件混拖) | 本插件独占本次拖放:把每一项的原生绝对路径按换行追加进当前草稿;同时补一个 synthetic dragend,让 DSH 的全屏拖放遮罩正常收起 |
| 含文件夹但取不到路径 | 通过 DSH 自己的 error 提示报出失败项名,绝不静默 |
写入走 DSH 公开的输入门面(不触碰输入框 DOM):
ctx.conversation.input.for(ctx.sessions.scope(sessionId)).setDraft(text)
路径从哪里来
按优先级依次尝试:
1. window.__DSH_DESKTOP_FILE_PATH__.getPathForFile(file) —— DSH Desktop 的 preload.cjs 已用
contextBridge 暴露的 Electron webUtils(拿到真实路径的正规入口)
2. file.path —— 旧版 Electron 的历史属性
3. entry.file() —— 个别 Chromium 版本只在目录项上给这条异步通道
4. text/uri-list / text/plain 里的 file:// URL —— 整批兜底
时序约束:Chromium 的 DataTransfer 保护模式让 items[i].webkitGetAsEntry()、
items[i].getAsFile()、dataTransfer.getData() 只在 drop 事件派发期间有效。
本插件在 drop 处理器的同步段把这些一次性读成快照,异步段只用快照 —— 改代码时别“优化”成惰性读取。
安装
从 GitHub 装
dsh plugin --profile desktop add github:chiyu-star499/dsh-folder-drop
或从本地目录装
dsh plugin --profile desktop add file:/path/to/dsh-folder-drop
profile 认准 desktop:DSH Desktop(GUI)跑的是 desktop profile;dsh / dsh web
默认是 web,装进 web 对 GUI 无效。
装完必须重启 DSH Desktop:配置与插件装载改动不依赖 patchReload: live。
add file: 实测是拷贝安装(不是软链)——改源码后需要重新 add 才会生效。
卸载
dsh plugin --profile desktop remove dsh-folder-drop
然后重启 DSH Desktop。插件不写任何状态文件,卸载即彻底还原;profile 的 package.json
与 cordis.patch.yml 由 dsh plugin 自动登记/移除。
兼容性
| 组件 | 版本 | 状态 |
| --- | --- | --- |
| DSH Desktop | 2.0.13 | ✅ 真机验收通过 |
| dsh 核心 | 0.1.5-rc.2 | ✅ |
依赖的是 ctx.sessions.scope() / ctx.conversation.input.for() / .setDraft() / .notify()
这些公开客户端服务面。核心里这几处若在后续版本改名,插件需要跟着改(见下方「开发」)。
开发
node ./scripts/build-client.mjs # src/client.js → lib/client.js(__ModuleLoader__ 外壳)
node ./scripts/smoke.mjs # 38 条断言:清单契约 / 产物形态 / 纯函数 / drop 行为
lib/client.js 是生成物,不要手改:改 src/client.js 后重跑构建,再重新 add。
客户端 bundle 的形态是 DSH 客户端模块系统要求的
window.__ModuleLoader__.load({ id, factory }) + 惰性 CJS factory;宿主按
package.json 的 exports["./client"] 解析入口,缺失 lib/client.js 会让插件激活直接失败。
已知边界
- 只处理 drop。文件夹没法粘贴,picker 也选不了目录 —— 那是 DSH 原生缺口,本插件不碰。
- 混拖时文件也走「插路径」而不是「附件上传」:DSH 的 drop 事件无法只拦掉其中一项。要附件上传就纯拖文件。
- 普通浏览器里没有 file-path 桥,拿不到本地路径;这时会明确报错,而不是插入错误的内容。
- 与 dsh-drag-and-drop、
dsh-drop-to-path 功能重叠,不要同时安装。
许可
MIT © 2026 chiyu-star499
API 用法参考了 dsh-drag-and-drop
(BSD-3-Clause)对 DSH 客户端服务面的用法;本插件为独立实现,且不需要它那套 host 侧定位引擎
(DSH Desktop 直接给真实路径)。