飞书/钉钉/QQ 机器人一站式搞定!OpenClaw Docker 部署教程

飞书/钉钉/QQ 机器人一站式搞定!OpenClaw Docker 部署教程

一、概述

OpenClaw-Docker-CN-IM(OpenClaw 中国IM平台整合Docker版本)是一款容器化应用,旨在提供集成中国主流IM平台的AI机器人网关解决方案。该镜像预装并配置了飞书、钉钉、QQ机器人、企业微信等插件,支持通过环境变量灵活配置,实现快速部署与数据持久化。

同时集成了OpenCode AI代码助手、Playwright浏览器自动化工具及中文TTS语音合成功能,适用于需要构建多平台IM机器人的开发者与科研用户。

本指南将详细介绍其Docker部署流程,包括环境准备、镜像拉取、容器配置、功能测试及生产环境优化建议,帮助用户快速实现服务部署与应用。

二、项目简介与核心特性

2.1 项目简介

OpenClaw 中国 IM 插件整合版 Docker 镜像,预装并配置了飞书、钉钉、QQ机器人、企业微信等主流中国 IM 平台插件,让您可以快速部署一个支持多个中国 IM 平台的 AI 机器人网关。

官方项目地址: https://github.com/justlovemaki/OpenClaw-Docker-CN-IM

国内镜像地址:

2.2 核心特性

  • 🚀 开箱即用:预装所有中国主流 IM 平台插件
  • 🔧 灵活配置:通过环境变量轻松配置各平台凭证
  • 🐳 Docker 部署:一键启动,无需复杂配置
  • 📦 数据持久化:支持配置和工作空间数据持久化
  • 💻 OpenCode AI:内置 AI 代码助手,支持智能代码生成和分析
  • 🎭 Playwright:预装浏览器自动化工具,支持网页操作和截图
  • 🗣️ 中文 TTS:支持中文语音合成(Text-to-Speech)

2.3 支持的平台

2.3.1 IM 平台

  • ✅ 飞书(Feishu/Lark)
  • ✅ 钉钉(DingTalk)
  • ✅ QQ 机器人(QQ Bot)
  • ✅ 企业微信(WeCom)

2.3.2 集成工具

  • ✅ OpenCode AI - AI 代码助手
  • ✅ Playwright - 浏览器自动化
  • ✅ 中文 TTS - 语音合成

推荐搭配:OpenClaw 功能强大但 Token 消耗较大,推荐配合 AIClient-2-API 项目使用,将各大 AI 客户端转换为标准 API 接口,实现无限 Token 调用,彻底解决 Token 焦虑!本项目已支持 OpenAI 和 Claude 两种协议,可直接对接 AIClient-2-API 服务。

三、环境准备

3.1 Docker环境安装

部署OpenClaw-Docker-CN-IM前需确保Docker环境已正确安装。推荐使用以下一键安装脚本(适用于Linux系统):

