🚀 推荐搭配:OpenClaw 功能强大但 Token 消耗较大,推荐配合 AIClient-2-API 项目使用,将各大 AI 客户端转换为标准 API 接口,实现无限 Token 调用,彻底解决 Token 焦虑!本项目已支持 OpenAI 和 Claude 两种协议,可直接对接 AIClient-2-API 服务。
OpenClaw 中国 IM 插件整合版 Docker 镜像,预装并配置了飞书、钉钉、QQ机器人、企业微信等主流中国 IM 平台插件,让您可以快速部署一个支持多个中国 IM 平台的 AI 机器人网关。
项目地址: https://github.com/justlovemaki/OpenClaw-Docker-CN-IM
- 🚀 开箱即用:预装所有中国主流 IM 平台插件
- 🔧 灵活配置:通过环境变量轻松配置各平台凭证
- 🐳 Docker 部署:一键启动,无需复杂配置
- 📦 数据持久化:支持配置和工作空间数据持久化
- 💻 OpenCode AI:内置 AI 代码助手,支持智能代码生成和分析
- 🎭 Playwright:预装浏览器自动化工具,支持网页操作和截图
- 🗣️ 中文 TTS:支持中文语音合成(Text-to-Speech)
点击展开查看历史更新记录
| 日期 | 版本 | 更新内容 |
|---|---|---|
| 2026-03-11 | 2026.3.8 |
|
| 2026-03-08 | 2026.3.2-f3 |
|
| 2026-03-04 | 2026.3.2-f2 |
|
| 2026-03-02 | 2026.3.1 |
|
IM 平台
- ✅ 飞书官方团队插件(推荐,支持完整 OAPI 工具)
- ✅ 飞书(Feishu/Lark 旧版内置插件)
- ✅ 钉钉(DingTalk)
- ✅ QQ 机器人(QQ Bot)
- ✅ 企业微信(WeCom)
集成工具
- ✅ OpenCode AI - AI 代码助手
- ✅ Playwright - 浏览器自动化
- ✅ 中文 TTS - 语音合成
- ✅ FFmpeg - 语音/视频格式转换
- ✅ 飞书官方 OAPI 工具集(日历、任务、多维表格等)
Docker Hub: https://hub.docker.com/r/justlikemaki/openclaw-docker-cn-im
docker pull justlikemaki/openclaw-docker-cn-im:latestwget https://raw.githubusercontent.com/justlovemaki/OpenClaw-Docker-CN-IM/main/docker-compose.yml
wget https://raw.githubusercontent.com/justlovemaki/OpenClaw-Docker-CN-IM/main/.env.example# 复制环境变量模板
cp .env.example .env
# 编辑配置文件(至少配置 AI 模型相关参数)
nano .env最小配置示例:
| 环境变量 | 说明 | 示例值 |
|---|---|---|
MODEL_ID |
AI 模型名称 | gpt-4 |
BASE_URL |
AI 服务 API 地址 | https://api.openai.com/v1 |
API_KEY |
AI 服务 API 密钥 | sk-xxx... |
💡 提示:IM 平台配置为可选项,可以先启动服务,后续再配置需要的平台。
docker-compose up -ddocker-compose logs -fdocker-compose down如需进入容器进行调试或执行命令:
# 使用 docker-compose 进入容器
docker-compose exec openclaw-gateway /bin/bash
# 或使用 docker 命令进入容器
docker exec -it openclaw-gateway /bin/bash进入容器后,请先执行 su node 切换到 node 用户,然后再执行相关命令(否则可能会由于权限问题导致命令执行失败):
# 切换到 node 用户(必需)
su node
# 查看 OpenClaw 版本
openclaw --version
# 查看配置文件
cat ~/.openclaw/openclaw.json
# 查看工作空间
ls -la ~/.openclaw/workspace
# 手动执行配对命令(如 Telegram)
openclaw pairing approve telegram {token}
# 手动安装官方飞书插件
feishu-plugin-onboard install如果您需要自定义镜像或进行开发调试,可以选择自行构建:
git clone https://github.com/justlovemaki/OpenClaw-Docker-CN-IM.git
cd OpenClaw-Docker-CN-IMdocker build -t justlikemaki/openclaw-docker-cn-im:latest .# 复制环境变量模板
cp .env.example .env
# 编辑配置文件(至少配置 AI 模型相关参数)
nano .envdocker-compose up -d本项目支持 OpenAI 协议和 Claude 协议两种 API 格式。
💡 推荐模型:推荐使用
gemini-3-flash-preview模型,该模型具有超大上下文窗口(1M tokens)、快速响应速度和优秀的性价比,非常适合作为 OpenClaw 的后端模型。
| 参数 | 说明 | 默认值 |
|---|---|---|
MODEL_ID |
模型名称 | model id |
PRIMARY_MODEL |
显式指定 agents.defaults.model.primary,使用完整 provider/model 引用 |
留空 |
IMAGE_MODEL_ID |
图片模型名称,可单独指定;支持直接填写完整 provider/model 引用 |
留空 |
BASE_URL |
Provider Base URL | http://xxxxx/v1 |
API_KEY |
Provider API Key | 123456 |
API_PROTOCOL |
API 协议类型 | openai-completions |
CONTEXT_WINDOW |
模型上下文窗口大小 | 200000 |
MAX_TOKENS |
模型最大输出 tokens | 8192 |
| 协议类型 | 适用模型 | Base URL 格式 | 特殊特性 |
|---|---|---|---|
openai-completions |
OpenAI、Gemini 等 | 需要 /v1 后缀 |
- |
anthropic-messages |
Claude | 不需要 /v1 后缀 |
Prompt Caching、Extended Thinking |
OpenAI 协议(Gemini 模型)
MODEL_ID=gemini-3-flash-preview
BASE_URL=http://localhost:3000/v1
API_KEY=your-api-key
API_PROTOCOL=openai-completions
CONTEXT_WINDOW=1000000
MAX_TOKENS=8192Claude 协议(Claude 模型)
MODEL_ID=claude-sonnet-4-5
BASE_URL=http://localhost:3000
API_KEY=your-api-key
API_PROTOCOL=anthropic-messages
CONTEXT_WINDOW=200000
MAX_TOKENS=8192默认情况下,项目会把 MODEL_ID 的第一个值同步为 agents.defaults.model.primary,并自动补全为 default/...。
如果你配置了第二个 provider,且希望把它的模型设为默认主模型,同时让图片模型也切到其它 provider,可以这样配置:
MODEL_ID=dashscope/qwen3.5-plus
MODEL2_NAME=aliyun
MODEL2_MODEL_ID=qwen-max,qwen3.5-plus,qwen-vl-max
PRIMARY_MODEL=aliyun/qwen3.5-plus
IMAGE_MODEL_ID=aliyun/qwen-vl-max此时:
models.providers.default仍由MODEL_ID生成models.providers.aliyun由MODEL2_*生成agents.defaults.model.primary会优先使用PRIMARY_MODELagents.defaults.imageModel.primary会直接使用IMAGE_MODEL_ID;若未填写,则回退到MODEL_ID
优先级如下:
- 主模型:
PRIMARY_MODEL→MODEL_ID - 图片模型:
IMAGE_MODEL_ID→MODEL_ID
注意:PRIMARY_MODEL 和 IMAGE_MODEL_ID 都可以填写完整引用,即 provider/model 格式,例如:
default/dashscope/qwen3.5-plusaliyun/qwen3.5-plusaliyun/qwen-vl-maxmodel2/claude-sonnet-4-5
| 参数 | 说明 | 默认值 |
|---|---|---|
OPENCLAW_GATEWAY_TOKEN |
Gateway 访问令牌 | 123456 |
OPENCLAW_GATEWAY_BIND |
绑定地址 | lan |
OPENCLAW_GATEWAY_PORT |
Gateway 端口 | 18789 |
OPENCLAW_BRIDGE_PORT |
Bridge 端口 | 18790 |
| 参数 | 说明 | 默认值 |
|---|---|---|
WORKSPACE |
工作空间目录 | /home/node/.openclaw/workspace |
容器启动时只有在配置文件不存在时才会生成新配置。如需重新生成配置,请删除现有配置文件:
# 删除配置文件
rm ~/.openclaw/openclaw.json
# 重启容器
docker-compose restart或者直接删除整个数据目录重新开始:
rm -rf ~/.openclaw
docker-compose up -d- 确认 AIClient-2-API 服务运行中
- 检查 Base URL 是否正确(OpenAI 协议需要
/v1后缀) - 尝试使用
127.0.0.1替代localhost
- 检查 API Key 是否正确配置
- 确认环境变量
API_KEY已设置
- 在 AIClient-2-API Web UI 确认已配置对应提供商
- 重启容器:
docker-compose restart
- 检查是否配置了事件订阅(最容易遗漏的配置)
- 确认事件配置方式选择了"使用长连接接收事件"
- 确认已添加
im.message.receive_v1事件
如果需要启用 Telegram,必须提供有效的 TELEGRAM_BOT_TOKEN,启用后需要进入容器(参考“进入容器”章节)执行以下命令进行配对审批:
# 先切换到 node 用户
su node
# 执行配对审批
openclaw pairing approve telegram {token}并且需要重启 Docker 服务使配置生效。
这通常不是命令本身不稳定,而是运行上下文变化导致:宿主机挂载目录所有者(UID/GID)与容器内进程用户不一致。
- 同样是
docker compose up -d,但目录来源不同:- 你手动创建目录:可能是当前用户(如
1000:1000) - Docker 自动创建或使用 sudo 创建:可能是
root:root(0:0)
- 你手动创建目录:可能是当前用户(如
- 本镜像最终以
node用户运行网关;若挂载目录归属不匹配,就可能无法写入。
# 1) 看宿主机目录归属(Linux)
ls -ln ~/.openclaw
# 2) 看容器内运行用户
docker run --rm justlikemaki/openclaw-docker-cn-im:latest id若容器用户是 uid=1000,而宿主机目录是 uid=0 且权限不足,就会报错。
- 宿主机修正目录所有权(最直接)
sudo chown -R 1000:1000 ~/.openclaw- 显式指定容器运行用户(可选)
在 .env 中设置:
OPENCLAW_RUN_USER=1000:1000然后重启:
docker compose up -d- SELinux 场景(CentOS/RHEL/Fedora)
若权限看起来没问题但仍拒绝访问,请给挂载卷加 :z 或 :Z 标签。
docker-compose.yml新增可选user配置:OPENCLAW_RUN_USER(默认0:0)init.sh启动时会:- 打印挂载目录当前 UID/GID 与目标 UID/GID
- 尝试自动修复
/home/node/.openclaw权限 - 若仍不可写,输出明确的修复命令并失败退出,避免“有时成功有时报错”的隐性状态
- 确保宿主机的 18789 和 18790 端口未被占用
- 配置文件中的敏感信息(如 API 密钥、令牌)应妥善保管
- 首次运行时会自动创建必要的目录和配置文件,包括
openclaw.json配置文件,已存在时不会覆盖 - 容器以
node用户身份运行,确保挂载的卷有正确的权限 - IM 平台配置均为可选项,可根据实际需求选择性配置
- 使用 OpenAI 协议时,Base URL 需要包含
/v1后缀 - 使用 Claude 协议时,Base URL 不需要
/v1后缀
飞书配置
- 在 飞书开放平台 创建自建应用
- 添加应用能力-机器人
- 在凭证页面获取 App ID 和 App Secret
- 开启所需权限(见下方)
⚠️ 重要 - 配置事件订阅(见下方)
⚠️ 重要
| 权限 | 范围 | 说明 |
|---|---|---|
im:message |
消息 | 发送和接收消息(核心权限) |
im:message.p2p_msg:readonly |
私聊 | 读取发给机器人的私聊消息 |
im:message.group_at_msg:readonly |
群聊 | 接收群内 @机器人 的消息 |
im:message:send_as_bot |
发送 | 以机器人身份发送消息 |
im:resource |
媒体 | 上传和下载图片/文件 |
im:chat.members:bot_access |
群成员 | 获取群成员信息 |
im:chat.access_event.bot_p2p_chat:read |
聊天事件 | 读取机器人单聊事件 |
| 权限 | 范围 | 说明 |
|---|---|---|
contact:user.employee_id:readonly |
用户信息 | 获取用户员工 ID(用于用户识别) |
im:message:readonly |
读取 | 获取历史消息 |
application:application:self_manage |
应用管理 | 应用自我管理 |
application:bot.menu:write |
机器人菜单 | 配置机器人菜单 |
event:ip_list |
IP 列表 | 获取飞书服务器 IP 列表 |
| 权限 | 范围 | 说明 |
|---|---|---|
aily:file:read |
AI 文件读取 | 读取 AI 助手文件 |
aily:file:write |
AI 文件写入 | 写入 AI 助手文件 |
application:application.app_message_stats.overview:readonly |
消息统计 | 查看应用消息统计概览 |
corehr:file:download |
人事文件 | 下载人事系统文件 |
| 权限 | 范围 | 说明 |
|---|---|---|
aily:file:read |
AI 文件读取 | 以用户身份读取 AI 助手文件 |
aily:file:write |
AI 文件写入 | 以用户身份写入 AI 助手文件 |
im:chat.access_event.bot_p2p_chat:read |
聊天事件 | 以用户身份读取机器人单聊事件 |
官方飞书插件推荐权限 JSON(默认折叠)
{
"scopes": {
"tenant": [
"contact:contact.base:readonly",
"docx:document:readonly",
"im:chat:read",
"im:chat:update",
"im:message.group_at_msg:readonly",
"im:message.p2p_msg:readonly",
"im:message.pins:read",
"im:message.pins:write_only",
"im:message.reactions:read",
"im:message.reactions:write_only",
"im:message:readonly",
"im:message:recall",
"im:message:send_as_bot",
"im:message:send_multi_users",
"im:message:send_sys_msg",
"im:message:update",
"im:resource",
"application:application:self_manage",
"cardkit:card:write",
"cardkit:card:read"
],
"user": [
"contact:user.employee_id:readonly",
"offline_access",
"base:app:copy",
"base:field:create",
"base:field:delete",
"base:field:read",
"base:field:update",
"base:record:create",
"base:record:delete",
"base:record:retrieve",
"base:record:update",
"base:table:create",
"base:table:delete",
"base:table:read",
"base:table:update",
"base:view:read",
"base:view:write_only",
"base:app:create",
"base:app:update",
"base:app:read",
"board:whiteboard:node:create",
"board:whiteboard:node:read",
"calendar:calendar:read",
"calendar:calendar.event:create",
"calendar:calendar.event:delete",
"calendar:calendar.event:read",
"calendar:calendar.event:reply",
"calendar:calendar.event:update",
"calendar:calendar.free_busy:read",
"contact:contact.base:readonly",
"contact:user.base:readonly",
"contact:user:search",
"docs:document.comment:create",
"docs:document.comment:read",
"docs:document.comment:update",
"docs:document.media:download",
"docs:document:copy",
"docx:document:create",
"docx:document:readonly",
"docx:document:write_only",
"drive:drive.metadata:readonly",
"drive:file:download",
"drive:file:upload",
"im:chat.members:read",
"im:chat:read",
"im:message",
"im:message.group_msg:get_as_user",
"im:message.p2p_msg:get_as_user",
"im:message.send_as_user",
"im:message:readonly",
"search:docs:read",
"search:message",
"space:document:delete",
"space:document:move",
"space:document:retrieve",
"task:comment:read",
"task:comment:write",
"task:task:read",
"task:task:write",
"task:task:writeonly",
"task:tasklist:read",
"task:tasklist:write",
"wiki:node:copy",
"wiki:node:create",
"wiki:node:move",
"wiki:node:read",
"wiki:node:retrieve",
"wiki:space:read",
"wiki:space:retrieve",
"wiki:space:write_only"
]
}
}这是最容易遗漏的配置! 如果机器人能发消息但收不到消息,请检查此项。
在飞书开放平台的应用后台,进入 事件与回调 页面:
- 事件配置方式:选择 使用长连接接收事件(推荐)
- 添加事件订阅,勾选以下事件:
| 事件 | 说明 |
|---|---|
im.message.receive_v1 |
接收消息(必需) |
im.message.message_read_v1 |
消息已读回执 |
im.chat.member.bot.added_v1 |
机器人进群 |
im.chat.member.bot.deleted_v1 |
机器人被移出群 |
- 确保事件订阅的权限已申请并通过审核
在 .env 文件中添加:
FEISHU_APP_ID=your-app-id
FEISHU_APP_SECRET=your-app-secret
# 官方飞书插件独立开关,安装官方插件后建议显式开启
FEISHU_OFFICIAL_PLUGIN_ENABLED=true💡 参考项目:clawdbot-feishu - 飞书机器人完整实现示例
本项目已集成飞书官方团队插件 CLI 工具。在容器运行后,推荐按照以下步骤完成配置以获得更强大的能力:
-
不要在主服务容器内执行安装:
feishu-plugin-onboard install会主动触发 OpenClaw 服务重载/重启;如果直接在openclaw-gateway容器内执行,会打断当前容器里的主进程。 -
使用独立安装容器执行向导: 先启动主服务:
docker compose up -d openclaw-gateway再启动工具容器:
docker compose --profile tools up -d openclaw-installer如果此前创建过异常退出的旧容器,先执行:
docker compose --profile tools rm -sf openclaw-installer进入工具容器并切换用户:
docker exec -it openclaw-installer bashsu node -
在工具容器内执行安装向导: 运行
feishu-plugin-onboard install。- 程序会询问是否卸载旧的
lark-officeMCP,输入Y`。 - 输入您的飞书应用
AppID和AppSecret。
由于
openclaw-installer只是一次性工具容器,不承载 Gateway 主进程,因此这里发生服务重启不会把主网关容器安装流程打断。如果出现
plugin not found: feishu-openclaw-plugin,说明飞书官方团队插件尚未完成交互式安装,当前镜像里只预装了feishu-plugin-onboardCLI 工具,并不会在构建阶段自动完成插件注册。此时请继续在工具容器内执行交互式命令feishu-plugin-onboard install,安装完成后再在.env中配置FEISHU_OFFICIAL_PLUGIN_ENABLED=true显式开启官方插件。如有以下报错:
Error: OpenClaw version mismatch. Expected >= 2026.2.26, found OpenClaw 2026.3.8 (3caab92). Please upgrade.运行feishu-plugin-onboard update代替安装命令 - 程序会询问是否卸载旧的
-
完成配对:
- 在飞书给机器人发消息获取配对码。
- 在主服务容器或工具容器中执行:
openclaw pairing approve feishu <配对码> --notify
-
常用管理指令:
- 状态检查:
feishu-plugin-onboard doctor - 自动修复:
feishu-plugin-onboard doctor --fix - 更新插件:
feishu-plugin-onboard update - 批量授权:在飞书对话框输入
/feishu auth
- 状态检查:
-
安装完成后可关闭工具容器:
docker compose --profile tools stop openclaw-installer或docker compose --profile tools rm -sf openclaw-installer
钉钉配置
- 访问 钉钉开发者后台
- 创建企业内部应用
- 添加「机器人」能力
- 配置消息接收模式为 Stream 模式
- 发布应用
从开发者后台获取:
- Client ID(AppKey)
- Client Secret(AppSecret)
- Robot Code(与 Client ID 相同)
- Corp ID(与 Client ID 相同)
- Agent ID(应用 ID)
在 .env 文件中添加:
DINGTALK_CLIENT_ID=your-dingtalk-client-id
DINGTALK_CLIENT_SECRET=your-dingtalk-client-secret
DINGTALK_ROBOT_CODE=your-dingtalk-robot-code
DINGTALK_CORP_ID=your-dingtalk-corp-id
DINGTALK_AGENT_ID=your-dingtalk-agent-id参数说明:
DINGTALK_CLIENT_ID- 必需,钉钉应用的 Client ID(AppKey)DINGTALK_CLIENT_SECRET- 必需,钉钉应用的 Client Secret(AppSecret)DINGTALK_ROBOT_CODE- 可选,机器人 Code,默认与 Client ID 相同DINGTALK_CORP_ID- 可选,企业 IDDINGTALK_AGENT_ID- 可选,应用 Agent ID
💡 参考项目:openclaw-channel-dingtalk - 钉钉渠道完整实现示例
QQ 机器人配置
- 访问 QQ 开放平台
- 创建机器人应用
- 获取 AppID 和 AppSecret(ClientSecret)
- 获取主机在公网的 IP,配置到 IP 白名单
在 .env 文件中添加:
QQBOT_APP_ID=你的AppID
QQBOT_CLIENT_SECRET=你的AppSecret💡 参考项目:qqbot - QQ 机器人完整实现示例
企业微信配置
- 访问 企业微信管理后台
- 进入"应用管理",用 API 模式创建一个或多个"智能机器人"应用
- 在每个应用的"接收消息"配置中设置 Token 和 EncodingAESKey
- 配置对应回调 URL(见下方单账号/多账号路径说明)
在 .env 文件中添加:
WECOM_TOKEN=your-token
WECOM_ENCODING_AES_KEY=your-aes-key启动后会自动写入
channels.wecom.default结构,旧配置无需手工迁移。
在 openclaw.json 的 channels.wecom 下使用字典结构,每个 key 为账号 ID(如 bot1、bot2),每个 value 为该账号独立配置:
{
"channels": {
"wecom": {
"bot1": {
"token": "Bot1 的 Token",
"encodingAesKey": "Bot1 的 EncodingAESKey",
"adminUsers": ["admin1"],
"agent": {
"corpId": "企业 CorpID",
"corpSecret": "Bot1 应用 Secret",
"agentId": 1000001,
"token": "Bot1 回调 Token",
"encodingAesKey": "Bot1 回调 EncodingAESKey"
},
"webhooks": {
"ops-group": "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"
}
},
"bot2": {
"token": "Bot2 的 Token",
"encodingAesKey": "Bot2 的 EncodingAESKey",
"agent": {
"corpId": "企业 CorpID",
"corpSecret": "Bot2 应用 Secret",
"agentId": 1000002
}
}
}
}
}现在支持直接在 .env.example / .env 中通过 WECOM_BOTS_JSON 配置多账号,并由 docker-compose.yml 自动透传到容器。
示例(单行 JSON):
WECOM_BOTS_JSON={"bot1":{"token":"t1","encodingAesKey":"k1","agent":{"corpId":"wwxxx","corpSecret":"s1","agentId":1000001}},"bot2":{"token":"t2","encodingAesKey":"k2","agent":{"corpId":"wwxxx","corpSecret":"s2","agentId":1000002}}}说明:
WECOM_BOTS_JSON会与现有channels.wecom做深度合并,不会粗暴覆盖整个对象- 若同时配置了
WECOM_TOKEN/WECOM_ENCODING_AES_KEY,会写入default账号 - 若
WECOM_BOTS_JSON中也包含default,其字段会覆盖同名字段
- 账号 ID 仅支持小写字母、数字、
-、_ - 旧单账号结构(
token直接写在wecom下)会自动识别并迁移为default账号 - WeCom 机器人回调路径按账号分配:
/webhooks/wecom/{accountId},例如bot1对应/webhooks/wecom/bot1 - Agent 回调路径按账号分配:
/webhooks/app/{accountId},例如bot2对应/webhooks/app/bot2 - 动态会话 ID 按账号隔离:
wecom-{accountId}-dm-{userId}、wecom-{accountId}-group-{chatId} - 启动时会自动检测重复 Token / Agent ID,避免消息路由冲突
/webhooks/wecom/bot1)。
💡 参考项目:openclaw-plugin-wecom - 企业微信插件完整实现示例
点击展开 AIClient-2-API 配置说明
本项目已支持 OpenAI 和 Claude 两种协议,可直接对接 AIClient-2-API 服务。
- 启动 AIClient-2-API 服务
- 在 Web UI (
http://localhost:3000) 配置至少一个提供商 - 记录配置文件中的 API Key
在 .env 文件中配置:
MODEL_ID=gemini-3-flash-preview
BASE_URL=http://localhost:3000/v1
API_KEY=your-api-key
API_PROTOCOL=openai-completions
CONTEXT_WINDOW=1000000
MAX_TOKENS=8192在 .env 文件中配置:
MODEL_ID=claude-sonnet-4-5
BASE_URL=http://localhost:3000
API_KEY=your-api-key
API_PROTOCOL=anthropic-messages
CONTEXT_WINDOW=200000
MAX_TOKENS=8192如需指定特定提供商,可修改 Base URL:
# Kiro 提供的 Claude (OpenAI 协议)
BASE_URL=http://localhost:3000/claude-kiro-oauth/v1
# Kiro 提供的 Claude (Claude 协议)
BASE_URL=http://localhost:3000/claude-kiro-oauth
# Gemini CLI (OpenAI 协议)
BASE_URL=http://localhost:3000/gemini-cli-oauth/v1
# Antigravity (OpenAI 协议)
BASE_URL=http://localhost:3000/gemini-antigravity/v1使用 Docker 命令运行
如果不使用 Docker Compose,可以直接使用 Docker 命令:
docker run -d \
--name openclaw-gateway \
--cap-add=CHOWN \
--cap-add=SETUID \
--cap-add=SETGID \
--cap-add=DAC_OVERRIDE \
-e MODEL_ID=model id \
-e BASE_URL=http://xxxxx/v1 \
-e API_KEY=123456 \
-e API_PROTOCOL=openai-completions \
-e CONTEXT_WINDOW=200000 \
-e MAX_TOKENS=8192 \
-e FEISHU_APP_ID=your-app-id \
-e FEISHU_APP_SECRET=your-app-secret \
-e DINGTALK_CLIENT_ID=your-dingtalk-client-id \
-e DINGTALK_CLIENT_SECRET=your-dingtalk-client-secret \
-e DINGTALK_ROBOT_CODE=your-dingtalk-robot-code \
-e DINGTALK_CORP_ID=your-dingtalk-corp-id \
-e DINGTALK_AGENT_ID=your-dingtalk-agent-id \
-e QQBOT_APP_ID=your-qqbot-app-id \
-e QQBOT_CLIENT_SECRET=your-qqbot-client-secret \
-e WECOM_TOKEN=your-token \
-e WECOM_ENCODING_AES_KEY=your-aes-key \
-e OPENCLAW_GATEWAY_TOKEN=123456 \
-e OPENCLAW_GATEWAY_BIND=lan \
-e OPENCLAW_GATEWAY_PORT=18789 \
-v ~/.openclaw:/home/node/.openclaw \
-v ~/.openclaw/workspace:/home/node/.openclaw/workspace \
-p 18789:18789 \
-p 18790:18790 \
--restart unless-stopped \
justlikemaki/openclaw-docker-cn-im:latest数据持久化
容器使用以下卷进行数据持久化:
/home/node/.openclaw- OpenClaw 配置和数据目录/home/node/.openclaw/workspace- 工作空间目录
端口说明
18789- OpenClaw Gateway 端口18790- OpenClaw Bridge 端口
自定义配置文件
如果需要完全自定义配置文件,可以:
- 在宿主机创建配置文件
~/.openclaw/openclaw.json - 挂载该目录到容器:
-v ~/.openclaw:/home/node/.openclaw - 容器启动时会检测到已存在的配置文件,跳过自动生成
项目文件说明
Dockerfile- Docker 镜像构建文件init.sh- 容器初始化脚本(作为主程序运行)docker-compose.yml- Docker Compose 配置文件.env.example- 环境变量配置模板.dockerignore- Docker 构建忽略文件openclaw.json.example- OpenClaw 默认配置文件示例
构建镜像
docker build -t justlikemaki/openclaw-docker-cn-im:latest .初始化脚本功能
init.sh 脚本在容器启动时执行以下操作:
- 创建必要的目录结构
- 根据环境变量动态生成配置文件(如果不存在)
- 设置正确的文件权限
- 启动 OpenClaw Gateway 服务(verbose 模式)
配置文件生成
容器首次启动时,如果 /home/node/.openclaw/openclaw.json 不存在,初始化脚本会根据环境变量自动生成配置文件,包括:
- 模型配置:使用指定的模型和 Provider
- 通道配置:根据提供的环境变量启用相应的 IM 平台
- Gateway 配置:端口、绑定地址、认证令牌
- 插件配置:自动启用相应的通道插件
安装的包
镜像中已全局安装以下 npm 包:
openclaw@latest- OpenClaw 主程序opencode-ai@latest- OpenCode AIplaywright- Playwright 浏览器自动化工具@openclaw/feishu- 飞书插件clawdbot-channel-dingtalk- 钉钉插件(从 GitHub 安装)qqbot- QQ 机器人插件(先克隆到/tmp/qqbot,然后从本地目录安装)openclaw-plugin-wecom- 企业微信插件(从 GitHub 安装)
启动命令
容器使用以下命令启动 OpenClaw:
openclaw gateway --verbose这将以详细日志模式启动 Gateway 服务。
如果这个项目对您有帮助,请给我们一个 Star ⭐️!您的支持是我们持续改进的动力。
如果您觉得这个项目对您有帮助,欢迎赞助支持我们的开发工作!
感谢以下赞助者的支持:
赞助者列表将在这里更新
本项目基于 OpenClaw 构建,遵循 GNU General Public License v3.0 (GPL-3.0) 许可证。详见 LICENSE 文件。
