configure-openclaw-anyrouter-model-and-fix-baseurl

by can4hou6joeng4

用于在 OpenClaw 中新增或覆盖 anyrouter 模型配置、把小肠 Agent 默认模型切到 `anyrouter/claude-opus-4-6`,并结合运行日志判断是不是 `baseUrl`、网关兼容、鉴权或协议端点导致不可用。遇到“把某个供应商模型写进 openclaw.json”“切换默认模型”“为什么配置生效了但实际没调用上”“查看 fallback 日志”“排查 403/500/invalid claude code request”“同步 ClaudeCode 配置”这类需求时,就应启用本技能;即使用户没明确说 OpenClaw,只要描述的是本地 Agent 模型路由切换与调用异常排查,也适用。

3.7kAI 与智能体未扫描2026年3月30日

安装

claude skill add --url https://github.com/openclaw/skills

文档

配置 OpenClaw 的 AnyRouter 模型并修复 baseUrl 可用性

这个技能帮助你把 anyrouter/claude-opus-4-6 正确接入 OpenClaw、切换小肠 Agent 默认模型,并用真实日志与实测调用区分“配置已生效”和“上游实际可用”这两件事。

When to use this skill

  • 当你需要把用户提供的一段 JSON 合并进 openclaw.json,并把小肠 / main Agent 的默认模型切到指定供应商模型。
  • 当配置看起来已经写对,但运行时仍报 403500invalid claude code request,需要结合日志判断是不是 baseUrl、协议端点或 key 权限问题。
  • 当用户要求“确认当前小肠 Agent 到底是什么模型”“配置是否真的生效”“是否只是 fallback 在回答”。
  • 当你还需要顺手检查 ClaudeCode 本地配置,避免它仍指向旧网关地址。

