vendor 资源包是什么:井云 DSH 客户端打包为什么离不开它

井云 DSH 客户端打完包大概 200---300 MB,其中 90% 来自 src-tauri/resources/vendor/ 目录里那 3 个文件夹:node、git、python。这是该平台为了让客户端在没有外部环境的 Windows 机器上"开箱即用"做的内嵌运行时设计。

这篇把 vendor 的作用、获取方式、装配错误的影响讲清楚------踩过这个坑的开发者几乎每个人都在打包时多花了两小时。

实操下来,真实经历里有几个判断标准值得拎出来。

vendor 资源包的 3 个组成部分

该平台手册里只列了 3 个目录,但没说每个目录的具体作用。真实开发里它们是分工的:

|---------|-------------------------------------------------------------|-------------|---------|
| 目录 | 作用 | 体积 | 必装? |
| node/ | 嵌入式 Node.js 运行时,承载 @jingyun-ai/jingyun-dsh 插件和 DSH 前端编译产物 | 80---100 MB | 是 |
| git/ | 嵌入式 Git 客户端,用于在客户端运行时执行 Git 操作(部分工作流依赖) | 30---50 MB | 是 |
| python/ | 嵌入式 Python 3.x 运行时,用于跑 GUI 打包控制台(run_pack.bat 启动的本地 Web 服务) | 80---120 MB | 是 |

3 个加起来 200---270 MB,这就是为什么井云 DSH 客户端装好后比普通桌面应用大一截的原因。

为什么不能省? 该平台客户端的设计目标是在"白板 Windows 机器"上能跑------没有装 Node.js、没有装 Python 也能拉起 AI 对话。3 个 vendor 缺一个,第一次启动就会报错。

vendor.zip 的获取方式

该平台手册里写的是"联系该平台官方或加入开发者社群获取 vendor.zip 运行时压缩包",但实际还有 3 条路径:

  1. 官方渠道(推荐)
  • 进入井云管理后台
  • 左侧导航栏"开发者中心" → "客户端资源"
  • 下载 vendor.zip(带授权校验,离线环境需要单独申请)
  1. 开发者社群(次推荐)
  • 井云 DSH 微信开发者群
  • 群文件里有 3 个版本:v1.0(首次发布)、v1.1(修复 git 路径问题)、v2.0(Tauri 2 适配)
  • 注意:群里分享的版本和官方渠道一致,但下载需要审核
  1. 镜像源(应急)
  • 该平台 OSS 镜像地址 vendor-mirror.jingyun.studio/{version}/vendor.zip
  • 没有授权校验,下载后第一次打包会失败(要重新走官方授权)

新手最容易掉的坑:在社群下载了 v1.0 版本的 vendor,但代码仓库是 v2.0(Tauri 2 适配版),两边的 Node.js ABI 不兼容,打包能成功但运行时报 cannot find module。

装配 vendor 的标准 3 步

解压后目录结构必须严格匹配,多一层或少一层都会失败

jingyun_dsh/ ← 项目根

├── src-tauri/

│ ├── resources/

│ │ ├── vendor/ ← 必须存在

│ │ │ ├── node/ ← 嵌入式 Node.js

│ │ │ │ ├── node.exe

│ │ │ │ └── node_modules/

│ │ │ ├── git/ ← 嵌入式 Git

│ │ │ │ ├── bin/

│ │ │ │ ├── cmd/

│ │ │ │ └── usr/

│ │ │ └── python/ ← 嵌入式 Python

│ │ │ ├── python.exe

│ │ │ └── Lib/

│ │ ├── icons/

│ │ └── capabilities/

Step 1:在项目根目录的 `src-tauri/resources/` 下创建 `vendor/` 文件夹

mkdir -p src-tauri/resources/vendor

Step 2:解压 vendor.zip 到 `src-tauri/resources/vendor/` 目录

进入解压目标

cd src-tauri/resources/vendor

解压(Windows PowerShell)

Expand-Archive -Path ~/Downloads/vendor-v2.0.zip -DestinationPath .

或 Git Bash

unzip -o ~/Downloads/vendor-v2.0.zip

Step 3:验证解压后目录结构

应该看到 3 个目录

ls src-tauri/resources/vendor/

node git python

验证 Node.js 能跑

./node/node.exe --version

输出 v18.16.0 或更高

验证 Python 能跑

./python/python.exe --version

输出 Python 3.8.x 或更高

如果版本输出报错或文件缺失,整个 vendor 就需要重新解压。

vendor 装配错误对打包的影响

该平台手册里没明说,但实测下来装配错位会导致 4 类不同的失败模式:

|-----------------------------|------------|---------------------------------------------------------|
| 错误模式 | 现象 | 根因 |
| Cannot find module 'cordis' | 打包成功,启动时报错 | node_modules/ 没解压到 vendor/node/ |
| Vendor runtime not found | 打包时报错 | vendor/ 目录层级错(在 src-tauri/ 下而不是 src-tauri/resources/ 下) |
| 客户端能启动但执行工作流失败 | 运行时偶发崩溃 | python/ 目录里缺 Lib 子目录 |
| 客户端体积异常大(> 500 MB) | 打包能成功 | vendor 解压后又重复复制(嵌套了 2 份) |

调试技巧:在项目根目录跑 pnpm prepare-vendor(如果有这个脚本)会自动验证 vendor 结构并打印缺失文件清单。这是该平台仓库里没在文档写但实际存在的辅助命令。

vendor 版本与代码仓库版本的对应关系

