# AI Coding Agent 与 Harness - GateLLM

> 把 Claude Code、Codex CLI、OpenClaw、Cline、Cursor、Zed、Goose、Aider 等 25+ coding agent 接入 GateLLM —— 每个 harness 的 base URL、配置落点与坑一页说清。

规范链接: https://www.gatellm.io/zh-CN/coding-agents/

## AI Coding Agent 与 Harness
把 Claude Code、Codex CLI、OpenClaw、Cline、Cursor 等 25+ coding agent 按同样的三步指到网关 —— 每条都给出确切的配置落点与关键配置项。
每个 AI coding agent 都从某个地方读 base URL 与 API key —— 环境变量、配置文件或设置面板。本页列出每个 harness 从哪里读、说哪种协议、以及真正会绊倒人的那条坑。完整可复制的配置教程在文档站。
## 网关模型该叫什么名字
有些 harness 钉死了自己的模型 ID、原样发送。如果你的网关模型名不一样，第一次调用就会 404。两种对齐方式：
把网关模型名取成 harness 实际请求的 ID —— 零额外配置。
或用它的模型环境变量（如 ANTHROPIC_MODEL）指到你的网关名。
## 把任意 AI coding agent 指到网关
```
# 每个 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"
```
### `Authorization: Bearer <key>`
- SDK / 框架: OpenAI · DashScope · 通用
- Bearer 前缀大小写不敏感

### `x-api-key: <key>`
- SDK / 框架: Anthropic SDK
- 也接受 Authorization

### `x-goog-api-key: <key>`
- SDK / 框架: Gemini SDK
- 也接受 Authorization

## Harness 兼容矩阵

### 终端 agent
Claude Code、Codex CLI、Gemini CLI、OpenClaw、opencode、Crush、Droid、Goose、Aider、Qwen Code、OpenHands、Kimi Code、Plandex、SWE-agent、Grok Build、Mistral Vibe、MiMo Code、ForgeCode、Codebuff
| Harness | 协议 | 支持度 | 配置落点 | 关键配置项 | 文档 |
| --- | --- | --- | --- | --- | --- |
| Claude Code | Anthropic | 原生 | env vars | ANTHROPIC_BASE_URL, ANTHROPIC_API_KEY, ANTHROPIC_MODEL | https://docs.gatellm.io/zh-CN/quickstart/claude-code-via-gateway |
| Codex CLI | OpenAI Responses | 原生 | ~/.codex/config.toml | base_url, env_key, wire_api | https://docs.gatellm.io/zh-CN/reference/clients-and-gateway-diffs |
| Gemini CLI | Gemini | 原生 | env vars | GOOGLE_GEMINI_BASE_URL, GEMINI_API_KEY | https://docs.gatellm.io/zh-CN/reference/clients-and-gateway-diffs |
| OpenClaw | OpenAI / Anthropic-compatible | OpenAI 兼容 | openclaw.json | models.providers.<id>.baseUrl, models.providers.<id>.apiKey | https://docs.gatellm.io/zh-CN/quickstart/anthropic-interop |
| opencode | OpenAI-compatible | OpenAI 兼容 | opencode.json | provider.<id>.options.baseURL | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Crush | OpenAI / Anthropic-compatible | OpenAI 兼容 | crush.json | providers.<id>.base_url, providers.<id>.type | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Factory Droid | OpenAI / Anthropic-compatible | OpenAI 兼容 | ~/.factory/settings.json | customModels[].baseUrl, customModels[].provider | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Goose | OpenAI-compatible | OpenAI 兼容 | env vars | OPENAI_HOST, OPENAI_BASE_PATH, OPENAI_API_KEY | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Aider | OpenAI-compatible (LiteLLM) | OpenAI 兼容 | env vars | OPENAI_API_BASE | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Qwen Code | OpenAI-compatible | OpenAI 兼容 | env vars | OPENAI_BASE_URL, OPENAI_API_KEY, OPENAI_MODEL | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| OpenHands | OpenAI-compatible (LiteLLM) | OpenAI 兼容 | ~/.openhands/settings.json | base_url, model openai/ prefix | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Kimi Code CLI | OpenAI / Anthropic | OpenAI 兼容 | config.toml | providers | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Plandex | OpenAI-compatible | OpenAI 兼容 | custom models JSON | baseUrl | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| SWE-agent | OpenAI-compatible (LiteLLM) | OpenAI 兼容 | env vars | OPENAI_BASE_URL | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Grok Build | OpenAI-compatible | OpenAI 兼容 | config.toml | custom models | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Mistral Vibe | OpenAI-compatible | OpenAI 兼容 | ~/.vibe/config.toml | providers | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| MiMo Code | OpenAI-compatible | OpenAI 兼容 | /connect custom provider | base URL, API key | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| ForgeCode | OpenAI / Anthropic | OpenAI 兼容 | setup wizard | base URL | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Codebuff | OpenAI-compatible | OpenAI 兼容 | settings | base URL, API key | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |

