gateway日志:
FailoverError: Unknown model: deepseek/deepseek-v4-flashAI员工说:"让我修复模型配置。"
它把模型改成了
xiaomi/mimo-v2-flash。400 Unsupported model。更糟了。
背景
AI团队的任务终于能派发了。但agent一直起不来------gateway日志:
FailoverError: Unknown model: deepseek/deepseek-v4-flash
Agent无法启动因为模型配置错误
deepseek/deepseek-v4-flash------这个模型【根本不存在】。我们的模型是小米的mimo,不是deepseek。
那这个deepseek是哪来的?
根因:一个"默认值"引发的连环错误
容器启动脚本 start.sh 创建agent时的模型逻辑:
python
# 默认模型:取已配置providers的第一个模型
provs = cfg.get('models', {}).get('providers', {})
default_model = 'deepseek/deepseek-v4-flash' # ← 硬编码默认!
if provs:
pname = list(provs.keys())[0]
...
看到了------providers为空时,default_model 硬编码成 deepseek/deepseek-v4-flash。
而providers(openclaw.json的模型配置)是配置中心【保存大模型配置】时写入的。新装系统、还没配置大模型就重启容器 → providers为空 → agent模型 = deepseek(不存在的模型)→ agent起不来。
AI登场:自己动手修配置
负责排障的AI统筹员工(我们叫它小飞)看到了报错,决定自己修:
"让我检查并修复模型配置..."
"模型 deepseek/deepseek-v4-flash 不可用。让我检查可用的模型:"
它打开openclaw.json,把agent模型改成了 xiaomi/mimo-v2-flash------然后重启gateway。
结果:
400 Unsupported model mimo-v2-flash
mimo-v2-flash 也不存在。正确模型名是 mimo-v2.5。
AI修配置,就像蒙着眼换灯泡------它知道灯泡坏了,但不知道型号,随手抓了一个装上去,还是不亮。
排查:模型名从哪来?
小飞(AI)为什么写 mimo-v2-flash?因为它【猜的】------它看到provider叫"xiaomi",模型列表里大概有mimo系列,就拼了一个 "v2-flash"。
而正确的配置是用户【在配置中心填过的】:
json
{
"provider": "xiaomi-token-plan",
"base_url": "https://token-plan-cn.xiaomimimo.com/v1",
"model": "mimo-v2.5"
}
provider的名字是 xiaomi-token-plan(不是 xiaomi),模型是 mimo-v2.5(不是 v2-flash)。
AI没有读配置中心保存的真实配置,而是凭"看起来差不多"猜。
修复:让默认值从真实配置来,而不是硬编码
python
# start.sh:providers为空时,读config.json的用户大模型配置
default_model = 'deepseek/deepseek-v4-flash' # 兜底(理论上不该走到)
if provs:
pname = list(provs.keys())[0]
...
else:
try:
_cfg_m = json.load(open('/vol1/1000/ai-team-collab/config/config.json', encoding='utf-8'))
_mods = _cfg_m.get('models') or []
if _mods:
default_model = f"{_mods[0]['provider']}/{_mods[0]['model']}"
# = xiaomi-token-plan/mimo-v2.5 ← 从用户真实配置来!
except Exception:
pass
正确配置后的最终形态:xiaomi-token-plan/mimo-v2.5(status=200 连通,agent秒醒)。
类比:装修队不问房东,自己买了扇门
房东说"我要白色的门"。装修队没确认尺寸型号,去建材市场随手买了扇门------白色是白色,但门框装不上。更气人的是,房东早就把门的尺寸写在了合同里(配置中心),装修队就是不看。
经验总结
- 默认值必须是"无配置时也不炸"的值------硬编码一个不存在的模型当默认,等于埋雷
- AI修配置,必须读配置中心,不能猜------模型名、provider名、base_url,全是有唯一正确答案的字段,猜就是错
- 错误信息要看全 ------
Unknown model: deepseek已经明确告诉你了:模型名不对。先确认"真实配置里模型叫什么",再动手 - AI的"修复"要复核------LLM改配置(openclaw.json这种关键文件),改完要diff验证,不能信它说"改好了"
- 配置的真相只有一个来源------用户配置中心保存的那份。其他任何地方(默认值/猜测)都是可能出错的分身