Windows 10部署OpenClaw-CN龙虾机器人避坑指南:飞书鉴权、UAC权限与Docker日志驱动三步解决

Windows 10 部署 OpenClaw-CN(龙虾)避坑指南
问题:在 Windows 10 上直接 docker-compose up 启动 OpenClaw-CN,机器人不响应飞书消息,控制台无报错,网页管理页空白——90% 是飞书鉴权失败 + UAC 权限拦截 + 日志被 Docker 默认驱动丢弃。
方案:三步闭环——填对飞书 OAuth2 凭据 → 放行 Windows 安全策略 → 切换日志驱动定位真实错误。不装 WSL2、不改注册表、不碰 PowerShell 策略组,纯 Docker Desktop 原生支持。
步骤 1:飞书 App ID / Secret 配置(OAuth2 鉴权原理)
OpenClaw-CN 启动时用 APP_ID 和 APP_SECRET 向飞书申请 tenant_access_token,这是调用飞书 API 的临时凭证。填错、多空格、混入中文标点,服务会静默退出——因为鉴权失败发生在启动流程早期,根本来不及输出错误。
✅ 操作:
# 进入项目根目录,编辑 .env 文件(用记事本或 VS Code 打开)
notepad .env确保这三行严格无空格、无引号、无中文标点:
FEISHU_APP_ID=cli_XXXXXX # 复制飞书开放平台「应用凭证」里的 App ID(不是 App Key!)
FEISHU_APP_SECRET=XXX... # 复制「应用凭证」里的 App Secret(32位字母数字)
FEISHU_ENCRYPT_KEY= # 留空(未开启消息加密时必须为空,填了反而出错)⚠️ 注意:飞书 OAuth2 对 client_id(即 APP_ID)和 client_secret 敏感。ENCRYPT_KEY 若留空但飞书后台启用了消息加密,会返回 400 错误,而 Docker 默认不打印这类前置失败日志。
步骤 2:修复 Windows 系统安全权限(UAC 干预原理)
Docker Desktop 在 Win10 默认以低完整性级别运行。如果 .env 或 config/ 下的文件是从浏览器下载解压的,Windows 会自动打上“来自互联网”标记并设为只读——Docker 进程读取失败,.env 变量全为空,APP_ID 缺失 → 鉴权跳过 → 服务卡在初始化阶段,看起来像“假死”。
✅ 操作:
# 以管理员身份打开 PowerShell(右键开始菜单 → Windows PowerShell(管理员))
cd C:\openclaw-cn
# 清除只读属性并赋予当前用户完全控制权
attrib -R config\*.*
icacls config\*.* /grant "%USERNAME%:(F)" /T⚠️ 注意:icacls 直接修改 ACL,比右键属性里手动勾选“完全控制”更可靠,尤其对批量文件。UAC 拦截的是文件访问权限,不是 Docker 本身。
步骤 3:切换日志驱动排错(Docker 日志定位逻辑)
默认 json-file 驱动在 Windows 上容易丢失启动瞬间的日志(比如鉴权失败崩溃)。换成 local 驱动能稳定捕获,并支持实时过滤关键线索。
✅ 操作:

# 编辑 docker-compose.yml,在 services.openclaw.cn 下添加日志配置
notepad docker-compose.yml在 openclaw-cn 服务块末尾加入:
logging:
driver: "local"
options:
max-size: "10m"
max-file: "3"然后重启并实时看日志:
docker-compose down && docker-compose up -d
docker-compose logs -f openclaw-cn | findstr "error\|token\|401\|failed"✅ 典型报错与对策对照表:
| 日志关键词 | 原因 | 解决 |
|---|---|---|
invalid app_id | .env 里 APP_ID 多空格或复制了换行符 | 用 Notepad++ 显示所有字符,删空格和不可见符 |
permission denied: config/.env | UAC 拦截读取 | 执行步骤 2 的 icacls 命令 |
tenant_access_token expired | 飞书后台未开启「机器人」权限 | 进飞书开放平台 → 应用 → 功能 → 开启「机器人」并保存 |
验证
部署后:
- 打开飞书 → 搜索机器人名字 → 发送
/help - 看 Docker 日志是否出现
Bot started, listening on port 8000 - 访问
http://localhost:8000/admin(默认账号 admin/admin)
常见问题
- Q:
docker-compose up报错port already in use?
A:关闭飞书客户端(它占 8000 端口),或改docker-compose.yml中ports: ["8080:8000"]。 - Q:网页管理页显示
502 Bad Gateway?
A:执行docker-compose logs nginx,90% 是openclaw-cn服务没起来——回看步骤 3 的日志输出。
下一步建议:
→ 《OpenClaw-CN 接入自定义知识库(CSV/Markdown)实战》
→ 《用 MCP 协议让龙虾调用本地 Python 脚本》
→ 遇到具体报错?截图发到 龙虾 Discord #windows-help 频道,附 docker-compose logs -t openclaw-cn | head -n 50 输出。