跳到主要内容

备用提供商

AigenLabs Agent 具备三层弹性机制,在提供商出现问题时保持会话正常运行:

  1. 凭据池 — 在同一提供商的多个 API 密钥之间轮换(优先尝试)
  2. 主模型备用 — 当主模型失败时,自动切换到不同的提供商:模型
  3. 辅助任务备用 — 针对视觉、压缩、网页提取等附属任务的独立提供商解析

凭据池处理同一提供商内的轮换(例如多个 OpenRouter 密钥)。本页介绍跨提供商的备用机制。两者均为可选,且相互独立。

主模型备用

当主 LLM 提供商遇到错误——速率限制、服务器过载、认证失败、连接中断——AigenLabs 可以在会话中途自动切换到备用提供商:模型对,且不会丢失对话内容。

配置

最简便的方式是使用交互式管理器:

aigenlabs fallback

aigenlabs fallback 复用 aigenlabs model 的提供商选择器——相同的提供商列表、相同的凭据提示、相同的验证流程。使用子命令 addlist(别名 ls)、remove(别名 rm)和 clear 来管理备用链。更改会持久化到 config.yaml 顶层的 fallback_providers: 列表中。

如果你更倾向于直接编辑 YAML,可在 ~/.aigenlabs/config.yaml 中添加 fallback_model 部分:

fallback_model:
provider: openrouter
model: anthropic/claude-sonnet-4

providermodel 均为必填项。若任一缺失,备用功能将被禁用。

fallback_modelfallback_providers

fallback_model(单数)是旧版单备用键——AigenLabs 仍支持以保持向后兼容。fallback_providers(复数,列表)支持按顺序尝试多个备用;aigenlabs fallback 写入此键。当两者同时设置时,AigenLabs 会合并它们,fallback_providers 优先。

支持的提供商

