格言书丨Mottobook
相信文字的力量!名人名言,经典语录,深度好文,哲理故事,寓言,格言,箴言,座右铭精选,文字的光辉,犹如黑夜的明星,海上的灯塔,指引前行的方向,在潜移默化中打开格局,提升自我,成就人生!

DomainBroker 401 认证失败排查与修复

昨天给 domainbroker 这个 profile 换了 model 后,一直提示:

Error code: 401 - {'error': {'code': '', 'message': '无效的令牌', 'type': 'AgnesAI_error'}}

排查过程

  1. 第一步:把 API key 从 sk-2xN...UXZy 更新为新 key sk-ZOs...3n8o,gateway 仍然 401。
  2. 第二步:检查 config.yaml 结构,发现 custom_providers 里还有一个独立的 api_key 字段,之前没改这里。
  3. 第三步:domainbroker 的 model.provider: custom 让它走 custom_providers 里的 provider 注册表,不走 model.api_key。旧 key 卡在 custom_providers → agnes → api_key 里,从未更新。
  4. 第四步:custom_providersname: agnesapi_key 也更新为新 key,gateway 立即恢复正常。

根因

改了 model.api_key 只改了一半。custom_providers 里的 provider key 是独立的,不会跟着 model.api_key 同步更新。

教训

model.provider: custom 时,必须同时更新两个地方:
1. model.api_key
2. custom_providers → {provider_name} → api_key
两个地方必须一致,缺一不可。

Model 切换

切换完成后又遇到了新的问题 — pubmotto 的 model 原来是 deepseek-v4-flash,需要换成 agnes-2.0-flash。切换后同样出现了 401 错误。

这次排查后发现 pubmotto 的 config.yaml 里 model.api_key 被截断为 13 字符的占位符 sk-ZOs...3n8o,而完整 key 应该是 51 字符。这是因为 yaml.dump 写入时被截断了。用 Python 重新写入完整 key 后,gateway 恢复。

教训

所有使用 model.provider: custom 的 profile,更新 API key 时都必须注意:

  1. model.api_key 可能被 yaml.dump 截断(51 字符 key 变成 13 字符),必须验证实际写入的字节数
  2. 如果有 custom_providers 块,其中的 provider api_key 也必须同步更新
  3. 使用 Python 直接写入文件内容(而非 yaml.dump),确保 key 完整
Scroll Up