乐于分享
好东西不私藏

Docker安装的Openclaw接入企业微信

Docker安装的Openclaw接入企业微信

1 安装企业微信插件

在 openclaw 安装完成的基础上安装企业微信插件就比较容易了。一共有两个步骤:一是安装 python3;二是安装企业微信插件。

1.1 安装 python3

如果在安装 openclaw 的时候已经安装了 python3 可以跳过这一步。

安装 python3 需要切换到 root 用户,但是 Docker 容器里大部分情况下是没有 sudo 命令的。所以需要回到宿主机上指定用 root 用户进入容器。

docker exec -u 0 -it <container_id> /bin/bash #参数会强制以 root 用户(UID 0)身份进入容器。

用 root 用户进入容器之后开始安装 python3,根据实际情况判断是否需要代理。

#不需要代理
apt update && apt install -y python3 

#
 需要代理
apt -o Acquire::http::Proxy="http://xxx.xxx.xx.xx:xxx" \
        -o Acquire::https::Proxy="http://xxx.xxx.xx.xx:xxx" \ 
        update && \
    apt -o Acquire::http::Proxy="http://xxx.xxx.xx.xx:xxx" \
        -o Acquire::https::Proxy="http://xxx.xxx.xx.xx:xxx" \ 
        install -y python3 

这里特别注意一下,安装完 python3 要从 root 用户退出容器,不要直接用 root 用户安装企业微信插件。

1.2 安装企业微信插件

一定要注意安装企业微信插件的时候不要用 root 用户登录容器

安装完 python3 之后接下来就是安装企业微插件。先用默认用户登录 openclaw 容器。

docker exec -it <container_id> /bin/bash 

企业微信插件会自动切换源,所以一般不需要代理,可以直接执行安装命令。

npx -y @wecom/wecom-openclaw-cli install --force

等到安装完成之后会出现两个选项:直接扫码自动配置或者手动填写 botId 和 secret。

  • 如果是第一次创建机器人直接扫码就行,企业微信会自动创建一个 AI 机器人然后完成配置。
  • 如果想用自己已有的 AI 机器人,那就选择手动填写 botId 和 secret。这两个信息在企业微信管理后台获取(大致的路径是 安全与管理—>管理工具—>管理—>详情)。

配置完 openclaw 接入企业微信就完成了,可以在企业微信和 openclaw 中的大模型进行交流了。配置成功或者失败原因都可以从日志中看到——成功的话可以看到你发给企业微信的消息;失败的话可以在日志中看到失败的报错信息。

企业微信接入 openclaw 后不能在企业微信中选择大模型,企业微信只会发消息给 openclaw 中配置的默认大模型。

2 踩坑记录

2.1 sudo: command not found

在 Docker 的世界里,镜像通常遵循“最小化原则”。为了减小镜像体积并提高安全性,像 sudo 这种用于切换用户权限的工具默认是不安装的。

大多数 Docker 容器(除非在 Dockerfile 中特别指定)默认就是以 root 用户身份运行的。你可以通过输入 whoami 查看。如果是 root,你运行任何命令都不需要加 sudo。如果提示权限不足 (Permission Denied),说明该容器是以非 root 用户启动的。此时你不能在容器内部“变”出权限,而应该在宿主机(也就是你的 QNAP 或 Linux 电脑)上以 root 身份进入容器:

 docker exec -u 0 -it <container_id> /bin/bash #参数会强制以 root 用户(UID 0)身份进入容器。

这里顺便解释一下 -u 0 ,这里的 0 是 root 用户的 UID,也可以直接替换写成 -u root,意思是以 root 用户或者 PID 为 0 的用户进入容器。

2.2 without channelConfigs metadata

plugins.entries.wecom-openclaw-plugin: plugin wecom-openclaw-plugin: channel plugin manifest declares wecom without channelConfigs metadata; add openclaw.plugin.json#channelConfigs so config schema and setup surfaces work before runtime loads

这个报错意思是:插件声明了自己提供 wecom 渠道,但 openclaw.plugin.json 里没声明 channelConfigs,新版 OpenClaw 在启动前就拦住了。 这个报错真的是看得我云里雾里,一开始我以为是 openclaw 或者这个企业微信插件有 bug,没有自动创建这个配置。一直往这个方向排查,结果当然是毫无头绪。

直到我发现 openclaw 日志里有一个路径 /root/.openclaw/openclaw.json,我突然明白了——我在安装 wecom-openclaw-plugin 的时候用的是 root 用户,于是 wecom-openclaw-plugin 的安装包就任务 openclaw 也在 root 的目录下。而实际上我的 openclaw 安装在一个叫 node 的用户下,所以 wecom-openclaw-plugin 安装的路径错误了,其实就是安装失败了。但是这个 wecom-openclaw-plugin 的安装包好像没有提供卸载命令,所以我索性把这个容器移除了,重新部署了一个新的容器。以 root 用户安装 python3,然后切换到 node 用户安装 wecom-openclaw-plugin,果然成功了。

3 参考资料

https://github.com/WecomTeam/wecom-openclaw-plugin