OpenClaw安装之(一)公司电脑下的企业防火墙的安装避坑指南:彻底解决 `libsignal-node` GitHub 下载失败问题 git 源码安装指南

OpenClaw 公司电脑下的企业防火墙的安装 pnpm install 的避坑指南:彻底解决 libsignal-node GitHub 下载失败问题

适用场景 :在 Windows 环境下安装 OpenClaw 时,因网络策略、安全软件或企业防火墙导致 pnpm install 卡在 @whiskeysockets/libsignal-node 的 GitHub tarball 下载环节。


pnpm build:OpenClaw 安装之(二)指南与避坑实录:从 pnpm install 到 pnpm build 以及成功运行进入OpenClaw界面

OpenClaw 安装之(三)DeepSeek模型接入配置和详细配置参数

背景:官方的 Powershell 快速安装代码无法正常安装

看了好多安装教程,均默认了 wr -useb https://clawd.org.cn/install.ps1 | iex 能正确安装。但是不是的,有些时候安装不了。

如无特殊说明,以下所有代码执行环境均为 window 系统下的powershell

重要:当前文章解决 pnpm install的问题。
要完全安装启动,请参考下一篇

基础环境配置:

node 或者 git 没有的先去找安装教程,待正确安装和配置后再来)

1)Node环境

PS D:\Program\OpenClaw> node -v

v24.13.0

PS D:\Program\OpenClaw> npm -v

11.9.0

PS D:\Program\OpenClaw> pnpm -version

10.29.2

2)git环境

支持 git 克隆

一、问题现象

1)快速安装失败

通过官方的快速安装代码 iwr -useb https://clawd.org.cn/install.ps1 | iex 一直报错:

powershell 复制代码
> iwr -useb https://clawd.org.cn/install.ps1 | iex
GET [https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67](https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67) error (ECONNREFUSED)  
...  
ECONNREFUSED  request to ... failed, reason: connect ECONNREFUSED 20.205.243.165:443

2)git 源码安装

https://github.com/openclaw/openclaw 项目 git 克隆到本地。

我在 D:\Program\OpenClaw 文件夹把项目克隆下来,因此源码根目录在 D:\Program\OpenClaw\openclaw

执行 pnpm install 时,反复出现以下错误:

powershell 复制代码
> cd D:\Program\OpenClaw\openclaw
> pnpm install
GET [https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67](https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67) error (ECONNREFUSED)  
...  
ECONNREFUSED  request to ... failed, reason: connect ECONNREFUSED 20.205.243.165:443

但通过 PowerShell 可以正常下载该 URL:

powershell 复制代码
Invoke-WebRequest -Uri "https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67" -OutFile test.tar.gz  # ✅ 成功

而 Node.js的node test-github.cjs发现执行失败:

js 复制代码
// 将文件保存成:test-github.cjs,使用 node test-github.cjs 发现执行失败,无法连接文件。
const https = require('https');

console.log('📡 尝试连接 GitHub codeload...');

const req = https.get('https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67', (res) => {
  console.log('✅ 成功!状态码:', res.statusCode);
  console.log('✅ 正在接收数据...');
  let bytes = 0;
  res.on('data', (chunk) => {
    bytes += chunk.length;
    if (bytes > 10240) { // 收到 10KB 就停止
      console.log(`✅ 已接收 ${bytes} 字节,测试成功`);
      res.destroy();
    }
  });
  res.on('end', () => {
    console.log('✅ 连接正常关闭');
  });
});

req.on('error', (e) => {
  console.error('❌ 连接失败:', e.message);
  console.error('错误代码:', e.code);
});

req.setTimeout(10000, () => {
  console.error('❌ 超时');
  req.destroy();
});

🔍 初步结论

  • 网络本身可达(PowerShell 能下)
  • Node.js 进程被本地安全软件(如火绒、Windows Defender)拦截
  • 不是代理或 DNS 问题

二、实测解决方案:Patch Baileys 源码,彻底移除 GitHub 依赖