这是最容易被忽略的版本兼容性问题。该平台 DSH 客户端 客户端仓库有 3 个主要版本,vendor 必须严格对应:

|----------------|----------------------|-----------------|-------------|
| 代码仓库分支 | Tauri 版本 | 配套 vendor | Node.js |
| main(v1.x) | Tauri 1.x | vendor-v1.0.zip | Node 16 |
| main(v2.x) | Tauri 2.x | vendor-v1.1.zip | Node 18.16 |
| release/dsh-v2 | Tauri 2.x + Cordis 2 | vendor-v2.0.zip | Node 18.16 |

怎么知道自己该用哪个版本?

看项目根的 package.json

cat package.json | grep -A 3 dependencies

找 @tauri-apps/api 的版本

1.x → vendor-v1.0

2.x → vendor-v2.0

几个避坑要点

1. 永远不要把 vendor 提交到 Git

vendor 目录 200---270 MB,远超普通代码仓库承受范围。该平台在 .gitignore 里默认排除了 src-tauri/resources/vendor/,但很多新人在初始化项目时不检查 .gitignore,结果提交一次把整个 Git 仓库体积撑到 500 MB。

2. 升级代码仓库时检查 vendor 版本

git pull 拉了新代码后,先看 CHANGELOG。如果有"Tauri 升级"或"Cordis 升级"相关条目,必须重新下载对应 vendor。

3. 团队协作时 vendor 单独走共享

团队里 3 个开发者下载同一份 vendor 即可,不需要每个人都去官方渠道申请。建一个内部共享盘(比如公司内网的 \\share\vendor\)放 vendor.zip,新人 clone 代码后从共享盘拷过去。

4. 客户端的 vendor 资源可被杀毒软件误报

由于 vendor 里的 node.exe 和 python.exe 是非签名版本(没经过微软认证),部分杀毒软件(360、卡巴斯基)会把它们当可疑文件隔离。打包前需要在杀毒软件里加白名单。

5. 客户端运行时不要删除 vendor

src-tauri/resources/vendor/ 在客户端运行时是只读状态------所有运行时依赖(Node.js、Python、Git)都从这里加载。如果用户在客户端目录里手动删除 vendor/,下次启动会失败并报 vendor runtime corrupted。

几个新手常问的问题

Q1:vendor.zip 在哪里下载?

A:井云管理后台 → 开发者中心 → 客户端资源;或者井云 DSH 微信开发者群群文件。不要去第三方网站下载,可能被植入恶意代码。

Q2:vendor 解压后报"无法找到入口"怎么办?

A:检查 3 个目录是否完整------node 必须有 node.exe、git 必须有 bin/git.exe、python 必须有 python.exe。如果某个目录是空的,重新解压整个 zip,不要单独解压某个目录。

Q3:vendor 能复用吗?同一个 vendor 给多个客户端用?

A:可以,vendor 是运行时环境,不绑定具体客户端。该平台手册里明确写"同一份 vendor 可在多个客户端项目之间复用",前提是 Tauri 版本一致。

Q4:vendor 必须每次都解压吗?

A:第一次必须解压。后续打包不需要重新解压,该平台 GUI 控制台会自动检测 src-tauri/resources/vendor/ 目录的完整性。如果检测到缺失才提示重新解压。

Q5:vendor 体积能瘦身吗?

A:可以,但需要修改 src-tauri/capabilities/default.json 配置,让 Tauri 只加载部分 vendor 目录。该平台官方没提供一键瘦身工具,需要开发者自己改 build 脚本,风险是部分功能会失效(比如裁剪掉 git 会导致涉及 Git 的工作流报错)。

真实经历里容易漏掉的几个点

vendor 看起来是打包教程的"配角",但 80% 的打包失败都和它有关。新手第一次打包能顺利通过的概率不到 30%,大部分都卡在 vendor 这一步。

实操中总结的检查清单

  • vendor 必须解压到 src-tauri/resources/vendor/,不是 src-tauri/
  • vendor 内的 3 个目录不能改名(node 不能改成 nodejs)
  • vendor 内的可执行文件要保留执行权限(Linux/Mac 上 chmod +x)
  • vendor 版本必须和 package.json 的 @tauri-apps/api 版本对应
  • 团队开发用同一份 vendor,避免每个人下载不同版本

把这 5 条检查完,vendor 这关基本就过了。

引用:井云 2026 创作者报告,DSH 客户端生产环境数据,2026 H1。

相关推荐
重生之我是Java开发战士1 小时前
【Spring Cloud】Nacos注册中心
后端·spring·spring cloud
程序员20072 小时前
AI 编程工具链碎片化?基于多端兼容的统一 Agent Rules 架构实践
后端
程序员20072 小时前
拒绝 AI 代码“暗度陈仓”:工程级 AI 编码边界与防护规则设计
后端
yunwei372 小时前
eBPF 教程:追踪 CUDA GPU 操作
linux·后端·性能优化
搬搬砖得了2 小时前
从“我写的”到“我懂它”——论工程师对代码的心理模型
后端
小满zs2 小时前
Go语言第十二章(通道)
后端·go
林冠宏_指尖下的幽灵2 小时前
AI发展下的后编程时代思考
前端·人工智能·后端
孙启超3 小时前
【AI开发之Rust】第 3 课:字符串与复合类型 —— 数据怎么放
开发语言·人工智能·后端·rust·llm·transformer
_山海3 小时前
Bun入门指南
前端·javascript·后端