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

文件上传助手 HongMing-Huang/dsh-file-upload

DeepSeek Harnessv0.5.4
HongMing-Huang15 天前有提交已提供中文文档扫描:含敏感能力

DeepSeek Harness(dsh)文件消息插件:Claude 风格拖拽上传/回形针上传、内容嗅探、用 Microsoft MarkItDown 把文档转 Markdown(内置 JS 兜底)、文本内联、给智能体用的 read_doc…

47.4/100
综合分
26
GitHub 星标
1,539
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-file-upload
npm 源 · dsh-file-upload 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 15 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

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

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

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

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 13 处,展示前 13 条)
  • 发起网络请求
    lib/client.js:418
    void fetch("/api/upload", {
  • 发起网络请求
    lib/vision.js:29
    const res = await fetch('http://localhost:11434/v1/models', { signal: controller.signal });
  • 读取本地文件
    lib/vision.js:83
    const data = readFileSync(filePath);
  • 读取本地文件
    lib/vision.js:94
    if (statSync(filePath).size > maxBytes) {
  • 发起网络请求
    lib/vision.js:104
    const res = await fetch(target.endpoint, {
  • 写入本地文件
    lib/upload.js:116
    await mkdir(storage.dir, { recursive: true });
  • 写入本地文件
    lib/upload.js:121
    await writeFile(dest, data, { flag: 'wx' });
  • 删除本地文件
    lib/upload.js:135
    await rm(dest, { force: true });
  • 删除本地文件
    lib/upload.js:255
    await rm(meta.path, { force: true });
  • 删除本地文件
    lib/upload.js:280
    await rm(target, { force: true });
  • 读取本地文件
    lib/upload.js:335
    const sessionDirs = await readdir(uploadRoot).catch(() => []);
  • 读取本地文件
    lib/upload.js:338
    const info = await stat(dir).catch(() => null);
  • 删除本地文件递归
    lib/upload.js:342
    await rm(dir, { recursive: true, force: true });
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

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

功能亮点

  • 拖拽与回形针上传
  • 文档转Markdown

README

由 DeepSeek 最新模型翻译生成
dsh-file-upload DeepSeek Harness (dsh) 文件消息插件。 Claude/Codex 风格上传——拖拽(文件与文件夹)、回形针选择、粘贴即传、多文件支持;内容嗅探;文档转 Markdown 全部内置打包(MarkItDown 引擎,20+ 格式,图片 OCR);Codex 风格 @相对路径 引用;文本模型的图片自动讲解;以及供 agent 使用的 read_document 工具。 Awesome DSH Plugin 零配置,安装即用。 所有功能开箱即用,带合理默认——不需要 Python、不需要下载、不需要挑选后端。图片讲解自动发现视觉端点(本地 Ollama → OpenAI 兼容 key,走 DSH 凭据体系)。 功能 - 上传:composer 回形针按钮 + 全局拖拽(拖动文件到窗口任意位置 → "松开以添加文件"遮罩 → 松开即上传),多文件支持。 - 附件卡片:按类型着色的徽标卡(PDF 红 / DOC 蓝 / XLS 绿 / TXT 灰 / ZIP 紫 / JSON 金),显示名称与大小,可移除。 - Codex 风格文件引用:上传的文件在消息中呈现为 @相对路径 引用(与 OpenAI Codex 一致),不会把全文塞进输入框;agent 用 read_document 读取(按需转 Markdown)。
展开完整文档(README 剩余 1 节)
dsh-file-upload

DeepSeek Harness (dsh) 文件消息插件。 Claude/Codex 风格上传——拖拽(文件与文件夹)、回形针选择、粘贴即传、多文件支持;内容嗅探;文档转 Markdown 全部内置打包(MarkItDown 引擎,20+ 格式,图片 OCR);Codex 风格 @相对路径 引用;文本模型的图片自动讲解;以及供 agent 使用的 read_document 工具。

Awesome DSH Plugin

零配置,安装即用。 所有功能开箱即用,带合理默认——不需要 Python、不需要下载、不需要挑选后端。图片讲解自动发现视觉端点(本地 Ollama → OpenAI 兼容 key,走 DSH 凭据体系)。

功能

- 上传:composer 回形针按钮 + 全局拖拽(拖动文件到窗口任意位置 → "松开以添加文件"遮罩 → 松开即上传),多文件支持。
- 附件卡片:按类型着色的徽标卡(PDF 红 / DOC 蓝 / XLS 绿 / TXT 灰 / ZIP 紫 / JSON 金),显示名称与大小,可移除。
- Codex 风格文件引用:上传的文件在消息中呈现为 @相对路径 引用(与 OpenAI Codex 一致),不会把全文塞进输入框;agent 用 read_document 读取(按需转 Markdown)。
- Codex 风格 @ 引用:上传后在输入框输入 @ 即可按相对路径选择已上传文件,以 mention 形式插入。
- 文档转 Markdown(全部内置打包):MarkItDown 引擎随插件发布(微软 MarkItDown 的 TypeScript 移植 markitdown-node):PDF / DOCX / PPTX / XLSX / HTML / CSV / JSON / XML / RSS / Atom / ZIP / Jupyter / 图片 OCR / 音频转写。无需 Python、无需下载、无需配置。
- 图片自动讲解(文本模型也能看懂):上传图片后自动通过视觉发现链生成图片描述("讲解图片"),纯文本的 DeepSeek API 也能基于图片内容推理:显式 visionEndpoint → 本地 Ollama(如 DeepSeek-VL2,零配置)→ DeepSeek 官方视觉 API(deepseek-v4-flash-vision-exp,复用你的 DeepSeek key) → OpenAI 兼容端点(DSH 凭据 key)。多模态模型/视觉桥接则直接读图。
- read_document 工具(供 agent 使用):行号分页(offset/limit)、字节预算 LRU 缓存(文件改动自动失效)、大小预检、走 ctx.fs(继承沙箱与 fs 观察策略)。
- 安全:loopback-only 上传、文件名消毒、会话隔离存储(.dsh-uploads/<sessionId>)、sha256 内容去重、并发限流、TTL 清扫。

安装

dsh plugin --profile web add dsh-file-upload
重启 dsh web

使用

1. 点 composer 工具栏的回形针按钮,或把文件拖到窗口任意位置;
2. 文件显示为附件卡,并只向输入框插入 @相对路径 引用——原始内容绝不直接灌入聊天框;agent 需要内容时用 read_document 读取;
3. agent 用 read_document <路径> 读取文档——按需转 Markdown,支持 offset/limit 翻页。

MarkItDown(全部内置打包,零下载零安装)

MarkItDown 能力已完整打包进插件,装完即用:不需要 Python、不需要 pip、不需要下载、不需要构建脚本授权。

- 内置引擎:微软 MarkItDown 的 TypeScript 移植(markitdown-node)作为正式依赖随包发布,覆盖 20+ 格式——PDF / DOCX / PPTX / XLSX / HTML / CSV / JSON / XML / RSS / Atom / ZIP / Jupyter / 图片 OCR(Tesseract,110+ 语言)/ 音频转写(经 LLM,需模型凭据)。
- 图片:默认经内置引擎 OCR 转文字,无需视觉插件。
- 离线可用:所有解析在本地完成,无网络依赖。

可选增强:如果机器上本来就装有官方 MarkItDown CLI(或通过 markitdownBin 指定),插件会自动优先使用它(额外支持 EPUB 等);没有也完全不影响——内置引擎始终可用。

- id: dsh-file-upload
config:
markitdownBin: /path/to/your/markitdown # 可选;留空 = 纯内置引擎

内置模式启动日志:

[dsh-file-upload] Document → Markdown ready: bundled MarkItDown engine (20+ formats, image OCR) — fully packaged, no downloads, no Python.

图片怎么处理(Codex 风格引用 + 自动讲解)

所有上传文件(含图片)都以干净的 Codex 风格 @相对路径 引用进入输入框——原始内容和绝对路径绝不出现。图片在此基础上按会话模型的图像能力自动补充内容支持(上传时检测):

| 检测到的路由 | 行为 |
| 多模态模型(声明 image 输入,如 GPT-4o / Qwen-VL / Claude / Gemini) | 只插入 @引用;agent 调用 read_image 工具,图片直接进入模型上下文 |
| 已注册 read_image 工具(官方工具或视觉桥,如 dsh-vision-toolkit) | 自动识别——同样走 native 路径(模型自己取图片内容) |
| 纯文本模型(DeepSeek API 即纯文本) | 若能生成描述,消息中在 @引用 前带上 [图片: 名称] 图片讲解: <描述>,纯文本模型立即基于图片内容推理;若未配置任何视觉端点,只插入干净的 @引用(agent 仍可经 read_document OCR) |

视觉发现链(零配置,按序):① 显式 visionEndpoint/visionModel → ② 本地 Ollama(http://localhost:11434,自动选择 VL 模型如 DeepSeek-VL2,图片不出本机)→ ③ DeepSeek 官方视觉 API(deepseek-v4-flash-vision-exp,直接复用你在 DSH 里已配置的 DEEPSEEK_API_KEY,零额外配置)→ ④ OpenAI 标准端点(DSH 凭据 key)。全部不可用时,图片仅以引用形式上传(不插入任何兜底文本)。

DeepSeek 官方现已提供多模态模型:deepseek-v4-flash-vision-exp 支持 JPEG/PNG/GIF/WebP,标准 OpenAI 兼容格式。插件的视觉链会通过你已有的 DeepSeek key 自动发现它——上传图片立即为纯文本模型生成高质量的 [图片: 名称] 图片讲解: …。也可以让 DSH 原生走图片路由:在 deepseek-official provider 的自定义模型里添加 deepseek-v4-flash-vision-exp 并声明 inputModalities: "text", "image",再把会话切到该模型——插件检测到原生图像输入,agent 直接读图。

路由检测与官方 read_image 门控一致(ctx.llm.resolveModelInfo + inputModalities),并叠加对已注册 read_image 工具的实时检测。

配置

所有字段都有合理默认——安装后直接使用,无需修改任何配置。按需调整即可。

| 字段 | 默认 | 说明 |
| uploadMaxBytes | 25165824 (24MB) | 单文件上传上限 |
| allowedExtensions | [] | 扩展名白名单;空 = 全部允许 |
| uploadTtlMs | 604800000 (7天) | 未引用上传文件保留时长 |
| sweepIntervalMs | 3600000 (1h) | 清扫周期;0 = 关闭 |
| maxConcurrentUploads | 4 | 并发上传上限 |
| maxFileBytes | 25165824 | 单次文档读取字节上限 |
| readLimit | 2000 | read_document 单次返回行数上限 |
| sheetRowLimit | 200 | 每个 XLSX sheet 保留行数 |
| maxSheets | 5 | 读取的 sheet 数 |
| cacheEntries | 16 | 解析缓存条目数 |
| cacheMaxBytes | 67108864 (64MB) | 解析缓存字节预算 |
| markitdownBin | '' | 可选 MarkItDown CLI 路径;空 = 自动探测 PATH |
| markitdownTimeoutMs | 120000 | 单次 CLI 调用超时 |
| visionEndpoint | '' | 图片讲解的视觉端点;空 = 自动(本地 Ollama → OpenAI 标准) |
| visionModel | '' | 视觉模型名;空 = 自动 |
| visionApiKeyEnv | OPENAI_API_KEY | 视觉 key 的凭据引用(DSH 凭据体系) |
| visionMaxBytes | 10485760 (10MB) | 发送给视觉端点的图片大小上限 |

开发

pnpm install
pnpm build # tsc(host)+ esbuild(client bundle)
pnpm test # node --test

架构

src/
├── index.ts # 入口:apply + Config schema + 组装 ├── detect.ts # 内容嗅探(不信任扩展名) ├── convert.ts # MarkItDown 引擎 + 可选 CLI 后端 ├── vision.ts # 图片讲解(视觉发现链) ├── upload.ts # 上传路由:loopback/会话/大小/去重/TTL ├── tool.ts # read_document:ctx.fs 读取 + 分页 + LRU 缓存 └── client/ └── index.tsx # 回形针 + 拖拽(文件/文件夹) + 粘贴 + 附件卡片

双面插件:dsh.bundle(host)+ dsh.client(web UI)。无任何官方补丁,全部走官方 seam(ctx.webServer / ctx.tools / ctx.systemPrompt / ctx.sessions / slash/input-insert-text / slash/input-insert-reference)。

安全

- 上传仅限 loopback,并做同源校验。
- 文件名消毒(控制字符、路径分隔符、点段、前导点全部剥离)。
- 存储按会话隔离在工作区下;未知会话返回 403。
- sha256 内容去重、并发限流(超限 429)、TTL 清扫。
- 文本提取按字节嗅探,不信任扩展名;二进制文件只以路径形式交给 agent。

License

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

DeepSeek Harness(dsh)文件消息插件:Claude 风格拖拽上传/回形针上传、内容嗅探、用 Microsoft MarkItDown 把文档转 Markdown(内置 JS 兜底)、文本内联、给智能体用的 read_doc…

回到顶部