Steps

  1. 先读取当前 OpenClaw 配置基线,再决定是新增还是覆盖 anyrouter
    这样做是为了避免盲写导致已有 provider、默认模型、agent 列表配置被误覆盖。
    本次执行中先确认了:

    • 当前配置里已经存在 anyrouter
    • baseUrl 仍是旧值
    • 小肠默认模型仍是 openai-codex/gpt-5.4
  2. 按用户给定 JSON 覆盖 models.providers.anyrouter,并保留 models.mode = "merge"
    保留 merge 可以让新 provider 配置与现有模型体系共存,而不是整块替换掉其他 providers。
    首轮实际写入的关键字段是:

    json
    {
      "models": {
        "mode": "merge",
        "providers": {
          "anyrouter": {
            "baseUrl": "https://a-ocnfniawgw.cn-shanghai.fcapp.run",
            "apiKey": "[REDACTED]",
            "api": "anthropic-messages",
            "models": [
              {
                "id": "claude-opus-4-6",
                "name": "Claude Opus 4.6",
                "reasoning": true,
                "input": ["text"],
                "cost": {
                  "input": 0,
                  "output": 0,
                  "cacheRead": 0,
                  "cacheWrite": 0
                },
                "contextWindow": 200000,
                "maxTokens": 8192
              }
            ]
          }
        }
      }
    }
    
  3. 把默认模型切到 anyrouter/claude-opus-4-6,并同时确认 agents.defaultsagents.list.main 都已对齐。
    只改默认值不检查 main.model,容易出现“默认写了但主 Agent 仍走旧模型”的假生效。
    本次确认后的生效状态是:

    • agents.defaults.model.primary = anyrouter/claude-opus-4-6
    • agents.list.main.model = anyrouter/claude-opus-4-6
  4. 记录当前密钥写入方式:是环境变量引用,还是明文写入。
    这是后续排查权限与可维护性问题的关键,因为“能否解析环境变量”和“key 本身是否可用”是两回事。
    本次两种形式都出现过:

    • 环境变量版:"apiKey": "${AnyRouterKey}"
    • 明文版:"apiKey": "[REDACTED]"
  5. 重启 OpenClaw,并先回答“当前小肠 Agent 是什么模型”。
    先确认静态配置状态,能快速回答用户最关心的问题,也为后续日志比对建立基线。
    本次实际结论是:

    • 当前小肠 Agent:anyrouter/claude-opus-4-6
  6. 当用户怀疑 baseUrl 异常时,先查日志,不要只看 JSON。
    因为配置写进去只说明路由目标被设置了,不代表上游网关真的兼容该协议与模型。
    本次日志里实际出现了:

    text
    HTTP 500 new_api_error: invalid claude code request
    provider=anyrouter model=claude-opus-4-6
    

    以及:

    text
    OpenAI ... failed (403): <html><h1>403 Forbidden</h1>...
    

    随后回退为:

    text
    requested=anyrouter/claude-opus-4-6 ... next=openai-codex/gpt-5.3-codex
    
  7. 基于日志判断 fcapp.run 链路高概率不兼容后,把 baseUrl 切回 https://anyrouter.top
    这样做不是因为域名“更短”,而是因为日志已经显示原链路存在网关兼容或鉴权异常,继续保留会让所有请求落入 fallback。
    修复后保留不变的内容:

    • api = "anthropic-messages"
    • 模型仍是 claude-opus-4-6
    • 小肠默认模型仍是 anyrouter/claude-opus-4-6
  8. 修复后执行“真实调用验证”,不要只做静态配置检查。
    真实请求能区分“OpenClaw 配对了”与“上游真能回答”这两个层次。
    本次实际验证为:

    • https://anyrouter.top/v1/messages 发最小请求,model=claude-opus-4-6
    • 返回:
      • HTTP 500
      • new_api_error: invalid claude code request
  9. 继续做协议对照测试:messageschat/completionsresponsesmodels 分开看。
    这是为了判断问题到底出在端点协议不匹配,还是模型只“可见不可调”。
    本次实测结果:

    • /v1/chat/completions + claude-opus-4-6404 不支持该模型
    • /v1/responses + claude-opus-4-6404 不支持该模型
    • /v1/models 能列出模型(包含 claude-opus-4-6
    • 但实际调用仍被拒绝
      结论:模型列表可见 ≠ 当前 key/路由可实际调用该模型。
  10. 检查 ClaudeCode 本地配置,把旧 fcapp 地址对齐到 https://anyrouter.top
    这样做是为了避免 OpenClaw 已改好,但 ClaudeCode 仍指向旧地址,导致排查结果互相打架。
    本次已修正 ~/.claude/settings.json 中相关配置,核心对齐为:

    • ANTHROPIC_BASE_URL = https://anyrouter.top
    • 模型变量保持 claude-opus-4-6
  11. 如果上游仍不可用,给出“恢复可用态”的回退方案。
    这是为了避免用户虽然坚持把主模型设成 opus,但实际每次都失败,影响日常使用。
    本次实际执行过的恢复方案是:

    • 保留 anyrouter provider 不删除
    • 把小肠(main)默认模型切回:openai-codex/gpt-5.4
    • 重启 OpenClaw 使其恢复可用
  12. 当用户后来手动又切回 claude-opus-4-6 时,再次查日志核对“配置状态”和“实际运行状态”是否一致。
    这一步能明确告诉用户:当前到底是主模型真在工作,还是配置虽然切了,但回答仍由 fallback 完成。
    本次最终核对得到:

    • 配置中确实是 anyrouter/claude-opus-4-6
    • 日志里也确实请求了 provider=anyrouter model=claude-opus-4-6
    • 但随后 HTTP 500 new_api_error: invalid claude code request
    • 再进入 fallback:openai-codex/gpt-5.3-codex

Pitfalls and solutions

只看 openclaw.json 已改成功,就断言模型可用
→ 失败原因:配置生效只说明路由目标被设置,不代表上游网关接受该协议和模型
同时查运行日志与真实请求结果,确认有没有 403/500、有没有 fallback

看到 /v1/models 能列出 claude-opus-4-6,就认为该模型可调用
→ 失败原因:模型可见性不等于当前 key、当前路由、当前协议端点都具备实际调用权限
补做真实请求验证,至少测试 /v1/messages

把问题简单归因于“模型不存在”
→ 失败原因:本次日志明确出现的是 invalid claude code request403 Forbidden,更像网关兼容或鉴权异常
按日志判断为链路/协议/权限问题,而不是盲目改模型 ID

只改 agents.defaults.model.primary,不检查 agents.list.main.model
→ 失败原因:某些场景下主 Agent 仍可能保留旧模型,造成“默认值变了但实际没切过去”
同时确认 defaults 与 main 的最终值

修复了 OpenClaw 的 baseUrl,却忘了 ClaudeCode 仍指向旧网关
→ 失败原因:两个入口的配置不一致,会导致排查结论混乱
顺手检查 ~/.claude/settings.json 并对齐 ANTHROPIC_BASE_URL

用户坚持保留不可用主模型时,不提供可用态恢复方案
→ 失败原因:系统会持续报错并依赖隐式 fallback,用户体验差且不透明
给出两类方案:临时切回稳定主模型,或保留主模型但明确 fallback 策略

Key code and configuration

1) 初始目标配置(环境变量版)

