文档版本:v1.0
适用环境:1Panel 面板 / Docker 容器部署 / 飞牛 NAS 底层
核心组件:OpenClaw 2026.3.8
适用场景:本网关架构可稳定支撑边缘端设备(如基于“小智 AI”框架的 ESP32 开发板)的接口调用,也可用于自动化纳管后端服务(如 Minecraft 游戏服务器状态监控与日志解析),提供高可用的统一大模型 API 路由。
一、 核心架构与部署标准
在 1Panel 等高度封装的 Docker 环境中,UI 工具或交互式向导(CLI Wizard)容易因环境映射或 Schema 版本差异导致配置失效。最佳实践是直接通过 SSH 进行底层 JSON 注入与命令控制。
1.1 标准模型接入(以 DeepSeek 官方 API 为例)
当需要接入兼容 OpenAI 规范的自定义提供商时,严格按照以下三步执行(需在宿主机 SSH 执行):
Step 1: 注入服务商配置
Bash
docker exec -it openclaw openclaw config set 'models.providers.deepseek' --json '{
"baseUrl": "https://api.deepseek.com/v1",
"apiKey": "您的API_KEY",
"api": "openai-completions",
"models": [
{ "id": "deepseek-chat", "name": "DeepSeek Chat" },
{ "id": "deepseek-reasoner", "name": "DeepSeek Reasoner" }
]
}'
Step 2: 开启合并模式并指定默认模型
Bash
# 允许系统合并手动配置的 providers
docker exec -it openclaw openclaw config set models.mode merge
# 强制将默认模型切换为注入的模型 ID
docker exec -it openclaw openclaw config set agents.defaults.model deepseek/deepseek-chat
Step 3: 刷新内存态
Bash
docker restart openclaw
二、 IM 渠道集成(飞书/Lark)
飞书机器人的接入可实现跨终端的 AI 交互与服务器远程运维。
2.1 飞书端基础准备
- 登录飞书开发者后台,创建企业自建应用并启用机器人能力。
- 权限管理中开通:
im:message:send_as_bot、im:message.p2p_msg、im:message.group_msg。 - 记录
App ID和App Secret。
2.2 网关端配置注入
Bash
docker exec -it openclaw openclaw config set 'channels.lark' --json '{
"appId": "YOUR_APP_ID",
"appSecret": "YOUR_APP_SECRET",
"verificationToken": "",
"encryptKey": ""
}'
docker exec -it openclaw openclaw config set channels.enabled '["lark"]'
docker restart openclaw
2.3 网络穿透与回调
通过 SakuraFRP 或其他内网穿透工具暴露 OpenClaw 的 18789 端口,在飞书后台的“事件订阅”中填写回调地址:
https://<你的公网域名>/api/channels/lark/event,并订阅“接收消息”事件。
三、 故障树分析与避坑指南 (Troubleshooting & RCA)
以下记录了部署过程中遇到的核心级联故障及其根本原因分析。
🔴 故障 1:CLI 报错 Unrecognized key: "api"
- 故障现象:执行
openclaw config set api.deepseek.apiKey ...失败。 - 具体成因:OpenClaw 2026.3.8 版本的 Configuration Schema 发生了扁平化或重构,旧版文档中的
api顶级节点已被废弃,系统无法识别该键值路径。 - 解决方案:放弃盲猜节点路径,采用
models.providers.<自定义名称>节点结合--json参数进行全量对象注入(见 1.1 节)。
🔴 故障 2:交互向导无法选择自定义模型 ID
- 故障现象:在 CLI Wizard 选择 OpenAI 兼容模式后,模型列表被锁死在
gpt-5.1-codex等内置列表,无法手动输入deepseek-chat。 - 具体成因:向导的 UI 逻辑会优先请求 Base URL 的
/models端点拉取列表。如果网络阻断或供应商不支持该端点,界面会强制回退到本地硬编码的 OpenAI 模型列表进行兜底。 - 解决方案:完成向导占位后,通过
docker exec -it openclaw openclaw config set agents.defaults.model deepseek/deepseek-chat强制覆盖内存指针。
🔴 故障 3:飞书端提示 401 status code (no body)
-
故障现象:飞书机器人能响应系统级指令(如
/new提示 Session started),但发送正常对话时立刻返回 401 错误。 -
具体成因:
- 路径双重叠加:当接入 SCNet 等第三方代理 API 时,若提供商文档提示“OpenAI SDK 会自动补充
/v1”,而在 JSON 配置的baseUrl中又错误地包含了/v1(如https://api.scnet.cn/api/llm/v1),会导致网关实际发出的请求路径变为.../llm/v1/v1/chat/completions,从而被服务端拦截。 - 鉴权穿透失败:第三方平台的 API Key 余额不足或未激活。
- 路径双重叠加:当接入 SCNet 等第三方代理 API 时,若提供商文档提示“OpenAI SDK 会自动补充
-
排查方法:
使用 cURL 绕过网关直接测试供应商端点:
Bash
curl https://api.scnet.cn/api/llm/chat/completions \ -H "Authorization: Bearer <YOUR_KEY>" \ -d '{"model": "DeepSeek-V3.2", "messages": [{"role": "user", "content": "hi"}]}' -
紧急回滚方案(恢复生产):
若确认第三方 API 存在波动,立即执行回滚指令切回官方直连:
Bash
docker exec -it openclaw openclaw config set agents.defaults.model.primary deepseek/deepseek-chat docker restart openclaw(注:执行回滚后,必须在飞书客户端发送
/new清理旧模型上下文缓存,否则 401 报错仍会驻留。)
🔴 故障 4:外部修改配置文件(如 OpenClawSwitch)不生效
-
故障现象:通过 NAS 文件管理器修改或覆盖
/vol2/.../openclaw.json后,网页端无变化。 -
具体成因:1Panel 启动 Docker 容器时存在权限隔离,外部上传的文件用户组非
node(1000:1000),导致容器内 Node.js 进程抛出missing-meta-before-write或Permission Denied。 -
解决方案:文件覆盖后,务必在宿主机执行权限修正:
Bash
chown 1000:1000 /vol2/@appdata/1Panel/1panel/apps/openclaw/openclaw/data/conf/openclaw.json docker restart openclaw
四、 运维速查表 (Cheat Sheet)
-
查看当前正在生效的主力模型:
docker exec -it openclaw openclaw config get agents.defaults.model.primary -
查看完整代理商配置映射:
docker exec -it openclaw openclaw config get models.providers -
系统自检指令(输出包含路由、端口、通道的健康状态):
docker exec -it openclaw openclaw doctor --non-interactive