用 Claude Code 一键部署 OpenClaw + 飞书
将下方的完整指令复制给 claude --dangerously-skip-permissions,即可让 Claude Code 自动完成大部分部署工作。你只需提前准备好几项信息。
使用方法
bash
claude --dangerously-skip-permissions- 将复制的指令粘贴给 Claude
- Claude 会自动创建目录、生成配置文件骨架、启动容器
- Claude 会在适当时机暂停并提醒你手动编辑
.env文件填入凭据 - 按提示完成飞书开放平台上的手动步骤
准备清单
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 运行时变量替换语法,不要展开它们后续操作
部署完成后,你可能还需要:
- 调整访问控制 — 参阅 飞书应用配置详解 — 访问控制
- 排查问题 — 参阅 配置参考与故障排除
- 更新镜像 —
docker compose pull && docker compose up -d - 查看控制面板 — 浏览器打开
http://127.0.0.1:18789/?token=<your-token>
相关文档
- Docker Compose + 飞书部署指南 — 手动部署的完整步骤
- 飞书应用配置详解 — 飞书开放平台配置
- 配置参考与故障排除 — 环境变量参考与故障排除