前言:开发者的 API 接入困境

相信不少做 AI 开发的同学都遇到过这样的问题:想在本地跑一套多模型调度系统,但官方 API 要么需要绑定信用卡、要么有地区限制、要么并发上限卡得死死的。折腾半天,光是鉴权和网络问题就能让人头大。

本文基于 openclaw 这套本地 AI 调度框架,手把手带你走完从安装到多模型接入的完整流程。整个配置过程不超过 30 分钟,配好之后可以同时调用 GPT、Claude、Gemini、DeepSeek 等主流模型,通过统一的 Gateway 接口对外暴露,极大降低多模型项目的接入成本。


一、环境准备与安装

在开始之前,确保本机已安装 Node.js 18+ 环境。可以通过以下命令验证:

node -v
npm -v

确认版本正常后,全局安装 openclaw:

# 全局安装最新版 openclaw
npm install -g openclaw@latest

安装完成后,执行引导初始化命令,按照终端提示完成基础设置(主要是工作目录和默认配置的生成):

openclaw onboard

执行完毕后,openclaw 会在用户目录下自动生成 .openclaw 文件夹,这是后续所有配置的根目录。

  • Windows 路径C:\\\\Users\\\\你的用户名\\\\.openclaw\\\\
  • macOS/Linux 路径~/.openclaw/

二、修改主配置文件 openclaw.json

这是整个配置流程的核心步骤。打开以下路径的文件:

  • WindowsC:\\\\Users\\\\admin\\\\.openclaw\\\\openclaw.json
  • macOS~/.openclaw/openclaw.json

这个文件控制着模型注册、Provider 路由以及并发策略。我们需要将其改造为支持自定义中转站的结构。

2.1 配置结构说明

整个配置文件分为三个关键区块:

区块 作用
agents.defaults.model 指定默认调用的主模型
auth.profiles 声明各 Provider 的鉴权方式
models.providers 注册每个 Provider 的 baseUrl、API 协议和模型列表

2.2 完整配置示例

将文件内容替换为以下配置。注意 "primary" 字段指定的是默认模型,如果你主要使用 Claude,保持不变;如果要切换为 GPT 或 DeepSeek,修改对应的模型 ID 即可。

{
  "agents": {
    "defaults": {
      "model": {
        // 默认主模型,按需修改为你常用的模型 ID
        "primary": "api-proxy-claude/claude-sonnet-4-5-20250929"
      },
      "models": {
        "api-proxy-gpt/gpt-5.2": {
          "alias": "GPT-5.2"
        },
        "api-proxy-claude/claude-sonnet-4-5-20250929": {
          "alias": "Claude Sonnet 4.5"
        },
        "api-proxy-google/gemini-3-pro-preview": {
          "alias": "Gemini 3 Pro"
        },
        "api-proxy-deepseek/deepseek-v3.2": {
          "alias": "Deepseek v3.2"
        }
      },
      "workspace": "C:\\\\\\\\Users\\\\\\\\admin\\\\\\\\clawd",
      "maxConcurrent": 4,
      "subagents": {
        "maxConcurrent": 8
      }
    }
  },
  "auth": {
    "profiles": {
      "api-proxy-gpt:default": {
        "provider": "api-proxy-gpt",
        "mode": "api_key"
      },
      "api-proxy-claude:default": {
        "provider": "api-proxy-claude",
        "mode": "api_key"
      },
      "api-proxy-google:default": {
        "provider": "api-proxy-google",
        "mode": "api_key"
      },
      "api-proxy-deepseek:default": {
        "provider": "api-proxy-deepseek",
        "mode": "api_key"
      }
    }
  },
  "models": {
    "mode": "merge",
    "providers": {
      "api-proxy-gpt": {
        // 中转站统一入口,支持 OpenAI 兼容协议
        "baseUrl": "<https://api.88api.shop/v1>",
        "api": "openai-completions",
        "models": [
          {
            "id": "gpt-5.2",
            "name": "GPT-5.2",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 128000,
            "maxTokens": 8192
          }
        ]
      },
      "api-proxy-claude": {
        // Claude 使用 anthropic-messages 协议,baseUrl 不带 /v1
        "baseUrl": "<https://api.88api.shop>",
        "api": "anthropic-messages",
        "models": [
          {
            "id": "claude-sonnet-4-5-20250929",
            "name": "Claude Sonnet 4.5",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 200000,
            "maxTokens": 8192
          }
        ]
      },
      "api-proxy-google": {
        "baseUrl": "<https://api.88api.shop/v1>",
        "api": "google-generative-ai",
        "models": [
          {
            "id": "gemini-3-pro-preview",
            "name": "Gemini 3 Pro",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 2000000,
            "maxTokens": 8192
          }
        ]
      },
      "api-proxy-deepseek": {
        "baseUrl": "<https://api.88api.shop/v1>",
        "api": "openai-completions",
        "models": [
          {
            "id": "deepseek-v3.2",
            "name": "Deepseek v3.2",
            "reasoning": false,
            "input": ["text"],
            "cost": { "input": 0, "output": 0, "cacheRead": 0, "cacheWrite": 0 },
            "contextWindow": 2000000,
            "maxTokens": 8192
          }
        ]
      }
    }
  }
}

