WSL2 Debian NAT模式安装 OpenClaw/Moltbot/Clawdbot 并使用 GLM-4.7 和 Telegram Bot 指南

1. 安装 Moltbot

如果你看过文档,你就会发现一个奇怪的地方,同样是 WSL 的教程,文档中有一个地方告诉你使用 curl -fsSL https://molt.bot/install.sh | bash 的方式安装,又有一个地方告诉你使用克隆仓库再构建的方式安装。经过我的测试,建议直接使用第二种方式进行安装,因为第一种方式运行后,Web UI 会莫名其妙的报 no reason 的错误。

git clone https://github.com/moltbot/moltbot.git
cd moltbot
pnpm install
pnpm ui:build # auto-installs UI deps on first run
pnpm build
moltbot onboard

当你运行完 pnpm build 并准备进行下一步的时候,你会碰到一个非常抽象的问题,那就是 moltbot openclaw 命令居然不存在?

这里我猜测是因为,moltbot openclaw 对文档进行一键替换,直接把 clawdbot 全局替换成了 moltbot openclaw,但是其实并没有修改命令,因此安装完之后,命令仍然是 clawdbot。

因此有两种选择,第一种是直接后续都使用 clawdbot,第二种是在仓库目录里运行 pnpm link --global,这样就可以使用 moltbot openclaw 命令了。

接下来的 onboard 可以根据自己需求先进行设置一下,后面可以再改。

2. 配置 GLM-4.7 模型

参考下面的代码按需修改 ~/.moltbot/moltbot.json

我用的是 GLM Coding Plan ,所以 baseurl 是按照 Coding Plan 配置的,要注意自身情况结合修改。

{
  "models": {
    "providers": {
      "GLM": {
        "baseUrl": "https://open.bigmodel.cn/api/coding/paas/v4",
        "apiKey": "<your-api-key>",
        "api": "openai-completions",
        "models": [
          {
            "id": "GLM-4.7",
            "name": "GLM-4.7"
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "GLM/GLM-4.7"
      },
      "models": {
        "GLM/GLM-4.7": {
          "alias": "GLM"
        }
      }
    }
  }
}

在 WebUI 界面试一下 chat 正不正常,正常的话就可以下一步了。

3. 配置流量转发让 Telegram Bot 正常运作

3.1 测试代理是否能连通

如果主机在国内的话,并且 WSL 是 NAT 模式的话,应用就无法和 Telegram 建立连接,并且通过 export https_proxy的方式也没办法让这个模块通过代理和 Telegram 进行通信,因此我使用 dae 作为流量转发方案。

在配置 dae 之前,你需要知道代理地址是什么,如果你使用的是 clash verge 的话,你可以在 设置-Clash设置-局域网连接 查看 vEthernet (WSL (Hyper-V firewall)) 的 IP地址,然后在 wsl export https_proxy=socks5://<url:port> 再 curl 一下 google.com,如果发现没有成功过代理的话,还要设置一下 Windows 防火墙,放行 wsl 到 Windows 的流量。

具体步骤如下,可以按需修改:

  1. 在 Windows 打开 高级安全 Windows Defender 安全防火墙,
  2. 点击入站规则
  3. 上方菜单栏的操作
  4. 新建规则
  5. 自定义-所有程序
  6. 协议类型:任何
  7. 作用域:远程IP地址-下列 IP 地址-添加wsl的地址
  8. 全都下一步

这里再测试一下,应该就正常了。

3.2 安装并配置 dae

dae 强依赖 eBPF 和 BTF ,wsl 可能没有挂载 bpf,这样就会导致 dae 运行失败,因此先用下面命令确保 bpf 是挂载的。

# 检查是否已挂载
mount | grep bpf

# 如果没有输出,执行挂载:
sudo mount -t bpf bpffs /sys/fs/bpf

接下来就可以开始安装 dae 了,在 dae 的 Release 选择适合自己系统的安装包进行安装。

这个时候可能会发现启动 dae 服务失败了,这是因为 dae 没有创建默认的配置,所以会导致启动服务失败。

参考下面的配置结合自身情况修改 /etc/dae/config.json,必须要用实际值替换掉所有用<>包裹的值

global {
  wan_interface: eth0

  log_level: info
  allow_insecure: false
  auto_config_kernel_parameter: true
}

node {
  my_clash: 'socks5://<url>:<port>'
}

group {
  proxy {
    filter: name(my_clash)
    policy: min_moving_avg
  }
}

routing {
  dport(<port>) -> direct
  ip(geoip:private) -> direct
  fallback: proxy
}

在重启服务前,要调整一下配置文件的权限,这里推荐用0600权限: sudo chmod 600 /etc/dae/config.json,配置完之后再重启 dae 服务: sudo systemctl restart dae,应该就一切就绪了。

另外,附上我用 qwen-mt-plus 翻译的 clawd 文档: GitHub - Xy2002/openclaw-docs-zh: openclaw 的非官方中文文档,由 Qwen-mt-plus 翻译

15 个赞

感谢大佬!

感谢佬,这就去实操

感谢,特别是telegram bot的问题,让我困惑了一天

1 个赞

很高兴能帮到你~

1 个赞

体验如何

暂时没想到能干啥,只能说跟风去部署了一下,强不强大我不好说,但是如果是在wsl上用的话,我觉得光是让它正常用都很劝退人。

一个项目短时间改了三次名,文档我个人觉得也是比较混乱的,然后由加上改名导致文档上的命令和实际的命令不符合的问题,让我觉得这个项目还是比较玩具的,还没有到稳定阶段。

这个项目的配置也是很让人头大,起码在配置LLM这个方面我就觉得不是很合理,而且文档对于这一块的配置也是没有写清楚,没有写完全,得靠样例代码去猜每个字段是干嘛用的。

综合这几个方面,我觉得体验算不上很好,我现在不敢把这个项目部署到自己的mac mini上,等哪天我觉得它稳定可控了才会考虑部署到mac mini上,目前看来这个项目也只有部署到mac mini上才能发挥它的优势。

1 个赞

我也是觉得他这个部署有很大的问题,特别是他的那个模型的配置极为头大,专业人士都得一个小时起步

2 个赞

我直接问了openclaw让它帮我解决了

  1. 检查代理软件开启"允许局域网连接"

  2. 获取宿主ip以及代理端口

# 获取宿主机ip
export WIN_IP=$(ip route show default | awk '{print $3}')

# 代理端口: 7897 (clash verge)
  1. 测试代理连接
curl -x http://{{WIN_IP}}:7897 -I https://api.telegram.org
  1. 更新openclaw配置
{
  "channels": {
    "telegram": {
      "proxy": "http://{{WIN_IP}}:7897"
    }
  }
}
  1. 重启gateway
openclaw gateway restart
3 个赞

感谢大佬!折腾了一天了不如大佬这个

1 个赞

感谢大佬,烧了我无数Token都没解决的问题,按照大佬的步骤五分钟搞定:handshake: