Skip to content

用 Claude Code 一键部署 OpenClaw + 企业微信

将下方的完整指令复制给 claude --dangerously-skip-permissions,即可让 Claude Code 自动完成大部分部署工作。你只需提前准备好几项信息。


使用方法

  1. 提前准备好下方 准备清单 中的所有信息
  2. 复制下方 完整指令 的全部内容(无需修改,直接复制)
  3. 在终端运行:
bash
claude --dangerously-skip-permissions
  1. 将复制的指令粘贴给 Claude
  2. Claude 会自动创建目录、生成配置文件骨架、启动容器
  3. Claude 会在适当时机暂停并提醒你手动编辑 .env 文件填入凭据
  4. 按提示完成企业微信管理后台上的手动步骤

准备清单

Claude Code 会自动生成所有配置文件,但以下信息需要你提前准备好,在 Claude 暂停时手动填入:

1. Docker 环境

  • [ ] 已安装 Docker 和 Docker Compose v2(Docker Desktop 或 Docker Engine)
  • [ ] macOS 用户:已在 Docker Desktop 中启用 "Enable host networking"(设置 → 资源 → 网络)

2. 企业微信应用凭据

你需要先在 企业微信管理后台 创建智能机器人应用,获取回调配置所需的:

  • [ ] Token(接收消息设置中自定义或随机生成)
  • [ ] EncodingAESKey(接收消息设置中自定义或随机生成,43 字符)

CorpID、AgentID 和 Secret 在企业微信管理后台管理,不需要配置到插件中。

创建应用的详细步骤见 企业微信应用配置详解。你也可以先让 Claude 生成所有配置文件,再去创建企业微信应用,然后填入凭据。