### IDE / 编辑器插件
Cline、Roo Code、Kilo Code、Continue、Zed、Cursor、Windsurf、GitHub Copilot（BYOK）
| Harness | 协议 | 支持度 | 配置落点 | 关键配置项 | 文档 |
| --- | --- | --- | --- | --- | --- |
| Cline | OpenAI-compatible | OpenAI 兼容 | Settings → OpenAI Compatible | Base URL, API Key, Model ID | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Roo Code | OpenAI-compatible | OpenAI 兼容 | Settings → OpenAI Compatible | Base URL, API Key, Model ID | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Kilo Code | OpenAI-compatible | OpenAI 兼容 | Settings → OpenAI Compatible | Base URL, API Key, Model ID | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Continue | OpenAI-compatible | OpenAI 兼容 | config.yaml | models[].apiBase | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Zed | OpenAI-compatible | OpenAI 兼容 | settings.json | language_models.openai_compatible.<id>.api_url | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Cursor | OpenAI | 部分支持 | Settings → Models → Override OpenAI Base URL | Override OpenAI Base URL | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| Windsurf | OpenAI-compatible | OpenAI 兼容 | Settings → Models → BYOK / custom | Base URL, API Key | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |
| GitHub Copilot (BYOK) | OpenAI-compatible | OpenAI 兼容 | Manage Models → OpenAI-compatible | Base URL, API Key | https://docs.gatellm.io/zh-CN/quickstart/openai-compatible |

### 托管平台
Warp（仅 BYOK 密钥）、Amazon Q Developer CLI、Devin —— 端点固定或不可改
| Harness | 协议 | 支持度 | 配置落点 | 关键配置项 | 文档 |
| --- | --- | --- | --- | --- | --- |
| Warp | OpenAI / Anthropic / Gemini (BYOK) | 部分支持 | Settings → BYOK | BYOK API keys | https://docs.gatellm.io/zh-CN/reference/supported-models-and-sdks |
| Amazon Q Developer CLI | MCP | 无自定义端点 | MCP server | — | https://docs.gatellm.io/zh-CN/reference/supported-models-and-sdks |
| Devin | — | 无自定义端点 | — | — | https://docs.gatellm.io/zh-CN/reference/supported-models-and-sdks |

## 接入坑
### harness 钉死了自己的模型 ID
Claude Code 发送的是它自己配置的默认 ID（如 claude-opus-5 或 claude-sonnet-5），不是你的网关名。要么把网关模型名取成 harness 实际请求的 ID，要么用它的模型环境变量（如 ANTHROPIC_MODEL）指到你的网关名。名字不对 → 第一条消息就 404 model_not_found。

### Anthropic 系 harness 要指根、不带 /v1
Anthropic 风格客户端的 base URL 要指向网关根（不带 /v1）—— 客户端自己拼 /v1/messages。这里多写一个 /v1 会让路径段叠一层。

### Codex 自定义 provider 需要 wire_api="responses"
Codex CLI 的 [model_providers.*] 配置块要求 wire_api = "responses"。网关原生实现 /v1/responses —— 把 base_url 指过来、env_key 指向网关 access key 即可。

### LiteLLM 底座的 harness 要 openai/ 模型前缀
Aider、OpenHands、SWE-agent 底层是 LiteLLM：把 OPENAI_API_BASE 设成网关，模型名带 openai/ 前缀（如 openai/网关模型名），LiteLLM 才按 OpenAI 兼容端点路由。

### 默认走订阅 OAuth，不是你的 key
Codex、Gemini CLI、Qwen Code 默认走厂商的 OAuth / 订阅登录。要经网关必须显式切到 API key 认证（同时设 key 与 base URL）—— 否则会直接绕过网关。

