Skip to content

OpenRouter provider 使用错误 base URL,请求静默失败

问题

配置 OpenRouter 作为 provider 后,agent 发出的请求静默失败,gateway 日志显示 payloads=0,没有任何错误提示。

根本原因:OpenClaw 内置 openrouter provider 使用了错误的 API base URL /v1,而 OpenRouter 实际要求的路径是 /api/v1

  • 错误路径:https://openrouter.ai/v1/chat/completions(返回 404/路由错误)
  • 正确路径:https://openrouter.ai/api/v1/chat/completions

受影响版本:OpenClaw 2026.4.15

解决方案

方案一:升级版本(推荐)

该 bug 已在下一版本中修复。

bash
openclaw upgrade
# 或
npm update -g openclaw

方案二:手动覆盖 baseUrl(临时)

在 provider 配置中显式覆盖 base URL:

yaml
providers:
  openrouter:
    type: openai-compatible
    baseUrl: "https://openrouter.ai/api/v1"
    apiKey: "${OPENROUTER_API_KEY}"

注意:如果你原来使用的是内置 openrouter provider 类型(不是手动配置的 openai-compatible),切换到手动配置方式是最稳定的临时方案。

方案三:诊断 payloads=0 问题

出现 payloads=0 时,可通过以下步骤确认是否为此 bug:

bash
# 检查 gateway 请求日志中实际发送的 URL
openclaw logs gateway | grep "openrouter"

# 手动测试两条路径
curl -s "https://openrouter.ai/v1/models" -H "Authorization: Bearer $OPENROUTER_API_KEY" | head -50
curl -s "https://openrouter.ai/api/v1/models" -H "Authorization: Bearer $OPENROUTER_API_KEY" | head -50

/v1/models 返回 404 而 /api/v1/models 正常,即可确认是此问题。

常见问题

Q: 我用的是 OpenRouter 的 litellm 模式,也会受影响吗?

A: 不会。通过 litellm 代理配置 openrouter 模型时,base URL 由 litellm 自行管理,不经过 OpenClaw 内置的 openrouter provider,因此不触发此 bug。

Q: payloads=0 的日志在哪里看?

A: 运行 openclaw logs gateway --follow,观察每次触发 agent 时的请求日志。若模型调用触发但响应中 payloads=0 且无报错,通常是 base URL 错误、API Key 无效或 provider 配置有误导致的静默失败。