借楼,在这贴一个汉化后的配置文件,供后续佬友的使用。
# 要绑定的服务器主机/接口。默认值为空 ("") 以绑定所有接口 (IPv4 + IPv6)。
# 使用 "127.0.0.1" 或 "localhost" 仅将访问权限限制为本机。
host: ""
# 服务器端口
port: 8317
# HTTPS 的 TLS 设置。启用后,服务器将使用提供的证书和密钥进行监听。
tls:
enable: false
cert: ""
key: ""
# 管理 API 设置
remote-management:
# 是否允许远程(非 localhost)管理访问。
# 为 false 时,只有 localhost 可以访问管理端点(仍然需要密钥)。
allow-remote: false
# 管理密钥。如果在此处提供明文值,它将在启动时被哈希处理。
# 所有管理请求(即使来自 localhost)都需要此密钥。
# 留空以完全禁用管理 API(所有 /v0/management 路由返回 404)。
secret-key: ""
# 为 true 时,禁用捆绑的管理控制面板资源下载和 HTTP 路由。
disable-control-panel: false
# 禁用从 GitHub 自动定期后台更新管理面板(默认:false)。
# 启用后,仅在首次访问且面板缺失时下载面板,之后不再自动更新。
# disable-auto-update-panel: false
# 管理控制面板的 GitHub 仓库。接受仓库 URL 或 releases API URL。
panel-github-repository: "https://github.com/router-for-me/Cli-Proxy-API-Management-Center"
# 认证目录(支持 ~ 表示主目录)
auth-dir: "~/.cli-proxy-api"
# 用于认证的 API 密钥
api-keys:
- "your-api-key-1"
- "your-api-key-2"
- "your-api-key-3"
# 启用调试日志
debug: false
# 启用 pprof HTTP 调试服务器 (host:port)。为了安全起见,请将其绑定到 localhost。
pprof:
enable: false
addr: "127.0.0.1:8316"
# 为 true 时,禁用高开销的 HTTP 中间件功能,以减少高并发下每个请求的内存使用量。
commercial-mode: false
# 为 true 时,将应用程序日志写入滚动文件而不是标准输出 (stdout)
logging-to-file: false
# logs 目录下日志文件的最大总大小 (MB)。当超过此值时,最旧的日志
# 文件将被删除,直到恢复到限制范围内。设置为 0 以禁用。
logs-max-total-size-mb: 0
# 禁用请求日志记录时保留的最大错误日志文件数。
# 当超过此值时,将删除最旧的错误日志文件。默认值为 10。设置为 0 以禁用清理。
error-logs-max-files: 10
# 为 false 时,禁用内存中的使用情况统计聚合
usage-statistics-enabled: false
# 为管理 API 在内存中保留使用队列项的时长(秒)。
# 禁用了本地 Redis RESP 使用情况输出。
# 默认:60。最大值:3600。
redis-usage-queue-retention-seconds: 60
# 代理 URL。支持 socks5/http/https 协议。示例:socks5://user:[email protected]:1080/
# 每个条目的 proxy-url 也支持 "direct" 或 "none",以显式绕过全局 proxy-url 和环境变量代理。
proxy-url: ""
# 为 true 时,无前缀的模型请求仅使用没有前缀的凭据(除非 prefix == model name)。
force-model-prefix: false
# 为 true 时,将过滤后的上游响应头转发给下游客户端。
# 默认为 false(禁用)。
passthrough-headers: false
# 请求的重试次数。如果 HTTP 响应代码为 403、408、500、502、503 或 504,将进行重试。
request-retry: 3
# 对于单个失败的请求,尝试不同凭据的最大数量。
# 设置为 0 以保持旧版行为(尝试所有可用的凭据)。
max-retry-credentials: 0
# 在触发重试之前,冷却状态的凭据的最大等待时间(秒)。
max-retry-interval: 30
# 为 true 时,全局禁用 认证/模型 冷却调度(防止在失败状态后出现请求黑洞期)。
disable-cooling: false
# disable-image-generation 支持:false(默认)、true 或 "chat"。
# - true:全局禁用 image_generation(同时 /v1/images/generations 和 /v1/images/edits 返回 404)。
# - "chat":在非图像端点上禁用 image_generation 注入,但保持 /v1/images/generations 和 /v1/images/edits 启用。
disable-image-generation: false
# 通过托管的 image_generation 工具 (Responses API) 代理 gpt-image-2 时使用的基础模型。
# 必须以 "gpt-" 开头(不区分大小写)。如果未设置或无效,则默认为 "gpt-5.4-mini"。
# gpt-image-2-base-model: "gpt-5.4-mini"
# 核心认证自动刷新工作池大小(OAuth/基于文件的认证令牌刷新)。
# 当 > 0 时,覆盖默认的工作线程数 (16)。
# auth-auto-refresh-workers: 16
# 配额超限行为
quota-exceeded:
switch-project: true # 当超出配额时是否自动切换到另一个项目
switch-preview-model: true # 当超出配额时是否自动切换到预览模型
antigravity-credits: true # 当 Claude 模型的所有免费层级认证耗尽时,是否将额度 (credits) 作为最后的备用方案
# 当有多个匹配项时,选择凭据的路由策略。
routing:
strategy: "round-robin" # 轮询模式 (round-robin,默认), 填满优先模式 (fill-first)
# 为所有客户端启用通用的会话粘性 (session-sticky) 路由。
# 会话 ID 提取自:metadata.user_id (Claude Code 会话格式),
# X-Session-ID, Session_id (Codex), X-Amp-Thread-Id (Amp CLI),
# X-Client-Request-Id (PI), conversation_id, 或前几条消息的哈希值。
# 当绑定的认证不可用时,始终启用自动故障转移。
session-affinity: false # 默认:false
# 会话到认证的绑定保留多长时间。默认:1h
session-affinity-ttl: "1h"
# 为 true 时,启用 WebSocket API (/v1/ws) 的认证。
ws-auth: true
# 为 true 时,启用 Gemini CLI 内部端点 (/v1internal:*)。
# 出于安全考虑,默认为 false。
enable-gemini-cli-endpoint: false
# 当 > 0 时,对于非流式响应,每 N 秒发送一次空行,以防止空闲超时。
nonstream-keepalive-interval: 0
# 流式处理行为 (SSE keep-alives + 安全启动重试)。
# streaming:
# keepalive-seconds: 15 # 默认:0(禁用)。<= 0 禁用 keep-alives。
# bootstrap-retries: 1 # 默认:0(禁用)。在发送第一个字节之前进行重试。
# 用于思考块 (thinking blocks) 的签名缓存验证 (Antigravity/Claude)。
# 为 true(默认)时,优先使用并验证缓存的签名。
# 为 false 时,规范化后直接使用客户端签名(用于测试的旁路模式)。
# antigravity-signature-cache-enabled: true
# 旁路模式签名验证严格度(仅在禁用签名缓存时适用)。
# 为 true 时,验证完整的 Claude protobuf 树(字段 2 -> 字段 1 结构)。
# 为 false(默认)时,仅检查 R/E 前缀 + base64 + 第一个字节 0x12。
# antigravity-signature-bypass-strict: false
# Gemini API 密钥
# gemini-api-key:
# - api-key: "AIzaSy...01"
# prefix: "test" # 可选:需要像 "test/gemini-3-pro-preview" 这样的调用来指向此凭据
# disable-cooling: false # 可选:每个认证覆盖 认证/模型 冷却调度
# base-url: "https://generativelanguage.googleapis.com"
# headers:
# X-Custom-Header: "custom-value"
# proxy-url: "socks5://proxy.example.com:1080"
# # proxy-url: "direct" # 可选:显式为此凭据直连
# models:
# - name: "gemini-2.5-flash" # 上游模型名称
# alias: "gemini-flash" # 映射到上游模型的客户端别名
# excluded-models:
# - "gemini-2.5-pro" # 从此提供商中排除特定模型(精确匹配)
# - "gemini-2.5-*" # 通配符匹配前缀 (例如 gemini-2.5-flash, gemini-2.5-pro)
# - "*-preview" # 通配符匹配后缀 (例如 gemini-3-pro-preview)
# - "*flash*" # 通配符匹配子串 (例如 gemini-2.5-flash-lite)
# - api-key: "AIzaSy...02"
# Codex API 密钥
# codex-api-key:
# - api-key: "sk-atSM..."
# prefix: "test" # 可选:需要像 "test/gpt-5-codex" 这样的调用来指向此凭据
# disable-cooling: false # 可选:每个认证覆盖 认证/模型 冷却调度
# base-url: "https://www.example.com" # 使用自定义 Codex API 端点
# headers:
# X-Custom-Header: "custom-value"
# proxy-url: "socks5://proxy.example.com:1080" # 可选:每个密钥代理覆盖
# # proxy-url: "direct" # 可选:显式为此凭据直连
# models:
# - name: "gpt-5-codex" # 上游模型名称
# alias: "codex-latest" # 映射到上游模型的客户端别名
# excluded-models:
# - "gpt-5.1" # 排除特定模型(精确匹配)
# - "gpt-5-*" # 通配符匹配前缀 (例如 gpt-5-medium, gpt-5-codex)
# - "*-mini" # 通配符匹配后缀 (例如 gpt-5-codex-mini)
# - "*codex*" # 通配符匹配子串 (例如 gpt-5-codex-low)
# Claude API 密钥
# claude-api-key:
# - api-key: "sk-atSM..." # 使用官方 Claude API 密钥,无需设置 base url
# - api-key: "sk-atSM..."
# prefix: "test" # 可选:需要像 "test/claude-sonnet-latest" 这样的调用来指向此凭据
# disable-cooling: false # 可选:每个认证覆盖 认证/模型 冷却调度
# base-url: "https://www.example.com" # 使用自定义 Claude API 端点
# headers:
# X-Custom-Header: "custom-value"
# proxy-url: "socks5://proxy.example.com:1080" # 可选:每个密钥代理覆盖
# # proxy-url: "direct" # 可选:显式为此凭据直连
# models:
# - name: "claude-3-5-sonnet-20241022" # 上游模型名称
# alias: "claude-sonnet-latest" # 映射到上游模型的客户端别名
# excluded-models:
# - "claude-opus-4-5-20251101" # 排除特定模型(精确匹配)
# - "claude-3-*" # 通配符匹配前缀 (例如 claude-3-7-sonnet-20250219)
# - "*-thinking" # 通配符匹配后缀 (例如 claude-opus-4-5-thinking)
# - "*haiku*" # 通配符匹配子串 (例如 claude-3-5-haiku-20241022)
# cloak: # 可选:为非 Claude Code 客户端请求伪装 (cloaking)
# mode: "auto" # "auto" (默认): 仅当客户端不是 Claude Code 时进行伪装
# # "always": 始终应用伪装
# # "never": 绝不应用伪装
# strict-mode: false # false (默认): 将 Claude Code 提示词添加到用户系统消息的前面
# # true: 剥离所有用户系统消息,仅保留 Claude Code 提示词
# sensitive-words: # 可选:使用零宽字符混淆的单词
# - "API"
# - "proxy"
# cache-user-id: true # 可选:默认为 false;设置为 true 以针对每个 API 密钥重用缓存的 user_id,而不是每次请求都生成一个随机的
# experimental-cch-signing: false # 可选:默认为 false;为 true 时,使用当前 Claude Code cch 算法对最终的 /v1/messages 主体进行签名
# # 除非明确需要此行为,否则保持禁用,以便上游种子更改时回退到传统的代理行为
# Claude API 请求的默认标头。当 Claude Code 发布新版本时更新。
# 在旧版模式下,如果客户端省略了 user-agent/package-version/runtime-version/timeout,它们将被用作后备值,
# 而 OS/arch 保持在运行时派生。当
# stabilize-device-profile 启用时,OS/arch 保持固定为下面的基线值,
# 而 user-agent/package-version/runtime-version 将生成一个软件指纹,该指纹可以
# 仍能升级到更新的官方 Claude 客户端版本。
# claude-header-defaults:
# user-agent: "claude-cli/2.1.44 (external, sdk-cli)"
# package-version: "0.74.0"
# runtime-version: "v24.3.0"
# os: "MacOS"
# arch: "arm64"
# timeout: "600"
# stabilize-device-profile: false # 可选,默认为 false;设置为 true 以启用按 认证/API 密钥 绑定指纹
# Codex OAuth 模型请求的默认标头。
# 这些仅在客户端不发送标头时,用于文件支持/OAuth Codex 请求。
# user-agent 适用于 HTTP 和 websocket 请求;
# beta-features 仅适用于 websocket 请求。它们不适用于 codex-api-key 条目。
# codex-header-defaults:
# user-agent: "codex_cli_rs/0.114.0 (Mac OS 14.2.0; x86_64) vscode/1.111.0"
# beta-features: "multi_agent"
# OpenAI 兼容性提供商
# openai-compatibility:
# - name: "openrouter" # 提供商的名称;它将用于 user agent 及其他地方。
# disabled: false # 可选:设置为 true 以禁用此提供商而无需将其删除
# prefix: "test" # 可选:需要像 "test/kimi-k2" 这样的调用来指向此提供商的凭据
# base-url: "https://openrouter.ai/api/v1" # 提供商的 base URL。
# disable-cooling: false # 可选:每个提供商覆盖 认证/模型 冷却调度
# headers:
# X-Custom-Header: "custom-value"
# api-key-entries:
# - api-key: "sk-or-v1-...b780"
# proxy-url: "socks5://proxy.example.com:1080" # 可选:每个密钥代理覆盖
# # proxy-url: "direct" # 可选:显式为此凭据直连
# - api-key: "sk-or-v1-...b781" # 没有 proxy-url
# models: # 提供商支持的模型。
# - name: "moonshotai/kimi-k2:free" # 实际的模型名称。
# alias: "kimi-k2" # 在 API 中使用的别名。
# image: false # 可选:设置为 true 以允许此模型访问 /v1/images/generations 和 /v1/images/edits
# thinking: # 可选:省略则默认为 ["low","medium","high"] 级别
# levels: ["low", "medium", "high"]
# # 您可以重复相同的别名来构建内部模型池。
# # 客户端在模型列表中仍然只看到一个别名。
# # 对该别名的请求将在下面的上游名称之间进行轮询,
# # 并且如果选定的上游在产生输出之前失败,请求将
# # 在同一别名池中继续使用下一个上游模型。
# - name: "deepseek-v3.1"
# alias: "claude-opus-4.66"
# - name: "glm-5"
# alias: "claude-opus-4.66"
# - name: "kimi-k2.5"
# alias: "claude-opus-4.66"
# Vertex API 密钥(兼容 Vertex 的端点,base-url 是可选的)
# vertex-api-key:
# - api-key: "vk-123..." # x-goog-api-key 标头
# prefix: "test" # 可选:需要像 "test/vertex-pro" 这样的调用来指向此凭据
# base-url: "https://example.com/api" # 可选,例如 https://zenmux.ai/api;省略时回退到 Google Vertex
# proxy-url: "socks5://proxy.example.com:1080" # 可选:每个密钥代理覆盖
# # proxy-url: "direct" # 可选:显式为此凭据直连
# headers:
# X-Custom-Header: "custom-value"
# models: # 可选:将别名映射到上游模型名称
# - name: "gemini-2.5-flash" # 上游模型名称
# alias: "vertex-flash" # 客户端可见的别名
# - name: "gemini-2.5-pro"
# alias: "vertex-pro"
# excluded-models: # 可选:从列表中排除的模型
# - "imagen-3.0-generate-002"
# - "imagen-*"
# Amp 集成
# ampcode:
# # 为 Amp CLI OAuth 和管理功能配置上游 URL
# upstream-url: "https://ampcode.com"
# # 可选:覆盖 Amp 上游的 API 密钥(否则使用环境变量或文件)
# upstream-api-key: ""
# # 每个客户端的上游 API 密钥映射
# # 将客户端 API 密钥(来自顶层的 api-keys)映射到不同的 Amp 上游 API 密钥。
# # 当不同的客户端需要使用不同的 Amp 账户/配额时很有用。
# # 如果未映射客户端密钥,则回退到 upstream-api-key(默认行为)。
# upstream-api-keys:
# - upstream-api-key: "amp_key_for_team_a" # 这些客户端要使用的上游密钥
# api-keys: # 使用此上游密钥的客户端密钥
# - "your-api-key-1"
# - "your-api-key-2"
# - upstream-api-key: "amp_key_for_team_b"
# api-keys:
# - "your-api-key-3"
# # 将 Amp 管理路由(/api/auth, /api/user 等)限制为仅 localhost(默认:false)
# restrict-management-to-localhost: false
# # 在检查本地 API 密钥之前强制运行模型映射(默认:false)
# force-model-mappings: false
# # Amp 模型映射
# # 将不可用的 Amp 模型路由到本地代理中可用的替代模型。
# # 当 Amp CLI 请求您无法访问的模型(例如 Claude Opus 4.5)
# # 但您有可用的类似模型(例如 Claude Sonnet 4)时非常有用。
# model-mappings:
# - from: "claude-opus-4-5-20251101" # Amp CLI 请求的模型
# to: "gemini-claude-opus-4-5-thinking" # 路由到此可用模型进行替代
# - from: "claude-sonnet-4-5-20250929"
# to: "gemini-claude-sonnet-4-5-thinking"
# - from: "claude-haiku-4-5-20251001"
# to: "gemini-2.5-flash"
# 全局 OAuth 模型名称别名(每个通道)
# 这些别名为模型列表和请求路由重命名模型 ID。
# 支持的通道: gemini-cli, vertex, aistudio, antigravity, claude, codex, kimi, xai.
# 注意:别名不适用于 gemini-api-key, codex-api-key, claude-api-key, openai-compatibility, vertex-api-key, 或 ampcode。
# 注意:由于别名会影响合并的 /v1 模型列表和合并的请求路由,重叠的
# 客户端可见名称在跨提供商时可能会变得含糊不清。/api/provider/{provider}/... 有助于
# 您选择协议层,但推理后端选择仍然可以遵循已解析的
# 模型/别名。为了严格固定后端,请使用独一无二的别名/前缀,或避免名称重叠。
# 您可以使用不同的别名重复相同的名称,以暴露多个客户端模型名称。
# oauth-model-alias:
# gemini-cli:
# - name: "gemini-2.5-pro" # 此通道下的原始模型名称
# alias: "g2.5p" # 客户端可见的别名
# fork: true # 为 true 时,保留原始模型,并将别名也作为额外的模型添加(默认:false)
# vertex:
# - name: "gemini-2.5-pro"
# alias: "g2.5p"
# aistudio:
# - name: "gemini-2.5-pro"
# alias: "g2.5p"
# antigravity:
# - name: "gemini-3-pro-high"
# alias: "gemini-3-pro-preview"
# claude:
# - name: "claude-sonnet-4-5-20250929"
# alias: "cs4.5"
# codex:
# - name: "gpt-5"
# alias: "g5"
# kimi:
# - name: "kimi-k2.5"
# alias: "k2.5"
# xai:
# - name: "grok-4.3"
# alias: "grok-latest"
# OAuth 提供商排除的模型
# oauth-excluded-models:
# gemini-cli:
# - "gemini-2.5-pro" # 排除特定模型(精确匹配)
# - "gemini-2.5-*" # 通配符匹配前缀 (例如 gemini-2.5-flash, gemini-2.5-pro)
# - "*-preview" # 通配符匹配后缀 (例如 gemini-3-pro-preview)
# - "*flash*" # 通配符匹配子串 (例如 gemini-2.5-flash-lite)
# vertex:
# - "gemini-3-pro-preview"
# aistudio:
# - "gemini-3-pro-preview"
# antigravity:
# - "gemini-3-pro-preview"
# claude:
# - "claude-3-5-haiku-20241022"
# codex:
# - "gpt-5-codex-mini"
# kimi:
# - "kimi-k2-thinking"
# xai:
# - "grok-3-mini"
# 可选负载 (payload) 配置
# payload:
# default: # 默认规则仅在负载中缺少参数时才设置它们。
# - models:
# - name: "gemini-2.5-pro" # 支持通配符(例如 "gemini-*")
# protocol: "gemini" # 将规则限制为特定协议,选项: openai, gemini, claude, codex, antigravity
# from-protocol: "responses" # 将规则限制为源协议,选项: openai, responses, gemini, claude
# headers: # 所有配置的请求标头必须匹配;值支持 "*" 通配符
# X-Client-Tier: "tenant-*-region-*"
# match: # 所有负载 JSON 路径必须等于配置的值
# - "metadata.client": "codex"
# not-match: # 负载 JSON 路径不得等于配置的值
# - "metadata.mode": "dev"
# exist: # 所有负载 JSON 路径必须存在且不能为空 (null)
# - "tools.#(type==\"web_search\").type"
# not-exist: # 所有负载 JSON 路径必须缺失或为空 (null)
# - "metadata.disable_payload"
# params: # JSON 路径 (gjson/sjson 语法) -> 值
# "generationConfig.thinkingConfig.thinkingBudget": 32768
# default-raw: # 默认原始规则在缺失时使用原始 JSON 设置参数(必须是有效的 JSON)。
# - models:
# - name: "gemini-2.5-pro" # 支持通配符(例如 "gemini-*")
# protocol: "gemini" # 将规则限制为特定协议,选项: openai, gemini, claude, codex, antigravity
# params: # JSON 路径 (gjson/sjson 语法) -> 原始 JSON 值(字符串按原样使用,必须是有效的 JSON)
# "generationConfig.responseJsonSchema": "{\"type\":\"object\",\"properties\":{\"answer\":{\"type\":\"string\"}}}"
# override: # 覆盖规则始终设置参数,覆盖任何现有值。
# - models:
# - name: "gpt-*" # 支持通配符(例如 "gpt-*")
# protocol: "codex" # 将规则限制为特定协议,选项: openai, gemini, claude, codex, antigravity
# params: # JSON 路径 (gjson/sjson 语法) -> 值
# "reasoning.effort": "high"
# override-raw: # 覆盖原始规则始终使用原始 JSON 设置参数(必须是有效的 JSON)。
# - models:
# - name: "gpt-*" # 支持通配符(例如 "gpt-*")
# protocol: "codex" # 将规则限制为特定协议,选项: openai, gemini, claude, codex, antigravity
# params: # JSON 路径 (gjson/sjson 语法) -> 原始 JSON 值(字符串按原样使用,必须是有效的 JSON)
# "response_format": "{\"type\":\"json_schema\",\"json_schema\":{\"name\":\"answer\",\"schema\":{\"type\":\"object\"}}}"
# filter: # 过滤规则从负载中移除指定的参数。
# - models:
# - name: "gemini-2.5-pro" # 支持通配符(例如 "gemini-*")
# protocol: "gemini" # 将规则限制为特定协议,选项: openai, gemini, claude, codex, antigravity
# params: # 要从负载中移除的 JSON 路径 (gjson/sjson 语法)
# - "generationConfig.thinkingConfig.thinkingBudget"
# - "generationConfig.responseJsonSchema"