### IDE 按模型 ID 推断工具 / 视觉能力
Cline / Roo / Kilo 等按模型名判断工具调用与视觉能力。自定义网关名可能关掉函数调用 —— 工具调用失败时，检查客户端的能力检测规则，或把模型名取成它认识的家族名。

### 长推理会多出 :keep-alive 与 _gateway_warning
上游长推理期间网关会发 SSE 的 :keep-alive 注释行（无害，跳过以 : 开头的行即可）；中途断流时会插入 _gateway_warning 字段而不是直接报错 —— 设计目标就是避免 Claude Code 这类 harness 因流错误中断整段会话。

### Claude Code auto mode：决定那份安全裁决由谁应答
auto mode 下，Claude Code 在执行可能有危险的动作前，会等一份服务端裁决（请求体里的 safeguards 字段）。上游是官方 Anthropic 时，裁决在同一次请求里由上游给出，网关原样透传、不加干预。上游是忽略该字段的第三方时，改由网关应答 —— 出厂默认（allow_all）放行全部动作，比不介入更宽松。要把某条上游上的这个判断交回给它自己，就在该上游的 extra_config 里写 "anthropic_server_safeguards": "upstream"；控制台里这项设置仅 admin 可改。

## 常见问题
### 能经 GateLLM 用 Claude Code 吗？
能 —— 把 ANTHROPIC_BASE_URL 设为网关根（不带 /v1）、ANTHROPIC_API_KEY 设为网关 access key。把网关模型名取成 Claude Code 请求的 ID（如 claude-opus-5 或 claude-sonnet-5），或用 ANTHROPIC_MODEL 对齐。
### 怎么把 Codex CLI 指到网关？
在 ~/.codex/config.toml 里加一个 [model_providers.<id>] 配置块：base_url = "https://your-gateway.gatellm.io/v1"、env_key 指向你的 access key 环境变量、wire_api = "responses" —— 网关原生实现 /v1/responses。
### 哪些 coding agent 不能用自定义端点？
Devin、Amazon Q Developer CLI 这类托管平台不暴露自定义 base URL，无法经网关。Warp 支持 BYOK 密钥但端点固定指向官方。其余本页列出的都能改 base URL。
### IDE 插件（Cline / Roo / Kilo）能用吗？
能 —— 在设置里选「OpenAI Compatible」provider，粘贴网关的 /v1 URL + access key + 模型名。注意能力检测：有些按模型 ID 推断工具调用能力。
### 为什么模型名这么关键？
harness 发送的是固定模型 ID —— 它自己的默认值或你配置的名字。网关按这个精确字符串路由，不匹配就是 404 model_not_found，不是能忽略的笔误。
### LiteLLM 底座的 agent（Aider / OpenHands / SWE-agent）呢？
它们读 OPENAI_API_BASE，模型名要带 openai/ 前缀，LiteLLM 才把网关当 OpenAI 兼容端点路由。

