dsh-drag-and-drop — 拖入本地文件,插入真实路径
36.2/100
综合分
4
GitHub 星标
593
npm 周下载
—/5
用户评分
数据截至 2026/10/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-drag-and-dropnpm 源 · dsh-drag-and-drop 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · other
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 16 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-drag-and-drop @ 0.1.6
✓Node 引擎要求 ^20.0.0 || >=22.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 22:52:02
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 35 处,展示前 31 条)
- 读取本地文件lib/index.js:109
children = await readdir(directory, { withFileTypes: true }); - 读取本地文件lib/index.js:133
size: (await stat(absolutePath)).size - 读取本地文件lib/index.js:157
const info = await stat(absolutePath); - 读取本地文件lib/index.js:176
await access(command, constants.X_OK); - 执行外部命令来自配置/变量lib/index.js:206
execFile(command, [...args], { - 读取本地文件lib/index.js:317
for (const entry of await readdir(parent, { withFileTypes: true })) if (entry.isDirectory()) roots.push(join(parent, entry.name)); - 读取本地文件lib/index.js:334
const info = await stat(path); - 发起网络请求lib/client.js:243
const response = await fetch(FILE_DROP_ROUTE, { - 读取本地文件lib/types/directory-node.js:15
children = await readdir(directory, { withFileTypes: true }); - 读取本地文件lib/types/directory-node.js:37
entries.push({ path: relativePath, kind: 'file', size: (await stat(absolutePath)).size }); - 读取本地文件lib/types/directory-node.js:57
const info = await stat(absolutePath); - 读取本地文件lib/types/locator.js:17
const info = await stat(path); - 读取本地文件lib/types/locator.js:32
entries = await readdir(directory, { withFileTypes: true }); - 读取本地文件lib/types/locator.js:54
const info = await stat(path); - 读取本地文件lib/types/locator.js:82
entries = await readdir(root, { withFileTypes: true }); - 读取本地文件lib/types/locator.js:100
grandchildren = await readdir(directory, { withFileTypes: true }); - 读取本地文件lib/types/platform-search.js:15
await access(command, constants.X_OK); - 执行外部命令来自配置/变量lib/types/platform-search.js:42
execFile(command, [...args], { - 读取本地文件lib/types/platform-search.js:164
for (const entry of await readdir(parent, { withFileTypes: true })) { - 发起网络请求src/client/locator.ts:7
const response = await fetch(FILE_DROP_ROUTE, { - 读取本地文件src/directory-node.ts:12
try { children = await readdir(directory, { withFileTypes: true }) } catch { truncated = true; return } - 读取本地文件src/directory-node.ts:23
try { entries.push({ path: relativePath, kind: 'file', size: (await stat(absolutePath)).size }) } catch { truncated = true } - 读取本地文件src/directory-node.ts:41
const info = await stat(absolutePath) - 读取本地文件src/locator.ts:25
const info = await stat(path) - 读取本地文件src/locator.ts:36
try { entries = await readdir(directory, { withFileTypes: true }) } catch { return } - 读取本地文件src/locator.ts:52
const info = await stat(path) - 读取本地文件src/locator.ts:77
try { entries = await readdir(root, { withFileTypes: true }) } catch { continue } - 读取本地文件src/locator.ts:87
try { grandchildren = await readdir(directory, { withFileTypes: true }) } catch { continue } - 读取本地文件src/platform-search.ts:26
try { await access(command, constants.X_OK); return true } catch { return false } - 执行外部命令来自配置/变量src/platform-search.ts:42
execFile(command, [...args], { - 读取本地文件src/platform-search.ts:154
for (const entry of await readdir(parent, { withFileTypes: true })) {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 拖入本地文件
- 自动插入绝对路径
DeepSeek Harness 插件:dsh-drag-and-drop(组织副本)
最近更新
在 GitHub 查看全部 →v0.1.62026-08-21
· Fixed
· Windows Everything 搜索修复(issue #4): 改用 (match whole words),替换不存在的 开关——旧开关会让 es.exe 输出帮助文本,导致每次拖入都降级到慢速 PowerShell 全盘搜索。
· GBK 编码修复(issue #4):es.exe / PowerShell 输出按控制台代码页(中文 Windows 为 GBK)解码,不再按 UTF-8 误解码——中文文件名(如 )不再变成乱码导致定位失败。
· 不再调用 Everything.exe(GUI):Windows 索引搜索只探测命令行工具 ,避免弹出“命令行选项”窗口。
· 测试改为真实 GBK 字节 + 断言 参数。
Full changes:
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-drag-and-drop — 拖入本地文件,插入真实路径
安装: dsh plugin --profile web add github:omdsh-dev/dsh-drag-and-drop
DeepSeek Harness Web UI 插件:把本地文件或文件夹拖入页面任意位置,其原始绝对文件系统路径就会插入当前会话输入框——不上传、不移动、不复制任何东西。
为什么需要它
出于安全原因,浏览器从不把拖入文件的真实文件系统路径交给网页——最多给一个本地文件 URI,很多时候什么都不给。而 DSH 操作的是真实文件:它的工具要读取、运行、修改本机上的实际路径。把文件拖进普通网页输入框,要么变成上传(一份副本,悄悄切断文件与相邻依赖文件的关系),要么只能手敲路径,很容易出错。
这个插件在运行 DSH 的本机上补上这个缺口。它把浏览器的本地文件 URI 转成操作系统的原生绝对路径;当浏览器完全隐藏路径时,它通过当前 Workspace、已注册 Workspace、操作系统文件索引和受控目录搜索,把文件定位回真实位置,再写进当前会话输入框。文件始终不离开它所在的目录。
展开完整文档(README 剩余 1 节)
dsh-drag-and-drop — 拖入本地文件,插入真实路径 安装: dsh plugin --profile web add github:omdsh-dev/dsh-drag-and-drop DeepSeek Harness Web UI 插件:把本地文件或文件夹拖入页面任意位置,其原始绝对文件系统路径就会插入当前会话输入框——不上传、不移动、不复制任何东西。 为什么需要它 出于安全原因,浏览器从不把拖入文件的真实文件系统路径交给网页——最多给一个本地文件 URI,很多时候什么都不给。而 DSH 操作的是真实文件:它的工具要读取、运行、修改本机上的实际路径。把文件拖进普通网页输入框,要么变成上传(一份副本,悄悄切断文件与相邻依赖文件的关系),要么只能手敲路径,很容易出错。 这个插件在运行 DSH 的本机上补上这个缺口。它把浏览器的本地文件 URI 转成操作系统的原生绝对路径;当浏览器完全隐藏路径时,它通过当前 Workspace、已注册 Workspace、操作系统文件索引和受控目录搜索,把文件定位回真实位置,再写进当前会话输入框。文件始终不离开它所在的目录。 实现能力 - 将文件拖入 Web UI 任意位置即可插入原始绝对路径 - 拖拽过程中显示全页面压暗和模糊提示 - 支持文件和文件夹,也支持一次拖入多个项目,每个路径占一行 - 支持 macOS、Linux 和 Windows 原生路径 - 支持 POSIX 路径、Windows 盘符路径和 UNC 网络路径 - 不上传、不移动、不复制文件 - 优先在当前 Workspace 和已注册 Workspace 中定位文件 - 浏览器隐藏原始路径时,使用本地文件索引和受控目录搜索 - 仅在存在多个候选文件时计算内容指纹 - 多个完全相同的文件副本无法自动区分时,由用户选择路径 - 定位失败使用插件 toast 提示,可手动关闭,8 秒后自动消失,悬停时暂停计时 - 通过 DSH 的输入状态服务写入草稿,不直接修改输入框 DOM 使用 把文件或文件夹从 Finder、Linux 文件管理器或 Windows 文件资源管理器拖入 DSH Web UI 的任意位置。 出现全页面拖拽提示后松开鼠标,插件会将定位到的原始绝对路径写入当前会话输入框。 一次拖入多个项目时,每个路径占一行。 安装 本插件是 DSH bundle(package.json 声明 dsh.bundle + dsh.client),通过标准的 dsh plugin 机制安装到 web profile,无需修改 DSH 源码、无需 config.yaml: dsh plugin --profile web add github:omdsh-dev/dsh-drag-and-drop 或本地 checkout: dsh plugin --profile web add /path/to/dsh-drag-and-drop 仓库包含构建产物(lib/ 已提交),安装后无需另外构建。 旧版 README 的 pnpm --filter @deepseek-ai/dsh add ... + config.yaml 方式已过时:官方 profile/bundle 模型下不再读取 config.yaml。 安装后重启 Web UI(按你当前启动 DSH Web UI 的方式)并刷新浏览器页面,插件会出现在浏览器引导图(__DSH_BOOT__)中,其 client bundle 自动加载。 升级 dsh plugin --profile web update github:omdsh-dev/dsh-drag-and-drop 本地路径安装则对替换后的 checkout 重新执行 add。 卸载 dsh plugin --profile web remove dsh-drag-and-drop 命令会把包从 profile 和 dsh.profile.bundles 中移除。卸载后重启 Web UI 并硬刷新浏览器。 故障排查 | 症状 | 解决 | | 拖入文件没有任何反应 | 重新拖一次并确认全页面提示出现。用 dsh --profile web --dump-config | grep drag-and-drop 确认 bundle 在 profile 里,并确认安装后已重启 Web UI + 硬刷新 | | 多个同名副本时插入了错误路径 | 候选先按完整文件名和大小过滤,只在幸存者之间采样内容;仍有完全相同副本时插件会弹出选择列表——在那里选正确的路径 | | 大磁盘上路径定位很慢 | 安装平台索引(Linux:plocate;Windows:Everything CLI),并让文件位于 Workspace 或常用目录内。每次搜索都有边界:索引命令 3 秒超时、最多保留 100 个候选、每个递归根最多访问 20,000 个目录项 | | macOS/Linux:拖入文件夹定位失败 | 文件夹按名称匹配 Workspace 和常用目录;浏览器隐藏路径时,位于所有可搜索根之外的文件夹无法定位——把它移进 Workspace,或安装操作系统索引 | | 安装后插件没有加载 | 重启 Web UI 并硬刷新浏览器——client bundle 只在插件进入 __DSH_BOOT__ 后的全新页面加载时生效 | 路径定位 如果浏览器提供本地文件 URI,插件会直接转换为当前操作系统的原生路径。 如果浏览器出于安全原因隐藏原始路径,插件按以下顺序定位文件: 1. 当前 Workspace 2. 其他已注册 Workspace 3. Desktop、Documents 和 Downloads 4. 各搜索根内三层以内的浅层快速定位:根的直接子项、直接子目录的直接子项、以及这些子目录的直接子项——绝大多数真实拖拽(如 ~/Downloads/dump2 11/iotclaw.ndjson)无需遍历整棵目录树即可命中 5. 操作系统文件索引 6. 有边界限制的平台目录搜索 不同平台使用的系统索引: - macOS:Spotlight - Linux:优先使用 plocate,其次使用 locate - Windows:优先使用 Everything CLI,其次使用 PowerShell Linux 在系统索引没有返回候选时,还会搜索用户主目录以及 /mnt、/media 下的挂载目录。 Windows 在系统索引没有返回候选时,还会搜索用户目录和可用的固定磁盘。 为了避免无边界搜索: - 单次外部索引命令的超时时间为 3 秒 - 最多保留 100 个候选路径 - 三层浅层快速定位在每个搜索根最多展开 4,096 个直接子目录 - 每个递归搜索根最多访问 20,000 个目录项 - 无法读取的目录和文件会被忽略 候选确认 候选文件首先通过以下信息筛选: - 完整文件名 - 文件大小 修改时间只用于候选排序,不作为文件身份依据。 如果只剩一个候选,插件会直接使用该路径,不读取文件内容。 如果存在多个候选,插件会比较文件开头、中间和结尾的采样指纹。大文件的采样指纹仍然冲突时,才会计算完整 SHA-256。 如果多个路径对应完全相同的文件内容,插件会显示路径列表,由用户选择需要插入的路径。 文件夹首次只按名称搜索。唯一候选会直接返回,不遍历浏览器目录;多个同名候选才比较排序后的相对路径、项目类型和文件大小。结构相同的多个目录会进一步对最多 24 个确定性选择的文件计算内容采样;仍然相同则由用户选择路径。目录遍历最多处理 10,000 个项目和 32 层,不跟随符号链接或 Windows junction。 每一层搜索都先检查搜索根的直接子项,再查询该范围内的操作系统索引,最后才递归目录。当前 Workspace、其他 Workspace 和常用目录的优先级保持不变。 隐私和文件访问 插件不会: - 上传文件 - 复制文件 - 移动文件 - 修改文件 - 删除文件 多数情况下,插件只读取文件元数据。 只有存在多个同名、同大小候选文件时,才会读取少量文件内容计算采样指纹。仅在大文件采样仍然无法区分时,才会读取完整内容计算 SHA-256。 所有定位和指纹计算都在运行 DSH 的本机完成。 平台说明 macOS 支持 Finder 拖拽和 Spotlight 索引。已在 macOS Chrome 环境验证。 Linux 支持提供 text/uri-list 的文件管理器。浏览器隐藏路径时,插件使用 Workspace、常用目录、plocate、locate 和受控挂载目录搜索。 建议安装 plocate,以获得更快的全局路径定位。 Windows 支持盘符路径和 UNC 网络路径。浏览器隐藏路径时,插件优先使用 Everything CLI;未安装 Everything 时,使用 PowerShell 搜索用户目录和固定磁盘。 安装 Everything 及其命令行工具可以显著提高大磁盘上的定位速度。 开发与验证 构建脚本需要可用的 DSH checkout。默认会从 dsh 命令定位,也可以显式指定: DSH_CHECKOUT=/path/to/dsh pnpm run build 运行测试: pnpm test 执行类型检查: pnpm run check 构建: pnpm run build 仓库结构: - src/ — host(node)半边:路径定位、目录遍历、指纹计算、平台搜索、文件定位 HTTP 路由 - src/client/ — 浏览器半边:拖拽处理、拖入项、路径定位器、候选选择器、toast UI - tests/ — host 与 client 逻辑的 vitest 套件 - lib/ — 已提交的构建产物(host + client bundle) 社区与关于 - 可复现的 bug、聚焦的功能请求和使用问题,走 GitHub Issues。 - 提变更前先读 CONTRIBUTING.md;安全问题通过 SECURITY.md 私有上报。 - 版本与兼容性说明见 CHANGELOG.md。 License BSD-3-Clause
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
omdsh-dev/dsh-drag-and-drop
dsh-drag-and-drop — 拖入本地文件,插入真实路径
相关插件 · 其他
模型破甲清洗YuJunZhiXue/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,148已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,266已汉化DSH
70.7