通用 · 约 3 分钟

任意客户端的通用配置法

支持自定义 API 地址的客户端,接法都是同一套:填地址、填 Key、填模型名。难的从来不是这三步,而是每个客户端把它们叫成不同的名字、放在不同的地方。这一页把这些说法对齐。

三个值,填完就通

要填的填什么常见的坑
API 地址https://api.9coding.com结尾不要斜杠不要带 /v1——客户端会自己接路径
API Key控制台创建,sk-9c- 开头复制时容易带上结尾换行或空格
模型名/v1/models 列表里原样复制手打的模型名大小写和连字符差一个字符就不认

各家客户端管这三个值叫什么

同一件事,不同客户端有不同说法。在设置里看到下面任意一个词,填的就是它。

你要找的可能显示为
API 地址Base URL · API 地址 · API Host · 接口地址 · 自定义端点 · Endpoint · API Proxy
API KeyAPI Key · 密钥 · 令牌 · Token · Access Key
协议类型OpenAI 兼容 · OpenAI Compatible · Custom · 自定义 Provider
选哪种协议?绝大多数客户端选 OpenAI 兼容那一项。只有 Claude Code 这类 Anthropic 原生客户端走 Anthropic 协议——它有专门一页

命令行工具

命令行工具基本都读环境变量。OpenAI 兼容的这么设:

~/.zshrc 或 ~/.bashrc
export OPENAI_BASE_URL="https://api.9coding.com/v1"
export OPENAI_API_KEY="sk-9c-你的Key"
注意这里要带 /v1OpenAI 系的 SDK 与 CLI 约定 OPENAI_BASE_URL 指向到 /v1 这一层;而 Anthropic 系的 ANTHROPIC_BASE_URL 只到域名。这是最容易搞混的一处——填错的表现通常是 404,有时是 401。

改完重开终端,或 source ~/.zshrc。绝大多数命令行工具只在启动时读一次环境变量。

编辑器插件

Cline、Roo Code、Continue 这类插件在自己的设置面板里配,不读全局环境变量。步骤是一样的:

  1. Provider 选 OpenAI Compatible(不要选 OpenAI 官方那项,那一项通常锁死了地址)
  2. Base URL 填 https://api.9coding.com/v1
  3. API Key 填你的 sk-9c- Key
  4. 模型名从下拉里选;如果下拉是空的,说明地址或 Key 没通——先用下面那条 curl 验证

桌面与网页客户端

Cherry Studio、ChatBox、NextChat、LobeChat、Open WebUI 这类图形客户端,都在「设置 → 模型服务 / Providers」里加一个自定义服务商:

  1. 新增一个 Provider,类型选 OpenAI 兼容
  2. API 地址填 https://api.9coding.com——这类客户端多数会自己补 /v1,如果连不上,再试试带 /v1 的版本
  3. 粘贴 Key,点「获取模型列表」或手动填模型名
  4. 回到对话界面,在模型选择器里选中刚加的那个
加完了但对话里选不到模型?多数客户端要求你手动勾选启用哪些模型,拉到列表后还得打勾才会出现在选择器里。

自己写代码

OpenAI SDK 的完整写法见一行迁移那页。Anthropic SDK 这么改:

Python
from anthropic import Anthropic

client = Anthropic(
    base_url="https://api.9coding.com",
    auth_token="sk-9c-你的Key",
)

Anthropic SDK 用 auth_token(发 Authorization: Bearer)而不是 api_key(发 x-api-key)。这两个搞混是 401 最常见的原因

验证:一条命令确认是不是通了

terminal
curl -s -w '\n%{http_code}\n' https://api.9coding.com/v1/models \
  -H "Authorization: Bearer sk-9c-你的Key"
  • 返回 200 和模型列表 → 地址和 Key 都对,问题在客户端设置里。回头检查协议类型选对没有。
  • 返回 401 → Key 的问题,看 401 排查
  • 连状态码都没有 → 网络层问题,看连接错误

先跑这条再去调客户端。它把「是我们的问题」和「是客户端配置的问题」一次分开——省下的时间比任何一步都多。

还是不行

  • 报错了 → 按报错原文对号入座,八个常见报错各有独立页
  • 通了但想知道花了多少 → 用量与余额怎么查
  • 提问题时带上报错响应里的 request id(形如 (request id: 2026...)),加上时间和模型名,那一次调用就能被查出来