提供商要求
OpenRouteropenrouterOPENROUTER_API_KEY
Nous Portalnousaigenlabs setup --portal(全新安装)或 aigenlabs auth add nous(OAuth)
OpenAI Codexopenai-codexaigenlabs model(ChatGPT OAuth)
GitHub CopilotcopilotCOPILOT_GITHUB_TOKENGH_TOKENGITHUB_TOKEN
GitHub Copilot ACPcopilot-acp外部进程(编辑器集成)
AnthropicanthropicANTHROPIC_API_KEY 或 Claude Code 凭据
z.ai / GLMzaiGLM_API_KEY
Kimi / Moonshotkimi-codingKIMI_API_KEY
MiniMaxminimaxMINIMAX_API_KEY
MiniMax(中国)minimax-cnMINIMAX_CN_API_KEY
DeepSeekdeepseekDEEPSEEK_API_KEY
NVIDIA NIMnvidiaNVIDIA_API_KEY(可选:NVIDIA_BASE_URL
GMI CloudgmiGMI_API_KEY(可选:GMI_BASE_URL
StepFunstepfunSTEPFUN_API_KEY(可选:STEPFUN_BASE_URL
Ollama Cloudollama-cloudOLLAMA_API_KEY
Google Gemini(OAuth)google-gemini-cliaigenlabs model(Google OAuth;可选:AIGENLABS_GEMINI_PROJECT_ID
Google AI StudiogeminiGOOGLE_API_KEY(别名:GEMINI_API_KEY
xAI(Grok)xai(别名 grokXAI_API_KEY(可选:XAI_BASE_URL
xAI Grok OAuth(SuperGrok)xai-oauth(别名 grok-oauthaigenlabs model → xAI Grok OAuth(浏览器登录;需 SuperGrok 订阅)
AWS Bedrockbedrock标准 boto3 认证(AWS_REGION + AWS_PROFILEAWS_ACCESS_KEY_ID
Qwen Portal(OAuth)qwen-oauthaigenlabs model(Qwen Portal OAuth;可选:AIGENLABS_QWEN_BASE_URL
MiniMax(OAuth)minimax-oauthaigenlabs model(MiniMax 门户 OAuth)
OpenCode Zenopencode-zenOPENCODE_ZEN_API_KEY
OpenCode Goopencode-goOPENCODE_GO_API_KEY
Kilo CodekilocodeKILOCODE_API_KEY
Xiaomi MiMoxiaomiXIAOMI_API_KEY
Arcee AIarceeARCEEAI_API_KEY
GMI CloudgmiGMI_API_KEY
Alibaba / DashScopealibabaDASHSCOPE_API_KEY
Alibaba Coding Planalibaba-coding-planALIBABA_CODING_PLAN_API_KEY(回退到 DASHSCOPE_API_KEY
Kimi / Moonshot(中国)kimi-coding-cnKIMI_CN_API_KEY
StepFunstepfunSTEPFUN_API_KEY
Tencent TokenHubtencent-tokenhubTOKENHUB_API_KEY
Microsoft Foundryazure-foundryAZURE_FOUNDRY_API_KEY + AZURE_FOUNDRY_BASE_URL
LM Studio(本地)lmstudioLM_API_KEY(本地可不填)+ LM_BASE_URL
Hugging FacehuggingfaceHF_TOKEN
自定义端点custombase_url + key_env(见下文)

自定义端点备用

对于兼容 OpenAI 的自定义端点,添加 base_url 并可选填 key_env

fallback_model:
provider: custom
model: my-local-model
base_url: http://localhost:8000/v1
key_env: MY_LOCAL_KEY # 包含 API 密钥的环境变量名

备用触发条件

当主模型出现以下失败时,备用机制自动激活:

  • 速率限制(HTTP 429)——耗尽重试次数后
  • 服务器错误(HTTP 500、502、503)——耗尽重试次数后
  • 认证失败(HTTP 401、403)——立即触发(重试无意义)
  • 未找到(HTTP 404)——立即触发
  • 无效响应——API 多次返回格式错误或空响应时

触发后,AigenLabs 将:

  1. 解析备用提供商的凭据
  2. 构建新的 API 客户端
  3. 就地替换模型、提供商和客户端
  4. 重置重试计数器并继续对话

切换是无感知的——对话历史、工具调用和上下文均被保留。Agent 从中断处继续,只是使用了不同的模型。

按轮次,而非按会话

备用机制的作用域为单次轮次:每条新用户消息都从主模型重新开始。若主模型在某轮次中途失败,备用仅对该轮次生效。下一条消息时,AigenLabs 会再次尝试主模型。在单次轮次内,备用最多激活一次——若备用也失败,则进入常规错误处理流程(重试,然后返回错误消息)。这既防止了单轮次内的级联故障转移循环,又让主模型在每轮次都有重新尝试的机会。

示例

以 OpenRouter 作为 Anthropic 原生的备用:

model:
provider: anthropic
default: claude-sonnet-4-6

fallback_model:
provider: openrouter
model: anthropic/claude-sonnet-4

以 Nous Portal 作为 OpenRouter 的备用:

model:
provider: openrouter
default: anthropic/claude-opus-4

fallback_model:
provider: nous
model: nous-hermes-3

以本地模型作为云端的备用:

fallback_model:
provider: custom
model: llama-3.1-70b
base_url: http://localhost:8000/v1
key_env: LOCAL_API_KEY

以 Codex OAuth 作为备用:

fallback_model:
provider: openai-codex
model: gpt-5.3-codex

备用适用范围

场景是否支持备用
CLI 会话
消息网关(Telegram、Discord 等)
子 Agent 委派✘(子 Agent 不继承备用配置)
Cron 任务✘(使用固定提供商运行)
辅助任务(视觉、压缩等)✘(使用各自的提供商链——见下文)
提示

fallback_model 没有对应的环境变量——它只能通过 config.yaml 配置。这是有意为之:备用配置是一个经过深思熟虑的选择,不应被过期的 shell 导出变量覆盖。


辅助任务备用

AigenLabs 为附属任务使用独立的轻量级模型。每个任务都有自己的提供商解析链,充当内置的备用系统。

具有独立提供商解析的任务

任务功能说明配置键
视觉图像分析、浏览器截图auxiliary.vision
网页提取网页内容摘要auxiliary.web_extract
压缩上下文压缩摘要auxiliary.compression
Skills Hub技能搜索与发现auxiliary.skills_hub
MCPMCP 辅助操作auxiliary.mcp
审批智能命令审批分类auxiliary.approval
标题生成会话标题摘要auxiliary.title_generation
Triage Specifieraigenlabs kanban specify / 看板(kanban)✨ 按钮——将单行 triage 任务扩展为完整规格auxiliary.triage_specifier

自动检测链

当任务的提供商设置为 "auto"(默认值)时,AigenLabs 按顺序尝试各提供商,直到找到可用的:

文本任务(压缩、网页提取等):

OpenRouter → Nous Portal → 自定义端点 → Codex OAuth →
API 密钥提供商(z.ai、Kimi、MiniMax、Xiaomi MiMo、Hugging Face、Anthropic)→ 放弃

视觉任务:

主提供商(若支持视觉)→ OpenRouter → Nous Portal →
Codex OAuth → Anthropic → 自定义端点 → 放弃

若解析到的提供商在调用时失败,AigenLabs 还有内部重试机制:若该提供商不是 OpenRouter 且未设置显式 base_url,则尝试以 OpenRouter 作为最后备用。

配置辅助提供商

每个任务可在 config.yaml 中独立配置:

auxiliary:
vision:
provider: "auto" # auto | openrouter | nous | codex | main | anthropic
model: "" # 例如 "openai/gpt-4o"
base_url: "" # 直接端点(优先于 provider)
api_key: "" # base_url 的 API 密钥

web_extract:
provider: "auto"
model: ""

compression:
provider: "auto"
model: ""

skills_hub:
provider: "auto"
model: ""

mcp:
provider: "auto"
model: ""

以上每个任务均遵循相同的 provider / model / base_url 模式。上下文压缩在 auxiliary.compression 下配置:

auxiliary:
compression:
provider: main # 与其他辅助任务相同的提供商选项
model: google/gemini-3-flash-preview
base_url: null # 自定义 OpenAI 兼容端点

备用模型使用:

fallback_model:
provider: openrouter
model: anthropic/claude-sonnet-4
# base_url: http://localhost:8000/v1 # 可选自定义端点

三者——辅助任务、压缩、备用——工作方式相同:设置 provider 指定处理请求的提供商,model 指定使用的模型,base_url 指向自定义端点(会覆盖 provider)。

辅助任务的提供商选项

以下选项仅适用于 auxiliary:compression:fallback_model: 配置——"main" 不是顶层 model.provider 的有效值。对于自定义端点,请在 model: 部分使用 provider: custom(参见 AI 提供商)。

提供商说明要求
"auto"按顺序尝试各提供商直到找到可用的(默认)至少配置一个提供商
"openrouter"强制使用 OpenRouterOPENROUTER_API_KEY
"nous"强制使用 Nous Portalaigenlabs auth
"codex"强制使用 Codex OAuthaigenlabs model → Codex
"main"使用主 Agent 当前的提供商(仅限辅助任务)已配置活跃的主提供商
"anthropic"强制使用 Anthropic 原生ANTHROPIC_API_KEY 或 Claude Code 凭据

直接端点覆盖

对于任意辅助任务,设置 base_url 将完全绕过提供商解析,直接向该端点发送请求:

auxiliary:
vision:
base_url: "http://localhost:1234/v1"
api_key: "local-key"
model: "qwen2.5-vl"

base_url 优先于 provider。AigenLabs 使用配置的 api_key 进行认证,若未设置则回退到 OPENAI_API_KEY。对于自定义端点,不会复用 OPENROUTER_API_KEY


辅助任务容量错误备用

当你设置了显式的辅助提供商(例如 auxiliary.vision.provider: glm)时,AigenLabs 将其视为首选——但若该提供商因容量错误(HTTP 402 付款要求、HTTP 429 每日配额耗尽、连接失败)而无法处理请求,AigenLabs 会通过分层链进行备用,而不是静默失败:

  1. 主辅助提供商 — 你配置的那个(始终优先尝试)
  2. auxiliary.<task>.fallback_chain — 你的每任务覆盖列表(若已配置)
  3. 主 Agent 提供商 + 模型 — 最后的安全网(始终尝试,即使未配置链)
  4. 警告 + 重新抛出 — 若所有层均失败,AigenLabs 以 WARNING 级别记录 Auxiliary <task>: ... all fallbacks exhausted 并重新抛出原始错误

瞬时 HTTP 429 速率限制(Retry-After: ...)被视为请求约束,而非容量问题——它们遵守你的显式提供商选择,不会触发备用链。只有每日/每月配额耗尽、付款错误和连接失败才会绕过显式提供商限制。

对于使用 provider: auto(无显式辅助提供商)的用户,现有的自动检测链将替代步骤 2–3 运行。其第一步已经是主 Agent 模型,因此 auto 用户无需任何配置即可获得相同效果。

可选:每任务备用链

若你希望使用与"主 Agent 模型优先"不同的备用顺序,可显式配置 fallback_chain。每个条目至少需要 providermodelbase_urlapi_key 为可选。

auxiliary:
vision:
provider: glm
model: glm-4v-flash
fallback_chain:
- provider: openrouter
model: google/gemini-3-flash-preview
- provider: nous
model: anthropic/claude-sonnet-4

compression:
provider: openrouter
fallback_chain:
- provider: openai
model: gpt-4o-mini

不需要配置 fallback_chain 才能获得备用功能——主 Agent 安全网无论如何都会运行。仅当你明确希望使用与默认不同的顺序时才需配置。

触发备用的提供商配额错误

AigenLabs 将以下情况识别为等同于 402 额度耗尽的容量错误(而非瞬时速率限制):

  • Bedrock / LiteLLM:Too many tokens per daydaily limittokens per day
  • Vertex AI / GCP:quota exceededresource exhaustedRESOURCE_EXHAUSTED
  • 通用:daily quotaquota_exceeded

若你的提供商对每日配额耗尽返回不同的错误信息,而 AigenLabs 未触发备用,这是一个 bug——请附上确切的错误字符串提交 issue。


上下文压缩备用

上下文压缩使用 auxiliary.compression 配置块来控制处理摘要的模型和提供商:

auxiliary:
compression:
provider: "auto" # auto | openrouter | nous | main
model: "google/gemini-3-flash-preview"
旧版迁移

旧版配置中的 compression.summary_model / compression.summary_provider / compression.summary_base_url 会在首次加载时自动迁移到 auxiliary.compression.*(配置版本 17)。

若压缩没有可用的提供商,AigenLabs 会直接丢弃中间对话轮次而不生成摘要,而不是让会话失败。


委派提供商覆盖

delegate_task 生成的子 Agent 不会使用主备用模型。但可以将它们路由到不同的提供商:模型对以优化成本:

delegation:
provider: "openrouter" # 覆盖所有子 Agent 的提供商
model: "google/gemini-3-flash-preview" # 覆盖模型
# base_url: "http://localhost:1234/v1" # 或使用直接端点
# api_key: "local-key"

完整配置详情参见子 Agent 委派


Cron 任务提供商

Cron 任务使用执行时配置的提供商运行,不支持备用模型。若要为 Cron 任务使用不同的提供商,请在 Cron 任务本身上配置 providermodel 覆盖:

cronjob(
action="create",
schedule="every 2h",
prompt="Check server status",
provider="openrouter",
model="google/gemini-3-flash-preview"
)

完整配置详情参见定时任务(Cron)


总结

功能备用机制配置位置
主 Agent 模型fallback_model(config.yaml 中)——出错时按轮次故障转移(每轮次恢复主模型)fallback_model:(顶层)
辅助任务(任意)— auto 用户容量错误时完整自动检测链(主 Agent 模型优先,然后提供商链)auxiliary.<task>.provider: auto
辅助任务(任意)— 显式提供商fallback_chain(若已设置)→ 主 Agent 模型 → 警告 + 抛出,仅在容量错误时触发auxiliary.<task>.fallback_chain
视觉分层(见上文)+ 内部 OpenRouter 重试auxiliary.vision
网页提取分层(见上文)+ 内部 OpenRouter 重试auxiliary.web_extract
上下文压缩分层(见上文);所有层不可用时降级为无摘要auxiliary.compression
Skills Hub分层(见上文)auxiliary.skills_hub
MCP 辅助分层(见上文)auxiliary.mcp
审批分类分层(见上文)auxiliary.approval
标题生成分层(见上文)auxiliary.title_generation
Triage Specifier分层(见上文)auxiliary.triage_specifier
委派仅提供商覆盖(无自动备用)delegation.provider / delegation.model
Cron 任务仅每任务提供商覆盖(无自动备用)每任务 provider / model