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. 飞书应用凭据

你需要先在 飞书开放平台 创建企业自建应用,获取:

  • [ ] App ID(格式:cli_xxx
  • [ ] App 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. 飞书开放平台手动操作(Claude 无法自动完成)

以下步骤需要你在飞书开放平台的网页控制台中手动完成,Claude 会在对应时机提醒你:

  • [ ] 配置应用权限(可使用 批量导入 JSON
  • [ ] 启用机器人能力
  • [ ] 配置事件订阅(选择长连接,添加 im.message.receive_v1)— 必须在容器启动后进行
  • [ ] 创建版本并发布应用

完整指令

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

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

## 操作步骤

### 1. 创建项目目录

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

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

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

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

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

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

- `FEISHU_APP_ID` — 飞书应用 App ID(格式 `cli_xxx`,从飞书开放平台获取)
- `FEISHU_APP_SECRET` — 飞书应用 App Secret
- `ANTHROPIC_AUTH_TOKEN` — AI 模型 API Token
- `ANTHROPIC_BASE_URL` — AI 模型 API 地址(如 `https://api.anthropic.com`

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

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

### 4. 创建 openclaw-data/openclaw.json

```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
          }
        ]
      }
    }
  },
  "channels": {
    "feishu": {
      "enabled": true,
      "domain": "feishu",
      "accounts": {
        "main": {
          "appId": "${FEISHU_APP_ID}",
          "appSecret": "${FEISHU_APP_SECRET}",
          "botName": "OpenClaw"
        }
      },
      "dmPolicy": "pairing",
      "groupPolicy": "open"
    }
  },
  "gateway": {
    "mode": "local",
    "port": 18789,
    "auth": { "token": "${OPENCLAW_GATEWAY_TOKEN}" }
  }
}
```

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

如果我的模型 ID 不是 `claude-sonnet-4-5-20250929`,或者我使用 Lark 国际版(domain 改为 `lark`),我会告诉你修改。

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

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

### 6. 创建 .gitignore

```
.env
```

### 7. 启动容器

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

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

### 8. 停下来,提醒我完成飞书手动步骤

容器启动后,提醒我去飞书开放平台完成以下操作:

1. 进入 **事件订阅** → 选择 **使用长连接接收事件**
2. 添加事件:`im.message.receive_v1`
3. 创建版本并发布应用
4. 等待日志中出现 `[feishu] connected`

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

### 9. 配对机器人

当我在飞书中向机器人发消息并收到配对码后,帮我执行:

```bash
docker compose exec openclaw openclaw pairing approve feishu <配对>
```

如果 `openclaw` 命令未找到,使用:

```bash
docker compose exec openclaw node dist/index.js pairing approve feishu <配对>
```

## 注意事项

- .env 文件包含敏感信息,绝不要读取、打印或提交到 Git
- 如果遇到权限问题(Linux),运行:`sudo chown -R 1000:1000 ./openclaw-data`
- 配置文件中的 `${VAR_NAME}` 是 OpenClaw 运行时变量替换语法,不要展开它们

后续操作

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


相关文档