几个关键细节值得注意:

  • Claude 的 baseUrl 不带 /v1 后缀,其他 Provider 都带,这是协议差异导致的,不要搞混;
  • maxConcurrent: 4 控制主 Agent 并发数,subagents.maxConcurrent: 8 控制子任务并发,可根据实际需求调整;
  • cost 字段全部设为 0,是因为通过中转站调用时计费由中转站侧管理,本地不做重复统计。

三、配置鉴权文件 auth-profiles.json

主配置文件只是声明了"用哪种方式鉴权",真正的 API Key 存放在另一个文件里。

打开路径:

  • WindowsC:\\\\Users\\\\admin\\\\.openclaw\\\\agents\\\\main\\\\agent\\\\auth-profiles.json
  • macOS~/.openclaw/agents/main/agent/auth-profiles.json

将文件内容替换如下,把 sk-your-unique-xxx-key-here 替换为你从中转站后台获取的真实 Key:

{
  "version": 1,
  "profiles": {
    "api-proxy-gpt:default": {
      "type": "api_key",
      "provider": "api-proxy-gpt",
      // 替换为你的 GPT 中转 Key,获取地址:<https://api.88api.shop>
      "key": "sk-your-unique-gpt-key-here"
    },
    "api-proxy-claude:default": {
      "type": "api_key",
      "provider": "api-proxy-claude",
      // 替换为你的 Claude 中转 Key
      "key": "sk-your-unique-claude-key-here"
    },
    "api-proxy-google:default": {
      "type": "api_key",
      "provider": "api-proxy-google",
      // 替换为你的 Gemini 中转 Key
      "key": "sk-your-unique-google-key-here"
    },
    "api-proxy-deepseek:default": {
      "type": "api_key",
      "provider": "api-proxy-deepseek",
      // 替换为你的 DeepSeek 中转 Key
      "key": "sk-your-unique-deepseek-key-here"
    }
  }
}

安全提示auth-profiles.json 包含明文 API Key,不要将此文件提交到 Git 仓库。建议在 .gitignore 中加入 .openclaw/ 目录。


四、启动 Gateway 并验证

两个配置文件都修改完毕后,回到终端启动 Gateway 服务:

# 启动本地 Gateway,监听 18789 端口
openclaw gateway --port 18789

服务启动后,打开浏览器访问:

<http://127.0.0.1:18789/>

如果看到控制台界面,说明 Gateway 已经正常运行。此时你可以在控制台中切换模型、发起对话,验证各个 Provider 是否都能正常响应。

常见问题排查

现象 可能原因 解决方式
控制台无法打开 端口被占用 换一个端口,如 --port 18790
模型列表为空 openclaw.json 格式错误 用 JSON 校验工具检查语法
调用报 401 API Key 填写有误 检查 auth-profiles.json 中的 key 字段
Claude 调用失败 baseUrl 多了 /v1 确认 Claude provider 的 baseUrl 不带后缀

五、扩展:动态切换默认模型

如果你的项目需要在不同场景下使用不同模型,可以直接修改 openclaw.json 中的 primary 字段,无需重启服务(热重载支持):

// 切换为 DeepSeek 作为主模型
"primary": "api-proxy-deepseek/deepseek-v3.2"

// 切换为 Gemini 作为主模型
"primary": "api-proxy-google/gemini-3-pro-preview"

这种设计对于需要做模型对比测试按任务类型路由的场景非常实用——写代码用 Claude,长文档摘要用 Gemini,日常问答走 DeepSeek,成本和效果都能兼顾。


总结

整个配置流程核心就三件事:安装 openclaw → 修改 openclaw.json 注册 Provider → 在 auth-profiles.json 填入 Key。配好之后本地就有了一个统一的多模型调度层,上层应用只需对接 http://127.0.0.1:18789 这一个地址,不用关心底层用的是哪家模型。

对于需要稳定 API 中转服务的开发者,可以参考文中代码注释里的资源地址,按需申请 Key 接入即可。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