🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

拖拽路径引用 SereneJi/dsh-host-paths

DeepSeek Harness
SereneJi17 天前有提交已提供中文文档扫描:未发现敏感能力

把文件拖进 DSH Desktop,输入框里得到的是 @路径 引用,而不是一份被上传的副本。

29.6/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/18 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add SereneJi/dsh-host-paths
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · dev
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 17 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

README

由 DeepSeek 最新模型翻译生成
dsh-host-paths 把文件拖进 DSH Desktop,输入框里得到的是 @路径 引用,而不是一份被上传的副本。 dsh-host-paths 是一个只做一件事的小插件:把桌面壳 preload 里的文件路径桥(window.__DSH_DESKTOP_FILE_PATH__)接到 DSH 输入框本来就有的宿主路径接缝(globalThis.__DSH_HOST_PATHS__)上。接上之后,官方 composer 自己就会把拖入的文件转成 @路径 chip——不需要插件抢事件,也不需要它替你读文件。 问题 DSH 的输入框里有两条互斥的落地路径(dsh-client-ui-conversation 的 addFiles): path = 宿主路径桥?.pathFor(file) ?? "" path === "" || 图片 → 上传(file draft,物化到会话附件目录) 否则 → @路径 引用 chip(零上传) 而 __DSH_HOST_PATHS__ 这个名字在 DSH Desktop 里没有任何代码写入:壳只暴露 __DSH_DESKTOP_FILE_PATH__(Electron webUtils.getPathForFile)。于是第二条分支永远不走,拖什么都是上传——哪怕 Electron 明明知道那个文件的真实路径。
展开完整文档(README 剩余 1 节)
dsh-host-paths

把文件拖进 DSH Desktop,输入框里得到的是 @路径 引用,而不是一份被上传的副本。

dsh-host-paths 是一个只做一件事的小插件:把桌面壳 preload 里的文件路径桥(window.__DSH_DESKTOP_FILE_PATH__)接到 DSH 输入框本来就有的宿主路径接缝(globalThis.__DSH_HOST_PATHS__)上。接上之后,官方 composer 自己就会把拖入的文件转成 @路径 chip——不需要插件抢事件,也不需要它替你读文件。

问题

DSH 的输入框里有两条互斥的落地路径(dsh-client-ui-conversation 的 addFiles):

path = 宿主路径桥?.pathFor(file) ?? ""
path === "" || 图片 → 上传(file draft,物化到会话附件目录)
否则 → @路径 引用 chip(零上传)

而 __DSH_HOST_PATHS__ 这个名字在 DSH Desktop 里没有任何代码写入:壳只暴露 __DSH_DESKTOP_FILE_PATH__(Electron webUtils.getPathForFile)。于是第二条分支永远不走,拖什么都是上传——哪怕 Electron 明明知道那个文件的真实路径。

本插件就是把这两个名字接起来的那一行。

装上之后

| 你做的事 | 结果 |
| 拖入非图片文件(docx / xlsx / pdf / zip…) | 输入框出现 @绝对路径 chip,零上传、零复制;文件在工作区内时自动写成相对路径 |
| 拖入文件夹 | 出现 @路径/ 文件夹 chip |
| 拖入图片 | 仍走原生图片通道上传(官方设计:缩略图、尺寸探测、多图限额都在这条路上) |
| 路径含空格 | 自动用 @"带 空格 的 路径.docx" 引号语法 |
| 壳拿不到真路径(OneDrive 占位符、压缩包内拖出、纯浏览器打开) | 自动回落成官方原有的上传行为,不会报错 |

不做的事:不读文件内容、不复制、不搬移、不删改、不联网、不注册任何 host 服务,也不覆盖别人已经装好的同名前接缝(未来的 DSH 如果自己接了,本插件自动让位)。

安装

从 GitHub(建议钉住 commit)
dsh plugin --profile desktop add github:384124694/dsh-host-paths#<sha>

从本地检出
git clone https://github.com/384124694/dsh-host-paths.git
dsh plugin --profile desktop add link:$HOME/dsh-host-paths

--profile 填你实际在用的那个(DSH Desktop 通常是 desktop,纯 dsh web 是 web)。
重启 DSH Desktop(或重跑 dsh web)并刷新页面后生效——客户端半是启动时编进 __DSH_BOOT__ 的。包内已带构建产物(lib/),无需构建步骤。

验证

F12 打开 Console:

window.__DSH_HOST_PATHS__ // 装好后应为 { pathFor: ƒ } typeof window.__DSH_DESKTOP_FILE_PATH__?.getPathForFile // 应为 "function"
window.__DSH_HOST_PATHS__.pathFor($0) // 在 Elements 里选中一个 file input 的 File 再试

然后拖一个非图片文件:输入框应出现 @路径 chip,输入框上方不该出现文件卡片(那就是上传)。

卸载

dsh plugin --profile desktop remove dsh-host-paths

重启后接缝消失,拖拽回到官方默认行为。

开发

npm test # node --test:7 项行为测试,不需要 DSH 服务器

lib/client.js 是手写的经典脚本(window.__ModuleLoader__.load({ id, factory })),没有构建步骤:改完直接重启 profile 即可。lib/index.js 是空的 host 半,只为了让这个 bundle 在 Loader 里有一个条目、客户端产物才会进 __DSH_BOOT__。

已知边界

- 只在 DSH Desktop(Electron)里有意义。 普通浏览器没有路径桥,本插件静默不装接缝,拖拽保持官方行为(上传)——它不会假装成功。
- 图片仍然上传,这是官方 composer 的既定分支,本插件不改变它。
- 引用 chip 里的路径:文件在工作区内时是相对 cwd 的路径,否则是绝对路径。
- 若某个未来 DSH 版本自己写了 __DSH_HOST_PATHS__,本插件检测到已有值就不覆盖。

License

MIT
预览分享卡片长什么样 ↓SereneJi/dsh-host-paths
分享 · DeepSeek Harness Hub
SereneJi/dsh-host-paths

把文件拖进 DSH Desktop,输入框里得到的是 @路径 引用,而不是一份被上传的副本。

回到顶部