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

文件上传助手 a903067276-rgb/dsh-file-upload

DeepSeek 客户端v0.5.4
a903067276-rgb38 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

一个上传按钮,还能把文件拖进对话变成本地路径:存到项目 uploads/,路径文本填进输入框,任何视觉工具都能用

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

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

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/a903067276-rgb/dsh-file-upload.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
生态插件
可安装,未声明 dsh 能力
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 38 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

npm 同名包「dsh-file-upload」归属 hongming-huang/dsh-file-upload,装到的可能不是本插件

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-file-upload @ 0.5.4
✓Node 引擎要求 >=22.19 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/1 00:46:41

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 12 处,展示前 12 条)
  • 写入本地文件
    lib/index.js:318
    await mkdir(dir, { recursive: true })
  • 写入本地文件
    lib/index.js:320
    await writeFile(join(dir, fileName), bytes)
  • 写入本地文件
    lib/index.js:428
    await mkdir(resolved, { recursive: true })
  • 执行外部命令来自配置/变量
    lib/index.js:431
    execFile(cmd, [resolved], (error) => (error ? rejectExec(error) : resolveExec()))
  • 写入本地文件
    lib/index.js:506
    await mkdir(resolve(target, '..'), { recursive: true })
  • 写入本地文件
    lib/index.js:507
    await writeFile(target, Buffer.from(base64, 'base64'))
  • 发起网络请求
    lib/client.js:297
    const res = await fetch(
  • 发起网络请求
    lib/client.js:329
    fetch("/api/file-upload/save", {
  • 发起网络请求
    lib/client.js:390
    fetch("/api/file-upload/save-folder", {
  • 发起网络请求
    lib/client.js:772
    fetch("/api/file-upload/config", { cache: "no-store" })
  • 发起网络请求
    lib/client.js:790
    fetch("/api/file-upload/config", {
  • 发起网络请求
    lib/client.js:817
    fetch("/api/file-upload/open-dir", { method: "POST" })
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

2 张 · 点击查看大图

功能亮点

  • 拖拽文件转本地路径
  • 文件存入uploads/
  • 路径文本填入输入框

README

由 DeepSeek 最新模型翻译生成
dsh-file-upload ⬆️ Awesome DSH Plugin 一个上传按钮 + 拖拽文件直接进对话 —— DeepSeek Harness(dsh)web 端插件。 非官方项目:由社区成员独立开发维护,不是 DeepSeek 官方产品。 ⚠️ 已停止维护(2026-09-10) dsh 0.1.5-rc.1 内置了附件系统,覆盖了本插件的核心能力(可附加任意文件类型;模型按需通过保存的只读路径读取)。本插件不再维护。 - 最高支持的 DSH 版本:0.1.2(最后验证于 0.1.2-rc.1)。不再修复,也不做兼容工作。 - 要升级到 dsh 0.1.5 或更新版本?必须先禁用/移除本插件 —— 它和 0.1.5 的附件系统一起会导致启动失败(web 应用起不来)。升级前,先从配置档 package.json 的 dsh.profile.bundles 里移除 dsh-file-upload。 - 感谢所有用过它的朋友。需要文件附件,请用官方功能(把文件拖进或粘贴进输入框)。 截图 dsh-file-upload 实际效果 输入框工具行里的上传图标按钮(用官方 DSH 设计 token,跟随深色/浅色主题);要么把文件路径插入输入框,要么 —— 对支持的图片 —— 把图片放进官方附件栏(自动复用 file_id)。
展开完整文档(README 剩余 1 节)
dsh-file-upload ⬆️

Awesome DSH Plugin

一个上传按钮 + 拖拽文件直接进对话 —— DeepSeek Harness(dsh)web 端插件。

非官方项目:由社区成员独立开发维护,不是 DeepSeek 官方产品。

⚠️ 已停止维护(2026-09-10)

dsh 0.1.5-rc.1 内置了附件系统,覆盖了本插件的核心能力(可附加任意文件类型;模型按需通过保存的只读路径读取)。本插件不再维护。

- 最高支持的 DSH 版本:0.1.2(最后验证于 0.1.2-rc.1)。不再修复,也不做兼容工作。
- 要升级到 dsh 0.1.5 或更新版本?必须先禁用/移除本插件 —— 它和 0.1.5 的附件系统一起会导致启动失败(web 应用起不来)。升级前,先从配置档 package.json 的 dsh.profile.bundles 里移除 dsh-file-upload。
- 感谢所有用过它的朋友。需要文件附件,请用官方功能(把文件拖进或粘贴进输入框)。

截图

dsh-file-upload 实际效果

输入框工具行里的上传图标按钮(用官方 DSH 设计 token,跟随深色/浅色主题);要么把文件路径插入输入框,要么 —— 对支持的图片 —— 把图片放进官方附件栏(自动复用 file_id)。

功能

| 操作 | 效果 |
| 点击上传图标 | 打开系统文件选择器(可多选)→ 智能分流 → 附件栏和/或路径文本 |
| 把文件拖进窗口 | 图片和任意文件类型都接管(不再弹「不支持」提示)→ 智能分流 |
| 把文件夹拖进窗口 | 递归读取整个文件夹 → 在附件库下按原目录结构重建 → 草稿里只放文件夹路径(不展开内容) |
| 图片(PNG/JPEG/WebP/GIF) | ① 归档到附件目录(按天分文件夹)② 加入官方草稿附件栏 → 发送时自动带上 DeepSeek Files API 的 file_id(同一张图复用 id;7 天过期自动重传) |
| 其他任意文件 | 归档到附件库的 files/ 子目录,草稿里插入 <prefix> <path> 文本 |
| 模型不支持图片 | 图片退化为归档 + 路径文本(绝不作为图片块发送,不会 400) |

- 单文件上限:64 MB(DeepSeek Files API 硬限制;本地附件存储默认 20 MB —— 见下方大图片)
- 一切都落到附件库:~/Documents/DSH/Attachments/images/<YYYY-MM-DD>/(图片)或 .../files/<YYYY-MM-DD>/(其他文件)—— 可在设置里配置
- 上传时按钮显示忙碌状态;失败会以中文提示弹出

设置卡片

设置卡片
- 附件目录(默认 ~/Documents/DSH/Attachments,支持 ~)——只用于归档图片
- 路径前缀(默认 [上传文件])——加在草稿里路径前面的文字;清空后发送的就是纯路径
- 图片走官方附件(默认开启)——关闭 = 图片沿用旧的路径文本逻辑
- 把图片归档到附件目录(默认开启)——关闭 = 只走官方附件(省磁盘;官方通道不可用时,图片仍会强制归档)
- 允许公开上传(默认关闭)——关闭 = 同源检查,只放行 localhost(防 CSRF);开启 = 任何来源都能上传,适合公开访问或端口转发场景(比如 ddnsto)。只有你信任所有能访问 DSH 的人,才开启。
- 剪贴板监听(默认关闭,保留官方内置粘贴;可选:关闭 / 仅图片 / 全部文件)——粘贴拦截模式。关闭 = 用官方内置粘贴;仅图片 = 插件接管粘贴的截图和图片(模型不支持视觉时也能用——回退成路径文本);全部文件 = 任何粘贴的文件都接管(归档到文件库 + 草稿里写路径文本)。改完模式保存后立即生效,不用刷新页面。
- 只读显示:当前宿主允许的图片大小上限

大图片(20–64 MB)

DeepSeek 单张图片最大接受 64 MB。DSH 本地附件库默认 20 MB;超过这个大小(且 ≤64 MB)的图片会归档 + 用路径文本引用(模型仍可通过 read_image 读取,读取时同样受附件库上限约束)。

想让大图片也走官方附件通道,把下面这段加到 ~/.dsh/profiles/web/cordis.patch.yml,然后重启 dsh web:

- id: attachment-local
config:
maxImageBytes: 67108864 # 20 MiB → 64 MiB (DeepSeek hard limit)

注意:整行配置会被替换,所以需要的键都要保留;升级后对照 DSH 版本重新检查。不管原图多大,模型看到的始终是 harness 归一化后的版本(≤2048px / ≤4 MiB,每张图 ≤384 token)。

安装

官方 bundle 安装(一行):

dsh plugin --profile web add "github:a903067276-rgb/dsh-file-upload#main"

重启 dsh web(bundle 分层在启动时组装)。需要 PATH 里有 pnpm(dsh plugin 会转发给 pnpm)。

手动挂载(备用方案):见 docs/install.md——软链到 ~/.dsh/profiles/web/node_modules/,再在 ~/.dsh/cordis.patch.yml 里加一条条目(写两条会让插件应用两次,路由重复注册直接崩溃),然后重启。

使用

1. 点上传图标选文件(可多选),或者把文件、文件夹拖到窗口任意位置。
2. 图片(当前模型接受图片时):归档到附件目录,同时显示在官方附件栏——发送后模型就能看到图片(DeepSeek Files API file_id,自动复用)。
3. 模型不接受图片时(或者你关掉了官方通道):归档到 images/,然后把 <prefix> <absolute path> 这样的行写进草稿——例如 [上传文件] /path/to/Attachments/images/xxx.png——你原有的草稿文本会保留。
4. 其他文件:归档到 files/,路径文本写进草稿。按发送,模型通过路径读取文件。
5. 文件夹:拖进来一个,它会在附件库下按原有结构重建;只有文件夹路径(一行)写进草稿。

平台支持

| 平台 | 状态 |
| macOS | ✅ 已完整测试(开发环境) |
| Linux | ✅ 预期可用(纯 Node 实现),未测试 |
| Windows | ⚠️ 预期可用(纯 Node 实现,文件名清理兼容 Windows,路径使用平台分隔符),未测试 |

环境要求

- DSH web >= 0.1.0-rc.7(用 dsh web 运行)
- 版本兼容性(尽力而为——已在 0.1.2-alpha.2 / 0.1.2-rc.1 和 0.1.1-rc.2 上本地验证;在 0.1.0-rc.7/rc.8 上无法完整检查官方图片通道,不保证):
- 维护策略:已停止(2026-09-10)——被 dsh 0.1.5-rc.1 发布的官方附件系统取代。支持的最高 DSH 版本:0.1.2。 不再更新。

| 你的 DSH 版本 | 安装这个 | 说明 |
| 0.1.5 及更新 | ⛔ 不要安装 | 已被官方附件系统取代;这个插件会导致启动失败——升级前请禁用/移除它 |
| 0.1.1-rc.1 – 0.1.2 | main (v0.1.5+) | 最后支持的范围(功能完整,包括官方图片通道) |
| 0.1.0-rc.7 – 0.1.0-rc.8 | main (v0.1.5+) | 可以正常工作;除非会话模型接受图片,否则官方图片通道会自动降级为路径文本。保守回退方案:v0.1.4 — dsh plugin add github:a903067276-rgb/dsh-file-upload#v0.1.4 |
| 0.1.0-rc.6 及更旧 | v0.1.2 — dsh plugin add github:a903067276-rgb/dsh-file-upload#v0.1.2 | 最后一个没有设置卡片的版本(卡片使用 rc.7+ 的键控插槽约定) |

- 不需要额外的 shell:宿主部分为纯 Node(node:fs),任何平台都不需要系统命令。

工作原理

- 宿主端(lib/index.js):POST /api/file-upload/save —— 校验会话和大小,用纯 Node 把 base64 数据写到 <library>/images/<YYYY-MM-DD>/(mode=image)或 <library>/files/<YYYY-MM-DD>/(mode=file);POST /api/file-upload/save-folder —— 接收相对路径加 base64 列表,在 <library>/files/<date>/<timestamp>-<folder>/ 下重建目录树(每段路径都做净化,拒绝 .. 以防目录穿越);GET/POST /api/file-upload/config 读写设置(走官方 settings 服务),并暴露宿主端图片上限,以及当前会话的模型是否接受图片 —— 判断依据与官方 UI 用的是同一套模型路由来源(模型选择投影 → 请求头 → agentDefaultModel,在较老的 DSH 版本上回退到旧的 apiProxy.sessions.models)。
- 客户端(lib/client.js):在 conversation.input.left 位置注册上传图标;捕获阶段的 document 监听器接管文件拖拽,并通过 webkitGetAsEntry 读取拖入的文件夹;路由规则:受支持的图片 + 官方开关打开 + 模型支持 + 未超宿主端上限 → 归档 + conversation.createDraftImages + inputActions.addImages(官方 InputBar 自带的机制)→ 走官方附件栏(不显示路径文本);其他情况一律降级为归档 + 路径文本;超过 64 MB 直接拒绝并给出提示。
- 错误边界:渲染崩溃时降级为一个小小的「⚠ upload component error」标签,而不是把整个输入区卸载掉。

说明

- 附件库只增不减,从不自动清理(我们不会删你的文件)—— 需要时请手动删除。
- 改完插件后,重启 dsh web 才会生效(客户端改动刷新页面即可;宿主端改动需要重启)。

为什么会有这个插件

当前模型不支持图片时,DSH 原生会拒绝拖入的图片。这个插件在模型能看图时,把图片走官方附件通道(于是它们会走 DeepSeek Files API,并复用 file_id),同时留一份你能访问的归档副本方便日后查找;其他情况则降级为纯路径文本 —— 一条纯文本消息,能通过模型的图片检查,任何模型或视觉插件都能用(它绕开了 DSH 原生的图片拒绝,因为降级路径根本不会提交任何图片块)。

许可证

MIT
预览分享卡片长什么样 ↓a903067276-rgb/dsh-file-upload
分享 · DeepSeek Harness Hub
a903067276-rgb/dsh-file-upload

一个上传按钮,还能把文件拖进对话变成本地路径:存到项目 uploads/,路径文本填进输入框,任何视觉工具都能用

这是你的仓库?认领条目

回到顶部