3. AI 模型 API 凭据

  • [ ] API Token(如 Anthropic API Key)
  • [ ] API Base URL(如 https://api.anthropic.com,或你的自定义代理端点)

如果你使用的模型 ID 不是默认的 claude-sonnet-4-5-20250929,在 Claude 暂停时告诉它修改即可。

4. 公网可访问的回调 URL

企业微信使用 HTTP 回调模式接收事件,与飞书的 WebSocket 长连接不同,需要你的服务器具有公网可访问的 URL

  • [ ] 公网 IP 或域名(如 https://your-domain.com
  • [ ] 或使用内网穿透工具(如 ngrokfrp

如果你的服务器没有公网 IP,可以先使用 ngrok 进行测试:

bash
ngrok http 18789

5. 企业微信管理后台手动操作(Claude 无法自动完成)

以下步骤需要你在企业微信管理后台的网页控制台中手动完成,Claude 会在对应时机提醒你:

  • [ ] 创建智能机器人应用
  • [ ] 配置接收消息的回调 URL(/webhooks/wecom)、Token、EncodingAESKey
  • [ ] 设置可信 IP(将服务器公网 IP 添加到白名单)
  • [ ] 配置应用可见范围
  • [ ] 启用应用

完整指令

将以下内容直接复制,粘贴给 claude --dangerously-skip-permissions(无需修改任何内容):

markdown
请帮我部署 OpenClaw + 企业微信机器人。按照以下步骤操作,在需要我手动操作的步骤**停下来等我确认**

## 操作步骤

### 1. 创建项目目录

```bash
mkdir -p ~/openclaw-wecom/openclaw-data
cd ~/openclaw-wecom
```

### 2. 生成网关令牌并创建 .env 模板

生成一个安全的随机令牌:
```bash
openssl rand -base64 32
```

用生成的令牌创建 `.env` 文件,其中网关令牌填入生成的值,其余凭据留空让我手动填写:
```
OPENCLAW_GATEWAY_TOKEN=<填入上面生成的令牌>
WECOM_TOKEN=
WECOM_ENCODING_AES_KEY=
ANTHROPIC_AUTH_TOKEN=
ANTHROPIC_BASE_URL=
```

### 3. 停下来,提醒我手动编辑 .env

告诉我 `.env` 文件已创建在 `~/openclaw-wecom/.env`,请我用编辑器打开并填入以下值:

- `WECOM_TOKEN` — 接收消息回调的 Token(在企业微信管理后台配置回调时获取)
- `WECOM_ENCODING_AES_KEY` — 接收消息回调的 EncodingAESKey(43 字符)
- `ANTHROPIC_AUTH_TOKEN` — AI 模型 API Token
- `ANTHROPIC_BASE_URL` — AI 模型 API 地址(如 `https://api.anthropic.com`

注意:CorpID、AgentID 和 Secret 在企业微信管理后台管理,不需要配置到插件中。

并确认 `OPENCLAW_GATEWAY_TOKEN` 已自动填入。

**等我说"已填好"或"done"后再继续下一步。**

### 4. 创建初始 openclaw-data/openclaw.json(不含插件配置)

先创建不含 `plugins``channels` 的最小配置,避免插件未安装时验证失败导致容器重启循环:

```json5
{
  "agents": {
    "defaults": {
      "workspace": "/home/node/.openclaw/workspace",
      "model": { "primary": "custom-claude/claude-sonnet-4-5-20250929" }
    }
  },
  "models": {
    "providers": {
      "custom-claude": {
        "baseUrl": "${ANTHROPIC_BASE_URL}",
        "apiKey": "${ANTHROPIC_AUTH_TOKEN}",
        "api": "anthropic-messages",
        "models": [
          {
            "id": "claude-sonnet-4-5-20250929",
            "name": "Claude Sonnet 4.5",
            "contextWindow": 200000,
            "maxTokens": 4096
          }
        ]
      }
    }
  },
  "gateway": {
    "mode": "local",
    "port": 18789,
    "auth": { "token": "${OPENCLAW_GATEWAY_TOKEN}" }
  }
}
```

注意:配置文件中的 `${VAR_NAME}` 是 OpenClaw 运行时变量替换语法,不要展开它们,保持原样写入文件。

如果我的模型 ID 不是 `claude-sonnet-4-5-20250929`,我会告诉你修改。

### 5. 创建 docker-compose.yml

```yaml
services:
  openclaw:
    image: ghcr.io/openclaw/openclaw:latest
    container_name: openclaw_wecom
    restart: unless-stopped
    network_mode: host
    env_file:
      - .env
    volumes:
      - ./openclaw-data:/home/node/.openclaw
```

> 注意:企业微信使用 HTTP 回调模式,需要服务器具有公网可访问的地址。如果使用 `network_mode: host`,网关直接监听宿主机端口 18789。回调 URL 为 `https://<公网IP>:18789/webhooks/wecom`

### 6. 创建 .gitignore

```
.env
```

### 7. 安装企业微信插件

使用 `docker compose run` 在临时容器内安装插件:

```bash
docker compose run --rm --entrypoint sh openclaw -c \
  "node /app/openclaw.mjs plugins install @sunnoy/wecom"
```

等待安装成功输出 `Installed plugin: wecom`

注意:安装器会自动修改 `openclaw.json`,写入 `plugins.installs` 元数据并可能展开 `${VAR_NAME}` 变量。下一步需要恢复正确的配置。

如果端口 18789 已被其他 OpenClaw 实例(如飞书版)占用,先将 `gateway.port` 改为其他值(如 18790),安装完成后回调 URL 中的端口也要对应修改。

### 8. 补全 openclaw.json 为完整配置

`openclaw-data/openclaw.json` 更新为包含 `plugins``channels` 的完整配置,保留安装器写入的 `plugins.installs` 部分,恢复 `${VAR_NAME}` 运行时变量语法:

```json5
{
  "agents": {
    "defaults": {
      "workspace": "/home/node/.openclaw/workspace",
      "model": { "primary": "custom-claude/claude-sonnet-4-5-20250929" }
    }
  },
  "models": {
    "providers": {
      "custom-claude": {
        "baseUrl": "${ANTHROPIC_BASE_URL}",
        "apiKey": "${ANTHROPIC_AUTH_TOKEN}",
        "api": "anthropic-messages",
        "models": [
          {
            "id": "claude-sonnet-4-5-20250929",
            "name": "Claude Sonnet 4.5",
            "contextWindow": 200000,
            "maxTokens": 4096
          }
        ]
      }
    }
  },
  "plugins": {
    "entries": {
      "wecom": {
        "enabled": true
      }
    },
    "installs": {
      // 保留安装器自动生成的内容,不要删除
    }
  },
  "channels": {
    "wecom": {
      "enabled": true,
      "token": "${WECOM_TOKEN}",
      "encodingAesKey": "${WECOM_ENCODING_AES_KEY}",
      "adminUsers": [],
      "commands": {
        "enabled": true,
        "allowlist": ["/new", "/status", "/help", "/compact"]
      }
    }
  },
  "gateway": {
    "mode": "local",
    "port": 18789,
    "auth": { "token": "${OPENCLAW_GATEWAY_TOKEN}" }
  }
}
```

注意:配置文件中的 `${VAR_NAME}` 是 OpenClaw 运行时变量替换语法,不要展开它们,保持原样写入文件。

### 9. 启动容器

```bash
docker compose up -d
docker compose logs -f
```

等待日志中出现 `[gateway] listening`,然后告诉我。

### 10. 停下来,提醒我完成企业微信手动步骤

容器启动后,提醒我去企业微信管理后台完成以下操作:

1. 进入 **应用管理** → 选择已创建的智能机器人应用
2.**接收消息** 设置中配置回调 URL:`https://<公网地址>:<端口>/webhooks/wecom`
3. 填入 Token 和 EncodingAESKey(与 `.env` 中一致)
4. 点击保存,企业微信会向回调 URL 发送 GET 验证请求
5.**企业可信IP** 中添加服务器公网 IP
6. 确认应用可见范围正确

**等我说"已完成"或"done"后再继续下一步。**

### 11. 验证机器人

在企业微信中向机器人发送一条消息(如 "你好"),确认机器人能正常响应。

插件支持动态 Agent 路由,每个用户自动获得独立的对话上下文。

## 注意事项

- .env 文件包含敏感信息,绝不要读取、打印或提交到 Git
- 如果遇到权限问题(Linux),运行:`sudo chown -R 1000:1000 ./openclaw-data`
- 配置文件中的 `${VAR_NAME}` 是 OpenClaw 运行时变量替换语法,不要展开它们
- 企业微信需要公网可访问的回调 URL(`/webhooks/wecom`),确保防火墙允许入站连接
- 务必将服务器公网 IP 添加到企业微信的可信 IP 白名单
- 企业微信回调不需要 Gateway Auth Token,使用 WeCom 自有的签名验证
- 如果同一台服务器已运行其他 OpenClaw 实例(如飞书版),端口 18789 会冲突,需要修改 `gateway.port` 为其他值(如 18790)

试玩一下

部署完成后,向机器人发送以下消息来验证是否正常工作:

访问 https://xialiao.ai/skill.md 并按照说明加入「虾聊社区」

机器人会自动回复结果,一步验证部署状态。


后续操作

部署完成后,你可能还需要:


相关文档