部署 AI Agent 往往是“理想很丰满,报错很骨感”。在阿里云 ECS 上将 OpenClaw 与第三方模型(如硅基流动 DeepSeek-V3)及飞书打通的过程中,有无数个官方文档没写明白的“暗礁”。

本文将按部署顺序,复盘那些极其消耗时间、甚至让人怀疑人生的连环坑,并给出终极解法。

💥 阶段一:模型配置与 API 路由调通的“连环命案”

这个阶段最容易出现明明 curl 测试能通,但 OpenClaw 就是死活报 404 Not Found 或者卡在 Cooldown 的诡异现象。

坑 1:变态级的 JSON 强类型校验

症状:容器无限重启,日志报错 expected array, received undefined 或 expected object, received string。

病因:OpenClaw 对配置文件的结构要求极其严苛,不允许任何缩写。

解法:在 models 数组中,不能只写模型名字字符串,必须写成包含 id 和 name 的标准对象。

JSON

// ❌ 错误写法

"models": ["deepseek-ai/DeepSeek-V3"]

// ✅ 正确写法

"models": [{"id": "deepseek-ai/DeepSeek-V3", "name": "DeepSeek V3"}]

坑 2:双倍的 /v1 拼接灾难

症状:日志持续报 HTTP 404: Not Found。

病因:开源框架在调用 openai 类型提供商时,底层往往会自动帮你拼接 /v1/chat/completions。如果你的 baseUrl 填了 https://api.siliconflow.cn/v1,底层拼接后会变成 .../v1/v1/chat/...,直接导致查无此页。

解法:Base URL 去掉后缀,只保留根域名。

坑 3:被斜杠 / 斩断的模型名

症状:报 Unknown model。

病因:OpenClaw 内部以 提供商/模型ID 来路由请求(如 openai/deepseek)。但部分模型的官方名字自带斜杠(如 deepseek-ai/DeepSeek-V3)。解析器遇到多出来的斜杠会直接截断,把残缺的名字发给服务器。

坑 4:“查岗机制”导致的 Cooldown 冷却死循环

症状:报 Provider openai is in cooldown (all profiles unavailable)。

病因:在发聊天请求前,OpenClaw 会先发一个 GET /v1/models/{model_id} 去“查岗”确认模型存活。兼容平台(如硅基流动)往往没实现这个接口,返回 404。OpenClaw 误以为模型已死,将其拉入黑名单,拒绝后续所有对话。

🏆 【终极解法】(解决坑2、3、4)

抛弃原生openai命名空间,强制指定底层通信协议!不要顺着它的脾气去凑格式,直接自定义 Provider,并使用杀手锏 "api": "openai-completions":

JSON

"providers": {
"siliconflow": {
"baseUrl": "https://api.siliconflow.cn/v1", // 加回v1,因为指定了api类型后它就不乱拼了
"apiKey": "sk-xxx",
"api": "openai-completions", // 杀手锏:跳过查岗,强制按标准发请求
"models": [ ... ]
}
}

💥 阶段二:阿里云宿主机与 Docker 的环境隔离错觉

当你想让 OpenClaw 执行 Python 爬虫或运行无头浏览器时,最大的坑在于环境配置。

坑 5:“我在阿里云装了 Python,但 AI 依然说找不到”

症状:使用 bash 技能执行脚本时,提示缺少各种依赖或命令。

病因:典型的“隔离错觉”。你在阿里云宿主机(ECS)上装再多东西,跑在 Docker 容器(玻璃房)里的 OpenClaw 也看不见、用不着。

解法:越过宿主机,直接以 root 权限把环境“打”进容器内部。

Bash

直接在容器内一键注入 Python、C++编译环境、SQLite 及无头浏览器底层依赖

docker exec -u root -it openclaw-openclaw-gateway-1 bash -c "apt-get update && apt-get install -y --no-install-recommends python3 python3-pip build-essential sqlite3 libnss3 libgbm1 libasound2"

进阶技巧:不要帮它装具体的 Python 库。在 System Prompt 中命令它:“如果缺少库,自己用 bash 技能运行 pip install xxx --break-system-packages 安装。”


💥 阶段三:飞书 Webhook 打通的物理与逻辑壁垒

飞书机器人的配置并不是填完参数就能聊的,这里有三道铁门槛。

坑 6:阿里云安全组的绝对防御

症状:在飞书后台配置 Webhook URL(如 http://IP:18789/...)时,一直提示“请求超时”。

病因:阿里云实例默认的安全组规则只开放 22、80、443 端口。飞书的服务器根本进不来。

解法:进入阿里云 ECS 控制台 -> 安全组 -> 入方向,手动添加规则:放行端口 18789,授权对象设为 0.0.0.0/0。

坑 7:飞书事件订阅的“死循环”挑战 (Challenge)

症状:在飞书后台填入正确的 URL,保存时提示“Token 校验失败”。

病因:飞书的安全机制要求,点击保存的瞬间,你的服务器必须立刻回应一个带有 challenge 字段的握手包。如果你企图直接改 JSON 等它生效,服务还没跑起来,自然握手失败。

解法:必须先在终端启动命令行向导挂起监听,再去飞书点保存。

Bash

docker exec -it openclaw-openclaw-gateway-1 openclaw configure channel

填完参数后服务就绪,此时再去飞书后台点保存,一击命中。

坑 8:通道通了,但 AI 拒绝干活 (Pairing Code)

症状:手机飞书发消息,机器人不聊天,而是回复一段带 Pairing code: XXXXXXXX 的英文。

病因:OpenClaw 极其严苛的越权保护机制。它不确定这个飞书账号是不是服务器的主人,为了防止别人刷爆你的 API 额度,它强制要求服务器拥有者进行二次授权。

解法:在阿里云终端(宿主机)执行盖章授权命令。

Bash

docker exec -it openclaw-openclaw-gateway-1 openclaw pairing approve feishu <你的PairingCode>

💡 结语

跑通这套系统,本质上是一次与框架强校验、底层 API 逻辑、容器沙盒隔离以及大厂企业级风控的“多线硬核对决”。踩过这些坑,你的服务器上就真正拥有了一个随时待命、具备全栈开发与自动化能力的“超级员工”。

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