## 相关页面
- [首页](https://www.gatellm.io/zh-CN/index.md)
- [定价](https://www.gatellm.io/zh-CN/pricing.md)
- [成本计算器](https://www.gatellm.io/zh-CN/calculator.md)
- [关于](https://www.gatellm.io/zh-CN/about.md)
- [预约演示](https://www.gatellm.io/zh-CN/demo.md)
- [常见问题](https://www.gatellm.io/zh-CN/faq.md)
- [对比 AI 网关](https://www.gatellm.io/zh-CN/compare.md)
- [对比 LiteLLM](https://www.gatellm.io/zh-CN/compare/litellm.md)
- [对比 OpenRouter](https://www.gatellm.io/zh-CN/compare/openrouter.md)
- [对比 Alibaba Cloud AI Gateway](https://www.gatellm.io/zh-CN/compare/alibaba-cloud.md)
- [对比 Azure API Management](https://www.gatellm.io/zh-CN/compare/azure-apim.md)
- [对比 Apigee](https://www.gatellm.io/zh-CN/compare/apigee.md)
- [对比 Cloudflare AI Gateway](https://www.gatellm.io/zh-CN/compare/cloudflare.md)
- [对比 Kong AI Gateway](https://www.gatellm.io/zh-CN/compare/kong.md)
- [对比 Portkey](https://www.gatellm.io/zh-CN/compare/portkey.md)
- [LiteLLM vs Kong AI Gateway 对比](https://www.gatellm.io/zh-CN/compare/litellm-vs-kong.md)
- [LiteLLM vs OpenRouter 对比](https://www.gatellm.io/zh-CN/compare/litellm-vs-openrouter.md)
- [LiteLLM vs Portkey 对比](https://www.gatellm.io/zh-CN/compare/litellm-vs-portkey.md)
- [场景方案](https://www.gatellm.io/zh-CN/use-cases.md)
- [降低调用成本](https://www.gatellm.io/zh-CN/use-cases/reduce-cost.md)
- [做到高可用](https://www.gatellm.io/zh-CN/use-cases/high-availability.md)
- [多租户隔离](https://www.gatellm.io/zh-CN/use-cases/multi-tenant.md)
- [合规与审计](https://www.gatellm.io/zh-CN/use-cases/compliance-audit.md)
- [从症状排障](https://www.gatellm.io/zh-CN/use-cases/troubleshooting.md)
- [混合多供应商模型栈](https://www.gatellm.io/zh-CN/use-cases/mixed-model-stack.md)
- [在 Office 里自托管用 AI](https://www.gatellm.io/zh-CN/use-cases/self-hosted-office-ai.md)
- [Token 用量可见与归因](https://www.gatellm.io/zh-CN/use-cases/token-ops.md)
- [Token FinOps: AI 支出分摊与管控](https://www.gatellm.io/zh-CN/use-cases/token-finops.md)
- [MCP 工具治理](https://www.gatellm.io/zh-CN/use-cases/mcp-tool-governance.md)
- [给模型统一加联网搜索](https://www.gatellm.io/zh-CN/use-cases/web-search-grounding.md)
- [多 Key 轮询与备用](https://www.gatellm.io/zh-CN/use-cases/multi-key-pooling.md)
- [限制接入的客户端](https://www.gatellm.io/zh-CN/use-cases/client-admission-control.md)
- [强制模型使用策略](https://www.gatellm.io/zh-CN/use-cases/enforce-model-policy.md)
- [客户端不暴露模型选择](https://www.gatellm.io/zh-CN/use-cases/automatic-model-tiering.md)
- [一套协议接任意模型](https://www.gatellm.io/zh-CN/use-cases/one-protocol-any-model.md)
- [Office / Microsoft 365 加载项](https://www.gatellm.io/zh-CN/office-addin.md)
- [术语表](https://www.gatellm.io/zh-CN/glossary.md)
- [模型目录](https://www.gatellm.io/zh-CN/models.md)
- [SDK 与框架集成](https://www.gatellm.io/zh-CN/integrations.md)
- [安全与合规](https://www.gatellm.io/zh-CN/security.md)
- [隐私政策](https://www.gatellm.io/zh-CN/privacy-policy.md)
- [服务条款](https://www.gatellm.io/zh-CN/terms.md)
- [Cookie 政策](https://www.gatellm.io/zh-CN/cookies.md)
- [数据处理协议 (DPA)](https://www.gatellm.io/zh-CN/dpa.md)
- [子处理方清单](https://www.gatellm.io/zh-CN/subprocessors.md)
- [安全问卷预答库 (CAIQ/SIG/VSA)](https://www.gatellm.io/zh-CN/trust.md)
- [事故响应与支持服务](https://www.gatellm.io/zh-CN/sla.md)
- [漏洞披露政策](https://www.gatellm.io/zh-CN/vulnerability-disclosure.md)
- [开源许可声明](https://www.gatellm.io/zh-CN/open-source-licenses.md)
- [版本支持与生命周期 (EOL)](https://www.gatellm.io/zh-CN/lifecycle.md)
- [技术博客](https://www.gatellm.io/zh-CN/blog.md)
- [你的 Agent 权限比员工还大:在网关层治理 MCP 工具](https://www.gatellm.io/zh-CN/blog/mcp-tool-governance.md)
- [一张一万美元的账单:五种降低 LLM 成本又不让应用变笨的做法](https://www.gatellm.io/zh-CN/blog/reduce-cost.md)
- [厂商的目录价不是你的成本:把真正的 FinOps 用到 Token 支出上](https://www.gatellm.io/zh-CN/blog/token-finops.md)
- [llms.txt](https://www.gatellm.io/zh-CN/llms.txt)
