/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */
#content_views .toc,
/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */
#content_views.markdown_views > p:empty:has(+ .toc),
#content_views.markdown_views > .toc + p:empty,
/* 富文本旧版目录标记 */
#content_views.htmledit_views #main-toc,
#content_views.htmledit_views #hr-toc,
#content_views.htmledit_views p[id*=\”-toc\”] {
display: none !important;
}
/* 目录去掉后,紧跟的首个标题不再多出一块上边距 */
#content_views.markdown_views > .toc + h1,
#content_views.markdown_views > .toc + h2,
#content_views.markdown_views > .toc + h3,
#content_views.markdown_views > .toc + h4,
#content_views.markdown_views > .toc + p:empty + h1,
#content_views.markdown_views > .toc + p:empty + h2,
#content_views.markdown_views > .toc + p:empty + h3,
#content_views.markdown_views > .toc + p:empty + h4 {
margin-top: 0 !important;
}
【纯离线硬核部署】DeepSeek Harness 物理隔离一站式部署:免去全局配置,指定本地 pnpm-store + 完美修复 ECONNREFUSED 报错
前言
DeepSeek Harness(简称 dsh)作为 DeepSeek 官方开源的 Agent 运行时框架,功能非常强大。但在政府、金融、内网机房等纯离线(物理断网)环境下通过源码部署时,我们往往会面临两大难题:
本文将分享一种更优雅、不污染全局环境的离线部署方案:通过 –store-dir 显式指定相对路径的本地 Store,并结合修改 pnpm-workspace.yaml 解决安全策略报错,实现 100% 纯本地离线一站式构建与运行!
一、 部署核心思路
我们采用 “外网机打包 Store -> 保持相对路径拷贝 -> 内网机显式命令恢复 -> 本地策略修复” 的全套方案。 项目最终在内网机上的目录结构如下,无需修改任何全局系统变量,做到了纯粹的“绿色版解压即用”:
D:\\my-project\\ (举例目录)
├── pnpm-store/ <– 存放从外网打包带进来的所有依赖包缓存
└── deepseek-harness/ <– DeepSeek Harness 源码根目录
二、 完整离线部署步骤
第一步:【外网联网机】准备源码与本地 Store 依赖
我们在能联网的机器上,提前把项目源码和它所依赖的全部依赖池准备好。
cd deepseek-harness
安装完成后,你会发现 deepseek-harness 的同级目录下多出了一个 pnpm-store 文件夹。
第二步:【内网离线机】核心踩坑与配置文件修复
来到完全断网的内网机,我们把压缩包解压(假设解压到了内网机的某个工作目录下)。
[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
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 运行时平台已经在纯离线状态下完美启动!
三、 首次运行的注意事项
四、 结语
采用 –store-dir=../pnpm-store 配合 –offline –frozen-lockfile,可以实现非常优雅的项目级依赖打包,不需要动内网机全局的 pnpm 配置。再通过 minimumReleaseAge: 0 修复软件安全策略引发的请求拒绝,我们便能完美驾驭 DeepSeek Harness 的源码离线部署。
希望本篇闭环教程能帮到正在进行大模型私有化落地的你! 欢迎在评论区交流讨论你在部署中遇到的其他怪异报错,觉得有用的话,别忘了点赞、收藏加关注!
参考资料与前置致敬:
- CSDN 博客:lrlmarry 的 DeepSeek Harness 部署参考