bash<(wget -qO- https://xuanyuan.cloud/docker.sh)

安装完成后,可通过以下命令验证Docker是否正常运行:

docker--version# 检查Docker版本docker info # 查看Docker系统信息

四、镜像准备

4.1 拉取镜像

使用以下命令通过轩辕镜像访问支持域名拉取最新版本的 OpenClaw-Docker-CN-IM 镜像(拉取后将在配置文件中直接引用,确保镜像有效使用):

docker pull docker.xuanyuan.run/justlikemaki/openclaw-docker-cn-im:latest 

拉取完成后,可通过以下命令验证镜像是否成功下载:

docker images |grep justlikemaki/openclaw-docker-cn-im 

轩辕镜像地址:https://xuanyuan.cloud/zh/r/justlikemaki/openclaw-docker-cn-im

备用拉取命令(直接从Docker Hub拉取):

docker pull justlikemaki/openclaw-docker-cn-im:latest 

五、快速开始(一键部署)

按照以下步骤,可快速启动OpenClaw-Docker-CN-IM服务,无需复杂配置。

5.1 获取配置文件

无需下载配置文件,直接复制以下完整内容,分别创建 docker-compose.yml 和 .env.example 文件(两个文件需放在同一目录下):

5.1.1 docker-compose.yml 完整内容

version: '3.8' services: openclaw-gateway: container_name: openclaw-gateway image: ${OPENCLAW_IMAGE}# 引用.env文件中的镜像配置,默认使用轩辕拉取的镜像 cap_add: - CHOWN - SETUID - SETGID - DAC_OVERRIDE # 可选:指定容器运行 UID:GID(例如 1000:1000)# 默认保持 root 启动,以便 init.sh 自动修复挂载卷权限后再降权运行网关 user: ${OPENCLAW_RUN_USER:-0:0} environment: TZ: Asia/Shanghai HOME: /home/node TERM: xterm-256color # 模型配置 SYNC_MODEL_CONFIG: ${SYNC_MODEL_CONFIG} MODEL_ID: ${MODEL_ID} IMAGE_MODEL_ID: ${IMAGE_MODEL_ID} BASE_URL: ${BASE_URL} API_KEY: ${API_KEY} API_PROTOCOL: ${API_PROTOCOL} CONTEXT_WINDOW: ${CONTEXT_WINDOW} MAX_TOKENS: ${MAX_TOKENS}# 提供商 2 (可选) MODEL2_NAME: ${MODEL2_NAME} MODEL2_MODEL_ID: ${MODEL2_MODEL_ID} MODEL2_BASE_URL: ${MODEL2_BASE_URL} MODEL2_API_KEY: ${MODEL2_API_KEY} MODEL2_PROTOCOL: ${MODEL2_PROTOCOL} MODEL2_CONTEXT_WINDOW: ${MODEL2_CONTEXT_WINDOW} MODEL2_MAX_TOKENS: ${MODEL2_MAX_TOKENS}# 通道配置 TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN} FEISHU_APP_ID: ${FEISHU_APP_ID} FEISHU_APP_SECRET: ${FEISHU_APP_SECRET} DINGTALK_CLIENT_ID: ${DINGTALK_CLIENT_ID} DINGTALK_CLIENT_SECRET: ${DINGTALK_CLIENT_SECRET} DINGTALK_ROBOT_CODE: ${DINGTALK_ROBOT_CODE} DINGTALK_CORP_ID: ${DINGTALK_CORP_ID} DINGTALK_AGENT_ID: ${DINGTALK_AGENT_ID} QQBOT_APP_ID: ${QQBOT_APP_ID} QQBOT_CLIENT_SECRET: ${QQBOT_CLIENT_SECRET} NAPCAT_REVERSE_WS_PORT: ${NAPCAT_REVERSE_WS_PORT} NAPCAT_HTTP_URL: ${NAPCAT_HTTP_URL} NAPCAT_ACCESS_TOKEN: ${NAPCAT_ACCESS_TOKEN} NAPCAT_ADMINS: ${NAPCAT_ADMINS}# 企业微信配置 WECOM_TOKEN: ${WECOM_TOKEN} WECOM_ENCODING_AES_KEY: ${WECOM_ENCODING_AES_KEY}# 企业微信多账号配置(JSON 字符串,示例见 .env.example) WECOM_BOTS_JSON: ${WECOM_BOTS_JSON}# 工作空间配置 WORKSPACE: ${WORKSPACE}# Gateway 配置 OPENCLAW_GATEWAY_TOKEN: ${OPENCLAW_GATEWAY_TOKEN} OPENCLAW_GATEWAY_BIND: ${OPENCLAW_GATEWAY_BIND} OPENCLAW_GATEWAY_PORT: ${OPENCLAW_GATEWAY_PORT} OPENCLAW_BRIDGE_PORT: ${OPENCLAW_BRIDGE_PORT} OPENCLAW_GATEWAY_MODE: ${OPENCLAW_GATEWAY_MODE} OPENCLAW_GATEWAY_ALLOWED_ORIGINS: ${OPENCLAW_GATEWAY_ALLOWED_ORIGINS} OPENCLAW_GATEWAY_ALLOW_INSECURE_AUTH: ${OPENCLAW_GATEWAY_ALLOW_INSECURE_AUTH} OPENCLAW_GATEWAY_DANGEROUSLY_DISABLE_DEVICE_AUTH: ${OPENCLAW_GATEWAY_DANGEROUSLY_DISABLE_DEVICE_AUTH} OPENCLAW_GATEWAY_AUTH_MODE: ${OPENCLAW_GATEWAY_AUTH_MODE}# 插件控制 OPENCLAW_PLUGINS_ENABLED: ${OPENCLAW_PLUGINS_ENABLED} volumes: - ${OPENCLAW_DATA_DIR}:/home/node/.openclaw # 使用匿名卷排除 extensions 目录,使用镜像中预装的插件 - /home/node/.openclaw/extensions ports: - "${OPENCLAW_GATEWAY_PORT}:18789" - "${OPENCLAW_BRIDGE_PORT}:18790" init: true restart: unless-stopped 

5.1.2 .env.example 完整内容

# OpenClaw Docker 环境变量配置示例# 复制此文件为 .env 并修改相应的值# 注意:若使用轩辕镜像拉取的镜像,可将下方OPENCLAW_IMAGE改为 docker.xuanyuan.run/justlikemaki/openclaw-docker-cn-im:latest# Docker 镜像配置(直接引用拉取的镜像,确保镜像有效使用)OPENCLAW_IMAGE=justlikemaki/openclaw-docker-cn-im:latest # 轩辕镜像配置(若已通过轩辕镜像拉取,建议替换上方地址为以下内容)# OPENCLAW_IMAGE=docker.xuanyuan.run/justlikemaki/openclaw-docker-cn-im:latest# 模型配置# 是否自动同步模型配置到 openclaw.json (true/false)# 如果你手动修改了 openclaw.json 中的模型设置,请将其设为 falseSYNC_MODEL_CONFIG=true # 提供商 1 (默认)# 主模型 ID (支持多个,用逗号隔开,第一个将作为默认模型)MODEL_ID=model id# 图片模型 ID (可选,留空则使用 MODEL_ID,支持 provider/model 格式)IMAGE_MODEL_ID=BASE_URL=http://xxxxx/v1 API_KEY=123456# API 协议类型: openai-completions 或 anthropic-messagesAPI_PROTOCOL=openai-completions # 模型上下文窗口大小CONTEXT_WINDOW=200000# 模型最大输出 tokensMAX_TOKENS=8192# 提供商 2 (可选)# MODEL2_NAME=model2# MODEL2_MODEL_ID=model id1,model id2# MODEL2_BASE_URL=http://xxxxx/v1# MODEL2_API_KEY=123456# MODEL2_PROTOCOL=openai-completions# MODEL2_CONTEXT_WINDOW=200000# MODEL2_MAX_TOKENS=8192# Telegram 配置(可选,留空则不启用)TELEGRAM_BOT_TOKEN=# 飞书配置(可选,留空则不启用)FEISHU_APP_ID=FEISHU_APP_SECRET=# 钉钉配置(可选,留空则不启用)DINGTALK_CLIENT_ID=DINGTALK_CLIENT_SECRET=DINGTALK_ROBOT_CODE=DINGTALK_CORP_ID=DINGTALK_AGENT_ID=# QQ 机器人配置(可选,留空则不启用)QQBOT_APP_ID=QQBOT_CLIENT_SECRET=# NapCat (OneBot v11) 配置(可选,留空则不启用)# NapCat 反向 WS 监听端口(NapCat 主动连接到此端口)NAPCAT_REVERSE_WS_PORT=# NapCat HTTP API 地址(可选,用于主动发送消息)NAPCAT_HTTP_URL=# 连接鉴权 Token(与 NapCat 侧保持一致)NAPCAT_ACCESS_TOKEN=# 管理员用户 ID,多个用逗号分隔NAPCAT_ADMINS=# 企业微信配置(可选,留空则不启用)# 方式1:单账号(兼容旧格式),会自动同步为 channels.wecom.defaultWECOM_TOKEN=WECOM_ENCODING_AES_KEY=# 方式2:多账号(Multi-Bot)JSON,支持 bot1/bot2... 独立配置(会与现有配置深度合并)# 注意:.env 中 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=# 工作空间配置(不要更改)WORKSPACE=/home/node/.openclaw/workspace # 挂载目录配置(按实际更改)# OpenClaw 数据目录(包含配置文件、工作空间等所有数据)OPENCLAW_DATA_DIR=~/.openclaw # 可选:容器启动用户 UID:GID# 默认 0:0(root)用于 init.sh 自动修复挂载目录权限,再降权为 node 启动服务# 如需与宿主机用户对齐,可设置为 1000:1000 或 Linux 上的 $(id -u):$(id -g)OPENCLAW_RUN_USER=0:0 # Gateway 配置## 网关 token,用于认证(按实际更改)OPENCLAW_GATEWAY_TOKEN=123456OPENCLAW_GATEWAY_BIND=lan OPENCLAW_GATEWAY_PORT=18789OPENCLAW_BRIDGE_PORT=18790OPENCLAW_GATEWAY_MODE=local # 允许的 Origin 域,多个用逗号隔开OPENCLAW_GATEWAY_ALLOWED_ORIGINS=http://localhost # 允许不安全认证(如 http),可选 true/falseOPENCLAW_GATEWAY_ALLOW_INSECURE_AUTH=true # 危险:禁用设备认证(如在 Docker 环境中无法获取设备信息),可选 true/falseOPENCLAW_GATEWAY_DANGEROUSLY_DISABLE_DEVICE_AUTH=false # 插件全局控制OPENCLAW_PLUGINS_ENABLED=true 

5.2 配置环境变量

复制环境变量模板并编辑,至少配置AI模型相关参数,同时确认镜像配置与拉取的轩辕镜像一致:

# 复制环境变量模板cp .env.example .env 
# 编辑配置文件(推荐使用nano或vim)nano .env 

5.2.1 最小配置示例

环境变量说明示例值
MODEL_IDAI 模型名称gpt-4
BASE_URLAI 服务 API 地址https://api.openai.com/v1
API_KEYAI 服务 API 密钥sk-xxx…
OPENCLAW_IMAGE镜像地址(轩辕镜像)docker.xuanyuan.run/justlikemaki/openclaw-docker-cn-im:latest

提示:IM 平台配置为可选项,可以先启动服务,后续再配置需要的平台。

5.3 启动服务

docker-compose up -d

5.4 查看日志

docker-compose logs -f

5.5 停止服务

docker-compose down 

六、详细配置指南

6.1 AI 模型配置

本项目支持 OpenAI 协议和 Claude 协议两种 API 格式,可直接对接 AIClient-2-API 服务。

推荐模型:推荐使用 gemini-3-flash-preview 模型,该模型具有超大上下文窗口(1M tokens)、快速响应速度和优秀的性价比,非常适合作为 OpenClaw 的后端模型。

6.1.1 基础配置参数

参数说明默认值
MODEL_ID模型名称model id
BASE_URLProvider Base URLhttp://xxxxx/v1
API_KEYProvider API Key123456
API_PROTOCOLAPI 协议类型openai-completions
CONTEXT_WINDOW模型上下文窗口大小200000
MAX_TOKENS模型最大输出 tokens8192

6.1.2 协议类型说明

协议类型适用模型Base URL 格式特殊特性
openai-completionsOpenAI、Gemini 等需要 /v1 后缀-
anthropic-messagesClaude不需要 /v1 后缀Prompt Caching、Extended Thinking

6.1.3 配置示例

  1. 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=8192 
  1. Claude 协议(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 

6.1.4 AIClient-2-API 配置补充

前置准备:启动 AIClient-2-API 服务,在 Web UI (http://localhost:3000) 配置至少一个提供商,记录配置文件中的 API Key。

如需指定特定提供商,可修改 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 

6.2 Gateway 配置

参数说明默认值
OPENCLAW_GATEWAY_TOKENGateway 访问令牌123456
OPENCLAW_GATEWAY_BIND绑定地址lan
OPENCLAW_GATEWAY_PORTGateway 端口18789
OPENCLAW_BRIDGE_PORTBridge 端口18790

6.3 工作空间配置

参数说明默认值
WORKSPACE工作空间目录/home/node/.openclaw/workspace

6.4 IM 平台配置

6.4.1 飞书配置

  1. 获取飞书机器人凭证
  • 在 飞书开放平台 创建自建应用
  • 添加应用能力-机器人
  • 在凭证页面获取 App ID 和 App Secret
  • 开启所需权限(见下方)⚠️ 重要
  • 配置事件订阅(见下方)⚠️ 重要
  1. 必需权限(租户级别)
权限范围说明
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聊天事件读取机器人单聊事件
  1. 推荐权限(租户级别)
权限范围说明
contact:user.employee_id:readonly用户信息获取用户员工 ID(用于用户识别)
im:message:readonly读取获取历史消息
application:application:self_manage应用管理应用自我管理
application:bot.menu:write机器人菜单配置机器人菜单
event:ip_listIP 列表获取飞书服务器 IP 列表
  1. 可选权限(租户级别)
权限范围说明
aily:file:readAI 文件读取读取 AI 助手文件
aily:file:writeAI 文件写入写入 AI 助手文件
application:application.app_message_stats.overview:readonly消息统计查看应用消息统计概览
corehr:file:download人事文件下载人事系统文件
  1. 用户级别权限(可选)
权限范围说明
aily:file:readAI 文件读取以用户身份读取 AI 助手文件
aily:file:writeAI 文件写入以用户身份写入 AI 助手文件
im:chat.access_event.bot_p2p_chat:read聊天事件以用户身份读取机器人单聊事件
  1. 事件订阅 ⚠️(最容易遗漏)

如果机器人能发消息但收不到消息,请检查此项。在飞书开放平台的应用后台,进入 事件与回调 页面:

  • 事件配置方式:选择 使用长连接接收事件(推荐)
  • 添加事件订阅,勾选以下事件:
事件说明
im.message.receive_v1接收消息(必需)
im.message.message_read_v1消息已读回执
im.chat.member.bot.added_v1机器人进群
im.chat.member.bot.deleted_v1机器人被移出群

确保事件订阅的权限已申请并通过审核。

  1. 环境变量配置(在 .env 文件中添加)
FEISHU_APP_ID=your-app-id FEISHU_APP_SECRET=your-app-secret 

6.4.2 钉钉配置

  1. 创建钉钉应用
  • 访问 钉钉开发者后台
  • 创建企业内部应用
  • 添加「机器人」能力
  • 配置消息接收模式为 Stream 模式
  • 发布应用
  1. 获取凭证

从开发者后台获取:Client ID(AppKey)、Client Secret(AppSecret)、Robot Code(与 Client ID 相同)、Corp ID(与 Client ID 相同)、Agent ID(应用 ID)

  1. 环境变量配置(在 .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 - 可选,企业 ID
  • DINGTALK_AGENT_ID - 可选,应用 Agent ID

6.4.3 QQ 机器人配置

  1. 获取 QQ 机器人凭证
  • 访问 QQ 开放平台
  • 创建机器人应用
  • 获取 AppID 和 AppSecret(ClientSecret)
  • 获取主机在公网的 IP,配置到 IP 白名单
  1. 环境变量配置(在 .env 文件中添加)
QQBOT_APP_ID=你的AppID QQBOT_CLIENT_SECRET=你的AppSecret 

6.4.4 企业微信配置

  1. 获取企业微信凭证
  • 访问 企业微信管理后台
  • 进入"应用管理" - 用 API 模式创建"智能机器人"应用
  • 在应用的"接收消息"配置中设置 Token 和 EncodingAESKey
  • 设置"接收消息"URL 为你的服务地址(例如:https://your-domain.com/webhooks/wxwork),需要当前服务可公网访问
  1. 环境变量配置(在 .env 文件中添加)
WECOM_TOKEN=your-token WECOM_ENCODING_AES_KEY=your-aes-key 

七、高级使用

7.1 使用 Docker 命令运行

如果不使用 Docker Compose,可以直接使用 Docker 命令启动容器(引用轩辕镜像,确保镜像有效使用):

docker run -d\--name openclaw-gateway \ --cap-add=CHOWN \ --cap-add=SETUID \ --cap-add=SETGID \ --cap-add=DAC_OVERRIDE \-eMODEL_ID=model id\-eBASE_URL=http://xxxxx/v1 \-eAPI_KEY=123456\-eAPI_PROTOCOL=openai-completions \-eCONTEXT_WINDOW=200000\-eMAX_TOKENS=8192\-eFEISHU_APP_ID=your-app-id \-eFEISHU_APP_SECRET=your-app-secret \-eDINGTALK_CLIENT_ID=your-dingtalk-client-id \-eDINGTALK_CLIENT_SECRET=your-dingtalk-client-secret \-eDINGTALK_ROBOT_CODE=your-dingtalk-robot-code \-eDINGTALK_CORP_ID=your-dingtalk-corp-id \-eDINGTALK_AGENT_ID=your-dingtalk-agent-id \-eQQBOT_APP_ID=your-qqbot-app-id \-eQQBOT_CLIENT_SECRET=your-qqbot-client-secret \-eWECOM_TOKEN=your-token \-eWECOM_ENCODING_AES_KEY=your-aes-key \-eOPENCLAW_GATEWAY_TOKEN=123456\-eOPENCLAW_GATEWAY_BIND=lan \-eOPENCLAW_GATEWAY_PORT=18789\-v ~/.openclaw:/home/node/.openclaw \-v ~/.openclaw/workspace:/home/node/.openclaw/workspace \-p18789:18789 \-p18790:18790 \--restart unless-stopped \ docker.xuanyuan.run/justlikemaki/openclaw-docker-cn-im:latest # 使用轩辕镜像

7.2 数据持久化

容器使用以下卷进行数据持久化,确保配置和工作数据不丢失:

    • /home/node/.openclaw - OpenClaw 配置和数据目录
    • /home/node/.openclaw/workspace - 工作空间目录

7.3 端口说明

    • 18789 - OpenClaw Gateway 端口
    • 18790 - OpenClaw Bridge 端口

7.4 自定义配置文件

如果需要完全自定义配置文件,可按以下步骤操作:

    • 在宿主机创建配置文件 ~/.openclaw/openclaw.json
    • 挂载该目录到容器:-v ~/.openclaw:/home/node/.openclaw
    • 容器启动时会检测到已存在的配置文件,跳过自动生成

八、常见问题

Q: 修改了环境变量但配置没有生效?

容器启动时只有在配置文件不存在时才会生成新配置。如需重新生成配置,请删除现有配置文件:

# 删除配置文件rm ~/.openclaw/openclaw.json # 重启容器docker-compose restart 

或者直接删除整个数据目录重新开始:

rm-rf ~/.openclaw docker-compose up -d

Q: 连接 AIClient-2-API 失败?

  • 确认 AIClient-2-API 服务运行中
  • 检查 Base URL 是否正确(OpenAI 协议需要 /v1 后缀)
  • 尝试使用 127.0.0.1 替代 localhost

Q: 401 错误?

  • 检查 API Key 是否正确配置
  • 确认环境变量 API_KEY 已设置

Q: 模型不可用?

  • 在 AIClient-2-API Web UI 确认已配置对应提供商
  • 重启容器:docker-compose restart

Q: 飞书机器人能发消息但收不到消息?

  • 检查是否配置了事件订阅(最容易遗漏的配置)
  • 确认事件配置方式选择了"使用长连接接收事件"
  • 确认已添加 im.message.receive_v1 事件

Q: Telegram 机器人如何配对?

如果需要启用 Telegram,必须提供有效的 TELEGRAM_BOT_TOKEN,启用后需要执行以下命令进行配对审批:

openclaw pairing approve telegram {token}

并且需要重启 Docker 服务使配置生效。

Q: 同样的启动命令,为什么有人报错 Permission denied?

这通常不是命令本身不稳定,而是运行上下文变化导致:宿主机挂载目录所有者(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 且权限不足,就会报错。

解决方案(推荐顺序)

  1. 宿主机修正目录所有权(最直接)
sudochown-R1000:1000 ~/.openclaw 
  1. 显式指定容器运行用户(可选)

在 .env 中设置:

OPENCLAW_RUN_USER=1000:1000 

然后重启:

docker compose up -d
  1. SELinux 场景(CentOS/RHEL/Fedora)

若权限看起来没问题但仍拒绝访问,请给挂载卷加 😒 或 :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 后缀

Read more

【ZYNQ必学】PS-PL架构完全解析:从零理解ARM+FPGA融合设计(附实战案例)

【ZYNQ必学】PS-PL架构完全解析:从零理解ARM+FPGA融合设计(附实战案例) 📚 目录导航 文章目录 * 【ZYNQ必学】PS-PL架构完全解析:从零理解ARM+FPGA融合设计(附实战案例) * 📚 目录导航 * 概述 * 一、PS-PL架构基础概念 * 1.1 什么是PS和PL * 1.1.1 PS(处理系统)定义 * 1.1.2 PL(可编程逻辑)定义 * 1.1.3 PS vs PL对比 * 1.2 ZYNQ基本结构 * 1.2.1 ZYNQ-7000系列架构 * 1.2.2 ZYNQ-7000的整体架构 * 1.3

微搭低代码MBA 培训管理系统实战 19——教务管理:从订单到课时卡的自动转化

微搭低代码MBA 培训管理系统实战 19——教务管理:从订单到课时卡的自动转化

目录 * 前情回顾 * 一、 数据源设计 * 1.1 学员档案表 (`MBA_StudentProfiles`) * 1.2 课时卡表 (`MBA_LearningCards`) * 二 创建管理页面 * 2.1 搭建财务布局 * 2.2 搭建待支付列表页面 * 2.3 搭建确认支付弹窗 * 2.4 自动化开课 * 三 配置门户数据 * 最终效果 * 总结 前情回顾 上一篇中我们讲解了销售在订单成交后,录入订单。此时订单的状态还是待支付的状态,需要财务确认收款情况。财务人员点击了"确认收款",订单状态变更为 已清账。此时,资金流已经闭环,但学员在系统里还只是一个"商机客户",没有上课的权限。

clawdbot (openclaw) + discord 机器人部署指南学习教程

clawdbot (openclaw) + discord 机器人部署指南学习教程

本文介绍了基于 ClawdBot(OpenClaw)框架在 Discord 平台部署 AI 对话机器人的完整流程。内容包括:Discord Application 与 Bot 的创建配置、OAuth2 权限管理、pnpm 全局安装、Daemon 服务配置、多模型 API 接入(支持智谱 GLM 等主流大模型)、Gateway 服务启动与调试等核心环节。 一、网络要求 * 魔法 * 确保网络能够访问Discord服务 * TUN模式(关键哦) 二、Discord平台配置 2.1 访问Discord开发者平台 访问地址:https://discord.com/developers/applications 2.2 创建应用程序 1. 登录Discord开发者平台

AI魔术师:基于视觉的增强现实特效

AI魔术师:基于视觉的增强现实特效

AI魔术师:基于视觉的增强现实特效 * 一、前言 * 二、AR 与视觉 AI 的技术基石 * 2.1 增强现实的核心概念 * 2.2 计算机视觉与 AI 的技术融合 * 2.3 技术栈选型与环境搭建 * 三、视觉 AR 的核心技术解析 * 3.1 相机标定与坐标系统 * 3.1.1 相机标定原理 * 3.1.2 标定代码实现 * 3.2 实时特征跟踪技术 * 3.2.1 ORB 特征跟踪原理 * 3.2.2 单目视觉里程计实现 * 3.3 语义分割与虚实融合