必须为每个大模型配置独立api key并严格绑定,即config.toml中每个[llm.xxx]区块的api_key仅限对应model和base_url使用,禁止跨模型、跨环境复用,否则触发鉴权失败且错误难定位。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当你在OpenClaw中同时配置多个大模型(比如本地Qwen、云端Claude、企业级ERNIE),却只用一个API Key去调用所有模型,就会触发鉴权失败、请求被拒、甚至Key被封禁——这不是模型不兼容,而是Key和模型绑定关系错乱导致的底层认证崩塌。
确认模型与Key的绑定关系
打开项目根目录下的 config.toml 文件,找到每个 [llm.xxx] 区块。每个区块必须有且仅有一个 api_key 字段,且该字段值只能用于对应区块声明的 model 和 base_url。
例如:[llm.qwen] 下的 api_key 不能复用于 [llm.claude] 区块,哪怕两者都指向同一个服务商——不同模型在后端可能归属不同租户或计费单元。
这一步不做校验,后续所有请求都会静默失败,日志里只显示“Unauthorized”,不会提示具体是哪个Key出了问题。
为每个模型分配独立Key并命名清晰
方法一:按服务商+模型粒度申请Key
百度千帆申请 ernie-bot-4 专用Key;Anthropic控制台申请 claude-3-5-sonnet 专用Key;阿里百炼申请 qwen2.5-72b 专用Key。不要图省事共用一个账户下所有模型的通用Key。
方法二:在配置中强制语义隔离
把 [llm] 改为带业务标识的名称,例如:[llm.prod_ernie]、[llm.dev_qwen]、[llm.staging_claude]。这样不仅避免人工混淆,还能在日志中直接定位到调用链路来源。
【prod_ernie 的 api_key 绝对不可出现在 dev_qwen 区块中】——这是硬性隔离红线,跨环境混用会导致生产流量被测试Key耗尽配额。
启动前执行Key有效性预检
第一步:检查所有 [llm.*] 区块是否都含 api_key 字段
第二步:逐个执行 curl 测试(以 ernie 为例):curl -X POST "$BASE_URL" -H "Content-Type: application/json" -H "Authorization: Bearer $API_KEY" -d '{"model":"ernie-bot-4","messages":[{"role":"user","content":"test"}]}'
第三步:记录每个模型返回的 status_code 和 error.message,仅当全部返回 200 或明确的 model_not_found(而非 invalid_api_key)才继续启动。
这一步跳过,OpenClaw 启动时会卡在初始化阶段,且错误堆栈不暴露具体是哪个Key失效,排查成本陡增。









