DeepSeek Harness 纯离线/物理隔离部署指南:打包 pnpm store 依赖 + 完美修复 ECONNREFUSED 报错
【纯离线硬核部署】DeepSeek Harness 物理隔离一站式部署:免去全局配置,指定本地 pnpm-store + 完美修复 ECONNREFUSED 报错
前言
DeepSeek Harness(简称 dsh)作为 DeepSeek 官方开源的 Agent 运行时框架,功能非常强大。但在政府、金融、内网机房等纯离线(物理断网)环境下通过源码部署时,我们往往会面临两大难题:
- 离线状态下,如何让项目精准读取我们准备好的本地依赖池,而不用去动系统的全局路径?
- 即使配置了本地依赖,pnpm 10+ 依然会疯狂刷出
[WARN] GET http://localhost:4873/... error (ECONNREFUSED)的发布时间校验报错,导致安装直接挂起。
本文将分享一种更优雅、不污染全局环境的离线部署方案:通过 --store-dir 显式指定相对路径的本地 Store,并结合修改 pnpm-workspace.yaml 解决安全策略报错,实现 100% 纯本地离线一站式构建与运行!
一、 部署核心思路
我们采用 “外网机打包 Store -> 保持相对路径拷贝 -> 内网机显式命令恢复 -> 本地策略修复” 的全套方案。
项目最终在内网机上的目录结构如下,无需修改任何全局系统变量,做到了纯粹的“绿色版解压即用”:
D:\my-project\ (举例目录)
├── pnpm-store/ <-- 存放从外网打包带进来的所有依赖包缓存
└── deepseek-harness/ <-- DeepSeek Harness 源码根目录
二、 完整离线部署步骤
第一步:【外网联网机】准备源码与本地 Store 依赖
我们在能联网的机器上,提前把项目源码和它所依赖的全部依赖池准备好。
- 克隆官方源码:
git clone cd deepseek-harness - 下载依赖并生成本地 Store:
为了不污染全局,我们直接在外网机执行安装,并通过--store-dir将依赖池指定下载到项目同级的本地目录中:
安装完成后,你会发现pnpm install --store-dir=../pnpm-storedeepseek-harness的同级目录下多出了一个pnpm-store文件夹。 - 打包带走:将整个父文件夹(包含
deepseek-harness和pnpm-store)一起压缩,拷贝到 U 盘,准备带入内网。
第二步:【内网离线机】核心踩坑与配置文件修复
来到完全断网的内网机,我们把压缩包解压(假设解压到了内网机的某个工作目录下)。
- 打开终端,进入
deepseek-harness源码根目录。 - 按照标准的离线严格安装逻辑,我们尝试执行以下命令:
pnpm install --offline --frozen-lockfile --store-dir=../pnpm-store - 开始爆红/卡死报错:此时,由于没有外网,控制台开始疯狂刷出如下错误:
[WARN] GET http://localhost:4873/@agentclientprotocol/sdk/-/sdk-0.25.1.tgz error (ECONNREFUSED). Will retry in 10 seconds. 2 retries left. [WARN] GET http://localhost:4873/@eslint/plugin-kit/-/plugin-kit-0.7.2.tgz error (ECONNREFUSED). Will retry in 10 seconds. 2 retries left. [WARN] GET http://localhost:4873/@types/json-schema/-/json-schema-7.0.15.tgz error (ECONNREFUSED). Will retry in 10 seconds. 2 retries left. ...
🛠️ 报错深度原因剖析:
这是因为 pnpm 10及以上版本 默认开启了一项叫 minimum-release-age(最低发布年龄限制)的安全策略。pnpm 为了防止用户误装网上刚发布、可能带毒的新包,每次安装即使指定了 --offline,也会尝试联网校验包的发布时间元数据。
但在纯离线/物理隔离环境下,这种校验请求必定会超时并报出 ECONNREFUSED(拒绝连接)并无限重试。
🛠️ 完美解决办法:
我们需要明确告诉 pnpm 离线安装时关闭该时间校验限制。
- 打开项目根目录下的
pnpm-workspace.yaml文件。 - 在文件末尾添加一行关键配置:
minimumReleaseAge: 0即可:
# pnpm-workspace.yaml
packages:
- 'packages/*'
- 'apps/*'
# 💡 关键修复配置:关闭包的发布时间安全校验,防止物理离线时网络请求被拒
minimumReleaseAge: 0
保存文件。
第三步:【内网离线机】重新执行离线安装
再次在 deepseek-harness 目录下执行你指定本地 Store 路径的硬核命令:
pnpm install --offline --frozen-lockfile --store-dir=../pnpm-store
此时你会发现之前的 [WARN] 报错瞬间消失!pnpm 顺着你指定的相对路径,极其顺畅地从 ../pnpm-store 里秒级提取依赖并成功完成安装。
第四步:本地项目编译构建
由于 DeepSeek Harness 采用多模块工作区架构,依赖装好后必须进行本地编译,否则前端系统无法加载。
在根目录下执行:
pnpm run build
等待进度条走完,看到所有子模块(Packages)打包构建成功的提示。
第五步:离线启动 Web 界面
最后,输入 Harness 专属的 Web 服务启动命令:
pnpm dsh web
当终端输出 dsh web: http://127.0.0.1:3080 时,说明你的 DeepSeek 本地 Agent 运行时平台已经在纯离线状态下完美启动!
三、 首次运行的注意事项
- 工作区隔离:首次访问浏览器界面时,左上角的【选择工作区】务必指定一个全新的空文件夹。因为本地 Agent 拥有操作系统 Shell 的高权限,选择空文件夹能绝对保障你的机房系统安全。
- 大模型接入:在 Settings -> Models 中,如果你处于纯内网,可直接填入内网本地搭建好的 Ollama(兼容 OpenAI 格式)的本地 IP 服务地址和模型 ID。
四、 结语
采用 --store-dir=../pnpm-store 配合 --offline --frozen-lockfile,可以实现非常优雅的项目级依赖打包,不需要动内网机全局的 pnpm 配置。再通过 minimumReleaseAge: 0 修复软件安全策略引发的请求拒绝,我们便能完美驾驭 DeepSeek Harness 的源码离线部署。
希望本篇闭环教程能帮到正在进行大模型私有化落地的你!
欢迎在评论区交流讨论你在部署中遇到的其他怪异报错,觉得有用的话,别忘了点赞、收藏加关注!
参考资料与前置致敬:
- CSDN 博客:lrlmarry 的 DeepSeek Harness 部署参考
更多推荐
所有评论(0)