json
{
  "models": {
    "mode": "merge",
    "providers": {
      "anyrouter": {
        "baseUrl": "https://anyrouter.top",
        "apiKey": "${AnyRouterKey}",
        "api": "anthropic-messages",
        "models": [
          {
            "id": "claude-opus-4-6",
            "name": "Claude Opus 4.6",
            "reasoning": true,
            "input": [
              "text"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 200000,
            "maxTokens": 8192
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "anyrouter/claude-opus-4-6"
      }
    }
  }
}

2) 首轮实际写入配置(fcapp.run 版)

json
{
  "models": {
    "mode": "merge",
    "providers": {
      "anyrouter": {
        "baseUrl": "https://a-ocnfniawgw.cn-shanghai.fcapp.run",
        "apiKey": "[REDACTED]",
        "api": "anthropic-messages",
        "models": [
          {
            "id": "claude-opus-4-6",
            "name": "Claude Opus 4.6",
            "reasoning": true,
            "input": [
              "text"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 200000,
            "maxTokens": 8192
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "anyrouter/claude-opus-4-6"
      }
    }
  }
}

3) 日志分析后修复的推荐配置(切回 anyrouter.top)

json
{
  "models": {
    "mode": "merge",
    "providers": {
      "anyrouter": {
        "baseUrl": "https://anyrouter.top",
        "apiKey": "[REDACTED]",
        "api": "anthropic-messages",
        "models": [
          {
            "id": "claude-opus-4-6",
            "name": "Claude Opus 4.6",
            "reasoning": true,
            "input": [
              "text"
            ],
            "cost": {
              "input": 0,
              "output": 0,
              "cacheRead": 0,
              "cacheWrite": 0
            },
            "contextWindow": 200000,
            "maxTokens": 8192
          }
        ]
      }
    }
  },
  "agents": {
    "defaults": {
      "model": {
        "primary": "anyrouter/claude-opus-4-6"
      }
    }
  }
}

4) 本次排查中确认过的关键状态

text
agents.defaults.model.primary = anyrouter/claude-opus-4-6
agents.list.main.model = anyrouter/claude-opus-4-6
anyrouter.baseUrl = https://anyrouter.top

5) 关键错误日志

text
HTTP 500 new_api_error: invalid claude code request
provider=anyrouter model=claude-opus-4-6
text
OpenAI ... failed (403): <html><h1>403 Forbidden</h1>...
text
requested=anyrouter/claude-opus-4-6 ... next=openai-codex/gpt-5.3-codex
candidate_succeeded ... openai-codex/gpt-5.3-codex

6) ClaudeCode 需要对齐的关键配置项

json
{
  "ANTHROPIC_BASE_URL": "https://anyrouter.top"
}

Environment and prerequisites

  • 已安装并可重启的 OpenClaw 环境
  • 有权限读取和修改当前 openclaw.json
  • 有权限查看 OpenClaw 运行日志
  • 若需要联动排查,还需可读写 ~/.claude/settings.json
  • 上游 anyrouter 需要提供:
    • 可用 apiKey
    • 正确的 baseUrl
    • anthropic-messages 协议兼容的路由能力
  • 本次实测表明,即便 /v1/models 可见 claude-opus-4-6,仍可能无法实际调用,因此需要额外做真实请求验证

相关 Skills

Claude接口

by anthropics

Universal
热门

面向接入 Claude API、Anthropic SDK 或 Agent SDK 的开发场景,自动识别项目语言并给出对应示例与默认配置,快速搭建 LLM 应用。

想把Claude能力接进应用或智能体,用claude-api上手快、兼容Anthropic与Agent SDK,集成路径清晰又省心

AI 与智能体
未扫描109.6k

提示工程专家

by alirezarezvani

Universal
热门

覆盖Prompt优化、Few-shot设计、结构化输出、RAG评测与Agent工作流编排,适合分析token成本、评估LLM输出质量,并搭建可落地的AI智能体系统。

把提示优化、LLM评测到RAG与智能体设计串成一套方法,适合想系统提升AI开发效率的人。

AI 与智能体
未扫描9.0k

智能体流程设计

by alirezarezvani

Universal
热门

面向生产级多 Agent 编排,梳理顺序、并行、分层、事件驱动、共识五种工作流设计,覆盖 handoff、状态管理、容错重试、上下文预算与成本优化,适合搭建复杂 AI 协作系统。

帮你把多智能体流程设计、编排和自动化统一起来,复杂工作流也能更稳地落地,适合追求强控制力的团队。

AI 与智能体
未扫描9.0k

相关 MCP 服务

顺序思维

编辑精选

by Anthropic

热门

Sequential Thinking 是让 AI 通过动态思维链解决复杂问题的参考服务器。

这个服务器展示了如何让 Claude 像人类一样逐步推理,适合开发者学习 MCP 的思维链实现。但注意它只是个参考示例,别指望直接用在生产环境里。

AI 与智能体
82.9k

知识图谱记忆

编辑精选

by Anthropic

热门

Memory 是一个基于本地知识图谱的持久化记忆系统,让 AI 记住长期上下文。

帮 AI 和智能体补上“记不住”的短板,用本地知识图谱沉淀长期上下文,连续对话更聪明,数据也更可控。

AI 与智能体
82.9k

PraisonAI

编辑精选

by mervinpraison

热门

PraisonAI 是一个支持自反思和多 LLM 的低代码 AI 智能体框架。

如果你需要快速搭建一个能 24/7 运行的 AI 智能体团队来处理复杂任务(比如自动研究或代码生成),PraisonAI 的低代码设计和多平台集成(如 Telegram)让它上手极快。但作为非官方项目,它的生态成熟度可能不如 LangChain 等主流框架,适合愿意尝鲜的开发者。

AI 与智能体
6.4k

评论