AI Coding Agent 与 Harness
把 Claude Code、Codex CLI、OpenClaw、Cline、Cursor 等 25+ coding agent 按同样的三步指到网关 —— 每条都给出确切的配置落点与关键配置项。
每个 AI coding agent 都从某个地方读 base URL 与 API key —— 环境变量、配置文件或设置面板。本页列出每个 harness 从哪里读、说哪种协议、以及真正会绊倒人的那条坑。完整可复制的配置教程在文档站。
base_url 指向网关
默认 https://your-gateway.gatellm.io —— 是否含 /v1 因 SDK 而异(每个示例给出确切值)。
换成网关 access key
不是上游的 sk-… 密钥 —— 同一把 access key 装进你 SDK 期望的任意 header。
模型名用网关配置名
是你在控制台配置的名字 —— 不是厂商官方名。
Authorization: Bearer <key>x-api-key: <key>x-goog-api-key: <key>| Harness | 协议 | 支持度 | 配置落点 | 关键配置项 | 文档 |
|---|---|---|---|---|---|
| 终端 agent | |||||
| Claude Code | Anthropic | 原生 | env vars | ANTHROPIC_BASE_URL, ANTHROPIC_API_KEY, ANTHROPIC_MODEL | 文档 |
| Codex CLI | OpenAI Responses | 原生 | ~/.codex/config.toml | base_url, env_key, wire_api | 文档 |
| Gemini CLI | Gemini | 原生 | env vars | GOOGLE_GEMINI_BASE_URL, GEMINI_API_KEY | 文档 |
| OpenClaw | OpenAI / Anthropic-compatible | OpenAI 兼容 | openclaw.json | models.providers.<id>.baseUrl, models.providers.<id>.apiKey | 文档 |
| opencode | OpenAI-compatible | OpenAI 兼容 | opencode.json | provider.<id>.options.baseURL | 文档 |
| Crush | OpenAI / Anthropic-compatible | OpenAI 兼容 | crush.json | providers.<id>.base_url, providers.<id>.type | 文档 |
| Factory Droid | OpenAI / Anthropic-compatible | OpenAI 兼容 | ~/.factory/settings.json | customModels[].baseUrl, customModels[].provider | 文档 |
| Goose | OpenAI-compatible | OpenAI 兼容 | env vars | OPENAI_HOST, OPENAI_BASE_PATH, OPENAI_API_KEY | 文档 |
| Aider | OpenAI-compatible (LiteLLM) | OpenAI 兼容 | env vars | OPENAI_API_BASE | 文档 |
| Qwen Code | OpenAI-compatible | OpenAI 兼容 | env vars | OPENAI_BASE_URL, OPENAI_API_KEY, OPENAI_MODEL | 文档 |
| OpenHands | OpenAI-compatible (LiteLLM) | OpenAI 兼容 | ~/.openhands/settings.json | base_url, model openai/ prefix | 文档 |
| Kimi Code CLI | OpenAI / Anthropic | OpenAI 兼容 | config.toml | providers | 文档 |
| Plandex | OpenAI-compatible | OpenAI 兼容 | custom models JSON | baseUrl | 文档 |
| SWE-agent | OpenAI-compatible (LiteLLM) | OpenAI 兼容 | env vars | OPENAI_BASE_URL | 文档 |
| Grok Build | OpenAI-compatible | OpenAI 兼容 | config.toml | custom models | 文档 |
| Mistral Vibe | OpenAI-compatible | OpenAI 兼容 | ~/.vibe/config.toml | providers | 文档 |
| MiMo Code | OpenAI-compatible | OpenAI 兼容 | /connect custom provider | base URL, API key | 文档 |
| ForgeCode | OpenAI / Anthropic | OpenAI 兼容 | setup wizard | base URL | 文档 |
| Codebuff | OpenAI-compatible | OpenAI 兼容 | settings | base URL, API key | 文档 |
| IDE / 编辑器插件 | |||||
| Cline | OpenAI-compatible | OpenAI 兼容 | Settings → OpenAI Compatible | Base URL, API Key, Model ID | 文档 |
| Roo Code | OpenAI-compatible | OpenAI 兼容 | Settings → OpenAI Compatible | Base URL, API Key, Model ID | 文档 |
| Kilo Code | OpenAI-compatible | OpenAI 兼容 | Settings → OpenAI Compatible | Base URL, API Key, Model ID | 文档 |
| Continue | OpenAI-compatible | OpenAI 兼容 | config.yaml | models[].apiBase | 文档 |
| Zed | OpenAI-compatible | OpenAI 兼容 | settings.json | language_models.openai_compatible.<id>.api_url | 文档 |
| Cursor | OpenAI | 部分支持 | Settings → Models → Override OpenAI Base URL | Override OpenAI Base URL | 文档 |
| Windsurf | OpenAI-compatible | OpenAI 兼容 | Settings → Models → BYOK / custom | Base URL, API Key | 文档 |
| GitHub Copilot (BYOK) | OpenAI-compatible | OpenAI 兼容 | Manage Models → OpenAI-compatible | Base URL, API Key | 文档 |
| 托管平台 | |||||
| Warp | OpenAI / Anthropic / Gemini (BYOK) | 部分支持 | Settings → BYOK | BYOK API keys | 文档 |
| Amazon Q Developer CLI | MCP | 无自定义端点 | MCP server | — | 文档 |
| Devin | — | 无自定义端点 | — | — | 文档 |
网关模型该叫什么名字
有些 harness 钉死了自己的模型 ID、原样发送。如果你的网关模型名不一样,第一次调用就会 404。两种对齐方式:
把网关模型名取成 harness 实际请求的 ID —— 零额外配置。
或用它的模型环境变量(如 ANTHROPIC_MODEL)指到你的网关名。
接入坑
Claude Code 发送的是它自己配置的默认 ID(如 claude-sonnet-4-5),不是你的网关名。要么把网关模型名取成 harness 实际请求的 ID,要么用它的模型环境变量(如 ANTHROPIC_MODEL)指到你的网关名。名字不对 → 第一条消息就 404 model_not_found。
Anthropic 风格客户端的 base URL 要指向网关根(不带 /v1)—— 客户端自己拼 /v1/messages。这里多写一个 /v1 会让路径段叠一层。
Codex CLI 的 [model_providers.*] 配置块要求 wire_api = "responses"。网关原生实现 /v1/responses —— 把 base_url 指过来、env_key 指向网关 access key 即可。
Aider、OpenHands、SWE-agent 底层是 LiteLLM:把 OPENAI_API_BASE 设成网关,模型名带 openai/ 前缀(如 openai/网关模型名),LiteLLM 才按 OpenAI 兼容端点路由。
Codex、Gemini CLI、Qwen Code 默认走厂商的 OAuth / 订阅登录。要经网关必须显式切到 API key 认证(同时设 key 与 base URL)—— 否则会直接绕过网关。
Cline / Roo / Kilo 等按模型名判断工具调用与视觉能力。自定义网关名可能关掉函数调用 —— 工具调用失败时,检查客户端的能力检测规则,或把模型名取成它认识的家族名。
上游长推理期间网关会发 SSE 的 :keep-alive 注释行(无害,跳过以 : 开头的行即可);中途断流时会插入 _gateway_warning 字段而不是直接报错 —— 设计目标就是避免 Claude Code 这类 harness 因流错误中断整段会话。
# 每个 agent 都只是「一个 base_url + 一把 access key」
export ANTHROPIC_BASE_URL="https://your-gateway.gatellm.io" # Anthropic 系 agent:根(不带 /v1)
export ANTHROPIC_API_KEY="<网关 access key>"
export OPENAI_API_BASE="https://your-gateway.gatellm.io/v1" # OpenAI 兼容 agent:带 /v1
export OPENAI_API_KEY="<网关 access key>"
# Codex CLI(~/.codex/config.toml)走 Responses 协议
# [model_providers.gatellm]
# base_url = "https://your-gateway.gatellm.io/v1"
# wire_api = "responses"