一、设置代理上网
⚠️ 请将 7890 替换为你本地代理软件的实际 HTTP 端口(这里不能用HTTP_PROXY和HTTPS_PROXY只能小写,否则代理不通,不知道为什么)
export http_proxy="http://127.0.0.1:7890"
export https_proxy="http://127.0.0.1:7890"
告诉 npm 客户端也走这个代理通道
npm config set proxy http://127.0.0.1:7890
npm config set https-proxy http://127.0.0.1:7890
3. 顺便拉长超时容忍度到 5 分钟,防止下载大包时断流
npm config set fetch-timeout 300000
如果你的代理在宿主机上,把 127.0.0.1 换成宿主机的内网 IP,例如:
export https_proxy="http://192.168.x.x:7890"
二、延长 NPM / NPX 的超时等待时间
NPM 默认的超时时间非常严格(15秒)。在下载较复杂的智能体插件(如 capability-evolver)时,如果网络稍有延迟就会直接熔断。我们可以强行把超时时间放大到 5分钟(300000毫秒):
Bash
将全局超时时间修改为 5 分钟
npm config set fetch-timeout 300000
npm config set fetch-retry-mintimeout 300000
npm config set fetch-retry-maxtimeout 300000
三、临时借用国内镜像源下载
如果设置了代理依然由于 TLS 证书或握手死锁导致超时,由于你只是想安装 clawhub 上的这个工具,我们可以临时将源切回国内腾讯云或淘宝镜像,让它快速把包扒下来:
Bash
1. 临时设置换源
使用官方源
npm config set registry https://registry.npmjs.org/
使用国内源
npm config set registry https://registry.npmmirror.com/
2. 再次尝试安装
npx clawhub@latest install autogame-17/capability-evolver
注意:安装成功后,如果你需要使用海外原生大模型组件,记得用 npm config set registry https://registry.npmjs.org/ 切回官方源。
如何恢复设置?
当你的任务顺利完成,不再需要通过代理访问外网,或者更换了网络环境时,你可以非常简单地把 npm 的代理通道彻底清除掉,让它恢复到默认的直连状态。
在你的 Kali 终端中,依次执行以下命令即可:
第一步:一键删除 npm 中的代理配置
执行 delete 命令可以把写入到 .npmrc 配置文件里的代理项完全拔除:
Bash
删除 HTTP 代理配置
npm config delete proxy
删除 HTTPS 代理配置
npm config delete https-proxy
第二步:清除终端窗口的局部环境变量
如果你之前在终端里还运行过 export http_proxy=...,这个变量在当前终端窗口关闭前会一直生效。你可以用 unset 强行注销它们:
Bash
注销终端临时的代理环境变量
unset http_proxy
unset https_proxy
(当然,如果你直接把当前的黑窗口/终端关闭,新开一个终端,这些 export 的变量也会自动消失)。
第三步:验证是否恢复成功
你可以运行以下命令来核对,如果返回的结果是 undefined 或者 null(空白),说明已经完美恢复,npm 重新回到了纯净的本地直连状态:
Bash
npm config get proxy
npm config get https-proxy
如果还是不行的话?
方案一:绕过 npx,直接全局安装 clawhub 客户端(最推荐)
很多时候 npx 会在内存里频繁初始化临时的包,从而导致代理环境变量丢失。我们直接把 clawhub 实体安装到 Kali 系统里,用它的原生命令去下载。
直接用全局命令把客户端死死装在系统里:
Bash
npm install -g clawhub
(如果这一步卡住,说明 npm 本身依然不通,请先用上一条回复里的 npm config set registry https://registry.npmmirror.com/ 换成国内源,先把客户端扒下来。)
安装成功后,直接使用原生的 clawhub 命令拉取插件:
Bash
clawhub install autogame-17/capability-evolver
💡 为什么这能行?:因为原生命令不再走 npx 的 15 秒强制熔断机制,它会严格遵循你本地配置的 fetch-timeout 超时容忍时间(5分钟),并更稳定地读取系统代理。