✅ 核心思想

  • 不依赖 overrides
  • 不依赖 lockfile hack
  • 直接修改 baileyspackage.json,将其对 libsignal 的依赖从 GitHub URL 改为版本号
  • file: 协议本地引用 patched 包

步骤详解

若网页下载不了可以直接下载文章附件,解压至D:\Program\OpenClaw\openclaw。下载绑定资源后,可跳过:Step1,Step2,Step3,Step4。

Step 1:下载 Baileys 的 npm tarball
powershell 复制代码
Invoke-WebRequest -Uri "https://registry.npmjs.org/@whiskeysockets/baileys/-/baileys-7.0.0-rc.9.tgz" -OutFile baileys.tgz

💡 从 npm registry 下载,而非 GitHub,通常不受拦截。

网页下载不了可以直接下载文章附件,解压至D:\Program\OpenClaw\openclaw。下载后绑定资源后,Step1,Step2,Step3,Step4无需再操作。

Step 2:解压到本地目录
  • 使用 7-Zip 或 PowerShell 解压:
powershell 复制代码
    mkdir patched-baileys
    tar -xzf baileys.tgz -C patched-baileys --strip-components=1
  • 确保 patched-baileys/package.json 存在(D:\Program\OpenClaw\openclaw\patched-baileys\package.json
Step 3:修改 libsignal 依赖声明

编辑 patched-baileys/package.json

将原 "libsignal": "xxxx" 修改为:"libsignal": "^2.0.1"

具体版本号通过 D:\Program\OpenClaw\openclaw\local_deps\libsignal-node\package.json > "Version"的值来定(Step 4下载文件后会出现)

diff 复制代码
{
  "name": "@whiskeysockets/baileys",
  "version": "7.0.0-rc.9",
  "dependencies": {
    ...
-   "libsignal": "@whiskeysockets/libsignal-node@https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67",
+   "libsignal": "^2.0.1"
  }
}

⚠️ 注意:libsignalbaileys 内部对 @whiskeysockets/libsignal-node 的别名,这是合法的

Step 4:准备本地 libsignal-node

下载 libsignal-node 。并将其解压至 D:\Program\OpenClaw\openclaw\local_deps

powershell 复制代码
# powershell 执行

# 1. 切换到指定工作目录
cd D:\Program\OpenClaw\openclaw

# 2. 下载指定的tar.gz压缩包(覆盖已存在的同名文件)
Invoke-WebRequest -Uri "https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67" -OutFile test.tar.gz -UseBasicParsing

# 3. 创建父级目录local_deps(如果不存在则创建,存在则不报错)
New-Item -ItemType Directory -Path "local_deps" -Force

# 4. 解压tar.gz压缩包到当前目录(Windows 10/11自带tar命令,兼容tar.gz)
# 解压后会生成目录:libsignal-node-1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67
tar -xf test.tar.gz

# 5. 将解压后的长名称目录重命名为libsignal-node
# 先检查目录是否存在,避免重命名失败
if (Test-Path "libsignal-node-1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67") {
    Rename-Item -Path "libsignal-node-1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67" -NewName "libsignal-node" -Force
    # 6. (可选)将重命名后的目录移动到local_deps(作为父级目录)
    # 如果不需要移动,注释掉下面这行即可
    Move-Item -Path "libsignal-node" -Destination "local_deps/" -Force
} else {
    Write-Host "错误:解压后的目录不存在,请检查下载或解压是否成功!"
}

# (可选)删除下载的压缩包,节省空间
Remove-Item -Path "test.tar.gz" -Force

若下载不了,请下载附件直接解压至D:\Program\OpenClaw\openclaw

确保 local_deps/libsignal-node/package.json 内容正确:

json 复制代码
{
  "name": "@whiskeysockets/libsignal-node",
  "version": "2.0.1",
  ...
}
Step 5:修改根 package.json

D:\Program\OpenClaw\openclaw\package.json

json 复制代码
{ ...,
  "pnpm": {
    "overrides": {
	    // 新增以下两行,需要删除当前行注释
	    "@whiskeysockets/baileys": "file:./patched-baileys",
	    "@whiskeysockets/libsignal-node": "file:./local_deps/libsignal-node"
    }
  }
  ,...,
}
Step 6:清理并安装
powershell 复制代码
# 清理旧状态
Get-ChildItem -Recurse -Filter node_modules | Remove-Item -Recurse -Force
Get-ChildItem -Recurse -Filter pnpm-lock.yaml | Remove-Item
# 安装
pnpm install

✅ 最终结果

powershell 复制代码
PS D:\Program\OpenClaw\openclaw> pnpm install
Scope: all 34 workspace projects
 WARN  Tarball download average speed 26 KiB/s (size 31 KiB) is below 50 KiB/s: https://registry.npmjs.org/hookified/-/hookified-1.15.1.tgz (GET)
 WARN  11 deprecated subdependencies found: are-we-there-yet@3.0.1, form-data@2.5.4, gauge@4.0.4, glob@10.5.0, har-validator@5.1.5, has-own@1.0.1, node-domexception@1.0.0, npmlog@6.0.2, request-promise@4.2.6, request@2.88.2, uuid@3.4.0
Packages: +967
.....
.....
+ typescript 5.9.3
+ vitest 4.0.18

╭ Warning ───────────────────────────────────────────────────────────────────────────────────╮
│                                                                                            │
│   Ignored build scripts: core-js.                                                          │
│   Run "pnpm approve-builds" to pick which dependencies should be allowed to run scripts.   │
│                                                                                            │
╰────────────────────────────────────────────────────────────────────────────────────────────╯

Done in 49.2s using pnpm v10.23.0
  • 所有 34 个 workspace 项目成功安装
  • 无任何 GitHub 网络请求
  • baileys 正常加载本地 libsignal-node
  • 后续开发可完全离线进行

接下来:OpenClaw 安装之(二)指南与避坑实录:从 pnpm install 到 pnpm build 以及成功运行进入OpenClaw界面


附录:根目录package.json的主要改动后的代码

D:\Program\OpenClaw\openclaw\package.json

json 复制代码
{
	....,
    "pnpm":  {
			"minimumReleaseAge":  2880,
   		"overrides":  {
           "fast-xml-parser":  "5.3.4",
           "form-data":  "2.5.4",
           "@hono/node-server\u003ehono":  "4.11.8",
           "hono":  "4.11.8",
           "qs":  "6.14.1",
           "@sinclair/typebox":  "0.34.48",
           "tar":  "7.5.7",
           "tough-cookie":  "4.1.3",
					"@whiskeysockets/baileys": "file:./patched-baileys",
           "@whiskeysockets/libsignal-node": "file:./local_deps/libsignal-node"
       },
   		"onlyBuiltDependencies":  [
           "@lydell/node-pty",
           "@matrix-org/matrix-sdk-crypto-nodejs",
           "@napi-rs/canvas",
           "@whiskeysockets/baileys",
           "authenticate-pam",
           "esbuild",
           "node-llama-cpp",
           "protobufjs",
           "sharp"
       ]
	}
}
相关推荐
mCell4 小时前
如何零成本搭建个人站点
前端·程序员·github
海绵宝宝de派小星6 小时前
模型规模与涌现能力(Emergent Abilities)
ai
AlfredZhao6 小时前
RAG 时代的“破壁人”:为什么你的大模型应用急需 Docling?
ai·rag·docling
Elastic 中国社区官方博客7 小时前
如何防御你的 RAG 系统免受上下文投毒攻击
大数据·运维·人工智能·elasticsearch·搜索引擎·ai·全文检索
青及笄8 小时前
node_moudle无权限
node.js·node
Elastic 中国社区官方博客9 小时前
Elasticsearch:交易搜索 - AI Agent builder
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索
quchen52810 小时前
第六章:测试、调试与性能监控
ai·性能优化
艺杯羹10 小时前
Git版本控制深度复盘:从入门到精通的完整指南
git·wpf·版本控制·git学习·git复盘
我怎么又饿了呀10 小时前
如何上传本地文件到github仓库中入门教学
github
Jingzhou10 小时前
基于 AKShare 金融数据做了一个轻量级的金融研究 Agent
后端·github