AI 编程工具接入
Claude Code、Codex、Cursor、Gemini CLI、OpenCode 等工具改一个地址即可指向本网关。本页给出各工具的确切配置、我们已对齐的官方兼容性规范,以及每个工具的已知边界。
Claude Code
Claude Code 通过 ANTHROPIC_BASE_URL 指向网关,凭据用 ANTHROPIC_AUTH_TOKEN(本网关的 sk- 密钥)。务必不要同时留着 ANTHROPIC_API_KEY,否则它可能回落到 Anthropic 官方鉴权。
本网关按 Anthropic 公布的《网关兼容性指南》实现:anthropic-version 与 anthropic-beta 逐字转发且按开放列表处理(不做白名单,客户端新版本引入的能力不会被剥掉);上游错误保留必要协议结构并过滤敏感凭据,跨协议路由时带 capability_rejected: 标记,使客户端的自动降级重试仍然生效;system 数组与其中的 cache_control 断点原样转发,提示缓存仍取决于所选模型支持;流式不缓冲并在上游静默时自发 keep-alive,降低客户端 300 秒看门狗超时风险。
export ANTHROPIC_BASE_URL="https://www.link42.ai/anthropic"
export ANTHROPIC_AUTH_TOKEN="sk-..."
unset ANTHROPIC_API_KEY
# 从 GET /v1/models 复制一个当前可用的文本模型 ID
export ANTHROPIC_MODEL="YOUR_TEXT_MODEL_ID"set ANTHROPIC_BASE_URL=https://www.link42.ai/anthropic
set ANTHROPIC_AUTH_TOKEN=sk-...
set ANTHROPIC_API_KEY=
set ANTHROPIC_MODEL=YOUR_TEXT_MODEL_ID
claude$env:ANTHROPIC_BASE_URL = "https://www.link42.ai/anthropic"
$env:ANTHROPIC_AUTH_TOKEN = "sk-..."
Remove-Item Env:ANTHROPIC_API_KEY -ErrorAction SilentlyContinue
$env:ANTHROPIC_MODEL = "YOUR_TEXT_MODEL_ID"
claudeClaude Code 的模型发现
开启 CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1 后,Claude Code 会请求 GET /v1/models 并把结果加入 /model 选择器。它只保留 id 中含有 claude 或 anthropic 的条目——这是客户端自身的过滤规则。
因此:运营方接入的 Claude 系模型会自动出现在选择器里;本目录中的其他模型(DeepSeek、GLM、Seedance 等)虽然同样可以通过 Anthropic 协议调用,但不会出现在选择器中,需要用 ANTHROPIC_MODEL 或 /model 手动指定模型名。我们不会为了通过这条过滤器而给模型改名。
Codex
Codex 只讲 OpenAI 协议,且新版配置以 Responses API 为准。在 config.toml 里定义一个 model_providers 块指向本网关,再用 model_provider 选中它。
model_provider = "link42"
model = "YOUR_TEXT_MODEL_ID"
[model_providers.link42]
name = "LINK42"
base_url = "https://www.link42.ai/v1"
env_key = "LINK42_API_KEY"
wire_api = "responses"Cursor 与其他 OpenAI 兼容工具
任何允许自定义 base URL 的 OpenAI 兼容客户端,把地址设为 https://www.link42.ai/v1、密钥设为本网关的 sk- 密钥即可。工具若使用 /v1/chat/completions 或 /v1/responses,两者都已支持。
Gemini CLI
Gemini CLI 讲 Gemini 协议:用 GOOGLE_GEMINI_BASE_URL 指向本网关的 Gemini 地址,GEMINI_API_KEY 填本网关的 sk- 密钥,首次启动选择“Use Gemini API key”方式登录(选 Google 账号登录会绕过自定义地址)。模型用 -m 或 GEMINI_MODEL 指定,填 GET /v1/models 返回的精确 id。
Gemini CLI 要求非本机地址使用 HTTPS;本网关地址满足这一要求。
export GOOGLE_GEMINI_BASE_URL="https://www.link42.ai/gemini"
export GEMINI_API_KEY="sk-..."
export GEMINI_MODEL="YOUR_TEXT_MODEL_ID"
geminiset GOOGLE_GEMINI_BASE_URL=https://www.link42.ai/gemini
set GEMINI_API_KEY=sk-...
set GEMINI_MODEL=YOUR_TEXT_MODEL_ID
gemini$env:GOOGLE_GEMINI_BASE_URL = "https://www.link42.ai/gemini"
$env:GEMINI_API_KEY = "sk-..."
$env:GEMINI_MODEL = "YOUR_TEXT_MODEL_ID"
geminiOpenCode
OpenCode 通过自定义 provider 接入:在项目根目录的 opencode.json(或全局 ~/.config/opencode/opencode.json)里声明一个使用 @ai-sdk/openai-compatible 的 provider,baseURL 指向 https://www.link42.ai/v1,密钥用 {env:LINK42_API_KEY} 从环境变量读取,不要写进文件。models 里列出要用的模型 id,启动后用 /models 选择。
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"link42": {
"npm": "@ai-sdk/openai-compatible",
"name": "LINK42",
"options": {
"baseURL": "https://www.link42.ai/v1",
"apiKey": "{env:LINK42_API_KEY}"
},
"models": {
"YOUR_TEXT_MODEL_ID": { "name": "YOUR_TEXT_MODEL_ID" }
}
}
}
}export LINK42_API_KEY="sk-..."
opencode$env:LINK42_API_KEY = "sk-..."
opencode按会话与子代理归属成本
Claude Code 会在每个请求上带 x-claude-code-session-id,子代理的请求额外带 x-claude-code-agent-id 与 x-claude-code-parent-agent-id。网关记录这三个标识,控制台因此可以按会话汇总花费、并下钻到会话内每个代理各自的成本——一次子代理扇出跑完,能看清是哪个代理烧掉了预算。
这些标识由客户端提供,仅用于归属统计,不作为任何身份凭据;未携带它们的请求(例如普通 SDK 调用)单列为未归属,不并入任何会话。