🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

zzy-12345678/dsh-file-convert

DeepSeek Harnessspec-screened扫描:中风险在 GitHub 查看 ↗
✓ 可直接安装

为 DeepSeek Harness 打造的本地优先文件转换插件。

自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node ^22.19.0 || >=24.0.0);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/21 · 已提供中文文档

面向 DeepSeek Harness 的本地优先文件转换——图像、PDF、数据、音频/视频及办公文档。7 个工具,26 种转换,无需 API 密钥,无需上传。

综合分
32
GitHub 分
32
用户评分
—
★ Stars
3
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-file-convert
npm 包 dsh-file-convert 已校验归属本仓库,走 npm 安装最省事
信任档位:已验证本站已于 3 天前真实安装成功(L4 · 真实安装)
是什么
dsh 原生插件 · vision
装得上吗
本站已真实安装成功(L4 · 真实安装,非静态推断)
安全吗
本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
还在维护吗
活跃:最近一次提交在 5 天前

档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →

🟢实装验证通过· 2026/9/22
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/23(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过

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

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/20 13:59:51

依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-brand@deepseek-ai/dsh-code-runtime@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm@deepseek-ai/dsh-scope@deepseek-ai/dsh-session@deepseek-ai/dsh-session-projection@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

由 DeepSeek 最新模型翻译生成
dsh-file-convert

为 DeepSeek Harness 打造的本地优先文件转换插件。

在 DSH Agent 会话里直接转换图片、PDF 和数据文件——不需要 API Key,不上传文件,不需要服务器,转换本身零 Token 消耗,文件永远不离开你的电脑。

非官方社区插件。 与 DeepSeek 官方无隶属关系。

兼容性: v0.4.5 起正式适配 DeepSeek Harness 0.1.5-rc.2 及其规范输出工具 API,需要 Node.js ^22.19.0 || >=24.0.0。

为什么做这个

Agent 日常需要各种格式转换:"把这个 PDF 转成图片"、"把这个 JSON 变成 YAML"、"把文件夹里所有 JPG 转成 WebP"。dsh-file-convert 提供七个专用 tool,背后是久经考验的本地库,你只需用自然语言提需求。

- ✅ 本地执行 —— 文件不出机器
- ✅ 不要 API Key、不要服务器、不耗转换 Token
- ✅ 自然语言友好 —— Agent 调 tool,你直接说话
- ✅ 批量转换,返回紧凑的结果摘要
- ✅ 失败必有原因 —— 缺依赖 / 不支持的组合 / 输出已存在,每个错误都说明清楚
- ✅ 图片/PDF/数据零外部依赖 —— npm 预编译包装完即用;音视频只依赖 ffmpeg,缺了会明确提示

当前支持的转换

| 输入 | 可输出 |
| --- | --- |
| PNG、JPG、WEBP | PNG、JPG、WEBP(任意互转) |
| SVG | PNG、JPG、WEBP |
| PDF | PNG、JPG、TXT |
| JSON | YAML、CSV |
| YAML | JSON、CSV |
| DOCX、PPTX、XLSX | PDF |
| PDF | PNG、JPG、TXT、DOCX(实验性);TXT 支持扫描件 OCR |
| MP4 | GIF、MP3 |
| MOV | MP4 |
| WAV | MP3 |
| CSV | JSON、YAML |

共 26 种转换。图片/PDF/数据 npm install 后开箱即用;其余按"装一个工具解锁一类"的节奏,缺什么 list_conversions 都会明说:

- FFmpeg -> 音视频四条。装系统级(处理不可信媒体时优先),或让 Agent 跑 install_media_dependencies——下载固定的现代构建(FFmpeg 6.1.1,约 56 MB,一次性)到插件缓存,sha256 校验,npmmirror 二进制 CDN 优先、GitHub release 自动回退。
- LibreOffice -> DOCX/PPTX/XLSX 转 PDF。winget install TheDocumentFoundation.LibreOffice / brew install --cask libreoffice / apt install libreoffice。
- Ghostscript -> optimize_file 的 PDF 压缩。
- Python + pdf2docx -> 实验性的 PDF 转 DOCX(pip install pdf2docx)。
- Tesseract(可选)-> 更快的扫描件 OCR;不装则用内置 tesseract.js,其语言数据通过 install_ocr_dependencies 显式下载(winget install UB-Mannheim.TesseractOCR,记得勾选 chi_sim 语言组件)。

安装

在 DSH profile 中——三种方式,按省事程度排序:

1. 从 npm 安装(发包后可用)
dsh plugin --profile default add dsh-file-convert

2. 直接从 GitHub 安装(会执行一次构建,需放行)
dsh plugin --profile default add github:zzy-12345678/dsh-file-convert

Git 安装可能需要在 profile 的 pnpm-workspace.yaml 里放行构建步骤:
首次安装提示:pnpm 还可能要求你决定 tesseract.js 的构建脚本是否执行(它只是捐赠提示,跳过毫无影响)。在同一个文件里加上:

allowBuilds:
tesseract.js: false

然后重新执行安装命令即可。

allowBuilds:
dsh-file-convert: true

本地开发安装:

git clone https://github.com/zzy-12345678/dsh-file-convert
cd dsh-file-convert && npm install && npm run build
dsh plugin --profile default add /absolute/path/to/dsh-file-convert

重启 DSH(dsh web 或你的常规入口)后,七个 tool 自动出现。

七个 Tool

convert_file —— 单文件转换

{ "input": "/tmp/report.pdf", "output_format": "png", "dpi": 200 }

- 默认输出到源文件同目录、同名换后缀。
- 多页 PDF 会为每一页输出 -.;pages: "1-3,5" 选择页码(输出保留真实页码,TXT 只拼接所选页)。
- 扫描件 PDF → TXT:ocr: true(可选 ocr_lang,默认 chi_sim+eng)对渲染页面做识别,而不是读文本层。引擎优先本机 Tesseract CLI,其次插件内置的 tesseract.js(语言数据不会随转换隐式下载——先让 Agent 跑 install_ocr_dependencies,约每种语言 10-30 MB)。
- 输出文件已存在时默认拒绝,需显式 overwrite: true。
- 可选参数:output、overwrite、quality(1–100)、dpi(PDF/SVG 光栅化)、pages、ocr、ocr_lang。

batch_convert —— 目录批量转换

{ "input_dir": "/home/me/Pictures", "output_format": "webp" }

- input_format 可按源格式过滤;不传则自动探测所有可转换文件。
- output_dir 默认为 /output。
- 已存在的输出默认跳过(不覆盖),overwrite: true 时替换。

inspect_file —— 转换前先看清楚

基于文件内容(magic bytes)而非扩展名识别格式:

{ "kind": "pdf", "pages": 24, "encrypted": false, "likelyScanned": true, "bytes": 13000000 }

图片返回尺寸/通道数,数据文件返回记录数。likelyScanned: true 提示这可能是扫描件——转 TXT 时加 ocr: true 即可识别。

optimize_file —— 按目标体积压缩

PDF 走 Ghostscript 三档预设(printer/ebook/screen)自动迭代:某档已达标就停,全超则保留最小档并如实告知。需要 Ghostscript(winget install ArtifexSoftware.GhostScript)。

{ "input": "video.mp4", "target_size_mb": 20 }

- MP4/MOV:两遍编码 x264,按目标体积反推视频码率(音频 128k,紧张时降到 64k),输出统一为 MP4,需要 ffmpeg + ffprobe。
- JPG/WEBP:二分搜索能塞进目标体积的最高编码质量;PNG 走调色板压缩。图片不需要任何外部工具。
- 目标体积低于编码物理下限时直接拒绝,并给出可达的最低体积。
- GIF/PDF 压缩暂不支持。

install_media_dependencies —— 一键补齐媒体依赖

下载固定的 FFmpeg 6.1.1 静态构建(ffmpeg + ffprobe 两个 ~28 MB 文件)到插件缓存(~/.dsh-file-convert/bin),校验钉死的 sha256,并真实执行一次二进制确认可用后才报告成功。npmmirror 二进制 CDN 优先,GitHub release 为字节一致的回退源。系统安装的 ffmpeg 优先于缓存。体积可观,调用前请先征得用户同意。

下载钉死 sha256 的 FFmpeg 6.1.1 静态构建(ffmpeg + ffprobe,各 ~28 MB)到插件缓存(~/.dsh-file-convert/bin),并真实执行一次二进制确认可用后才报告成功。npmmirror 二进制 CDN 优先,GitHub release 为字节一致的回退源。系统安装的 ffmpeg 优先于缓存。体积可观,调用前请先征得用户同意。

install_ocr_dependencies —— 一键补齐 OCR 语言包

把 tesseract.js 的语言数据(默认 chi_sim+eng,约每种语言 10-30 MB)下载进插件缓存(~/.dsh-file-convert/tessdata),让 ocr: true 在没有本机 Tesseract 时也能工作。已装本机 Tesseract 或语言包已缓存时跳过。体积可观,调用前请先征得用户同意——转换路径绝不隐式下载语言数据。

list_conversions —— 当前机器的能力清单

列出全部 26 种转换在当前机器上的实时可用状态;某项不可用时,明确指出缺哪个外部工具并给出安装提示。图片/PDF/数据类开箱即用,音视频、Office、PDF 压缩依赖可选工具(媒体依赖还能由 Agent 经 install_media_dependencies 自动补齐)。

插件配置

| 键 | 默认值 | 说明 |
| --- | --- | --- |
| quality | 85 | JPEG/WebP 默认质量(1–100) |
| dpi | 150 | PDF 光栅化默认 DPI |
| timeoutMs | 120000 | 单次转换的协作式超时(毫秒) |
| maxInputMb | 2048 | 拒绝超过此大小(MB)的输入 |
| maxPdfPages | 200 | 整本 PDF 光栅化超过此页数即拒绝;更大的文档请用 pages 选择 |
| maxOutputPixels | 16000000 | 每页光栅化像素(宽 × 高)钳制到此预算 |

限制覆盖范围:maxInputMb 作用于 convert / batch / inspect / optimize 全部入口;maxPdfPages 作用于 PDF 光栅化与文本提取(隐式整本与显式 pages 选择都受限);maxOutputPixels 作用于 PDF 光栅化、OCR 渲染和 SVG 光栅化;timeoutMs 对所有转换真取消(超时会中止底层工作,不只是提前返回)。
| batchMaxFiles | 500 | 每次 batch_convert 最多检查的文件数;超出时会在结果里明确报告跳过了多少,而不是静默截断 |
| outputRoots | [] | 非空时,显式指定的 output 路径必须落在这些目录之内(共享部署建议开启;默认写到输入文件旁的输出不受限) |
| ffmpegPath / ffprobePath | - | ffmpeg 不在 PATH 时(Windows 常见)手动指定二进制路径 |
| sofficePath / ghostscriptPath / pythonPath / tesseractPath | - | 各可选工具的手动路径,优先于自动探测 |

架构

DSH
│
dsh-file-convert
┌──────────────┴──────────────┐
src/index.ts                   src/core/            ← 整个引擎,
(薄胶水层:                     (不 import DSH)       可独立测试
name/inject/apply、                 │
Config schema、               ConversionRouter
7 个 tool 注册)                    │
┌─────────────────┼─────────────────┐
↓                 ↓                 ↓
ImageConverter     PdfConverter      DataConverter
sharp          pdfjs-dist         js-yaml
(npm libvips)  @napi-rs/canvas    csv-parse / stringify
MediaConverter        OfficeConverter
ffmpeg(自动检测)     LibreOffice(自动检测)
PdfToDocxConverter    optimize_file/pdf
python+pdf2docx           Ghostscript(自动检测)

- 声明式转换矩阵:每条转换是 converter 上的一行数据({ from, to }),Router 路由、list_conversions、依赖检查全部由此推导。
- 格式识别:内容优先——二进制 magic(file-type)、SVG 嗅探、JSON 解析(无扩展名文件还会尝试 YAML 文档标记猜测)——扩展名兜底;两者冲突以内容为准并给出 warning。
- 核心与 DSH 解耦:src/core 不依赖 Cordis/DSH,可直接单测、包 CLI、将来包 MCP server。DSH developer preview 的 API 若有破坏性变更,只需改胶水层。
- 依赖管理:外部二进制(FFmpeg/LibreOffice/Poppler)只做检测,绝不自动安装——list_conversions 报告缺失并给出各平台安装提示。接口已就位(BinaryDependency)。

开发

npm install
npm run build     # tsc -> lib/
npm test          # vitest,77 项测试(另有个位数按环境门控的套件)
npm run smoke     # 针对 lib/ 的端到端冒烟测试

本地开发会在 devDependencies 里拉齐 dsh-tools 的 peer 闭包,便于 typecheck 与 vitest 加载 0.1.5 工具注册表。最终用户安装插件时不需要这些——由宿主 profile 提供。

加一种转换 = 在 converter 的能力表里加一行数据并实现它。加一类后端 = 实现 Converter 接口并在 createRouter() 注册。

保真度与安全预期

- 天然有损:PDF→DOCX(实验性)、OCR、office→PDF 都是重建——版式和识别误差不可避免。inspect_file 的 likelyScanned 标记帮你判断何时该用 OCR,结果里会带警告。
- 缓存版 ffmpeg:便捷下载安装的是钉死 sha256 的 FFmpeg 6.1.1 静态构建。处理不可信媒体时,新版系统 FFmpeg 优先——安全敏感场景请优先系统安装。
- 不是沙箱:outputRoots 会解析符号链接,资源上限(maxInputMb、maxPdfPages、maxOutputPixels、batchMaxFiles)能拦住失控任务,但默认"写到输入文件旁"的输出有意不受 roots 约束,且能写文件的 Agent 总能找到地方写。敌对多租户场景请在操作系统层再加隔离。

兼容性

| 组件 | 已验证版本 |
| --- | --- |
| DeepSeek Harness | 0.1.5-rc.2 |
| @deepseek-ai/dsh-tools | 0.1.5-rc.2 |
| @deepseek-ai/cordis | 4.0.2 |
| Node.js | ^22.19.0 \|\| >=24.0.0(CI 覆盖 22) |

DSH 仍处于 developer preview,API 可能变化——插件把 DSH 依赖隔离在薄胶水层,适配成本被刻意压低。

Roadmap

- V0.2 —— 音视频(FFmpeg) 已发布:MP4→GIF/MP3、WAV→MP3、MOV→MP4,以及按目标体积两遍编码的 optimize_file。
- V0.3 —— Office + PDF 工具链 已发布:LibreOffice 解锁 DOCX/PPTX/XLSX→PDF,python pdf2docx 支持实验性 PDF→DOCX,Ghostscript 支持 PDF 压缩;依赖支持按需下载并默认走国内镜像。
- V0.4 —— OCR(Tesseract) 已发布:PDF→TXT 支持 ocr: true(可选 ocr_lang),Tesseract CLI 优先 + tesseract.js 兜底,语言数据经 install_ocr_dependencies 显式下载。
- 更远:扫描件 OCR → DOCX、转换链(PPTX→PDF→PNG)、optimize_file 视频降分辨率、图片缩放/旋转。

许可

MIT。dsh-file-convert 不分发任何外部二进制;运行时依赖库(sharp、pdfjs-dist、@napi-rs/canvas、js-yaml、csv)由用户从 npm 安装,各归其许可。

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群