40. API 参数与重试策略深度对比

March 28, 2026 · View on GitHub

API 参数配置直接影响代码生成质量、成本和可靠性。从 temperature=0 的确定性输出到 7 种生成配置,各工具的 LLM 调用策略差异显著。

总览

Agent默认温度重试策略循环上限流式输出LLM SDKPrompt 缓存
Claude Code0/1(模式相关)指数退避可配置 maxTurns原生 Anthropic✓ cache_control
Gemini CLI0(base)/1(chat)10 次,5-30s100 轮@google/genai✓ cachedContent
Aider00.125s→60s3 次反射✓(默认)LiteLLM✓ Anthropic 缓存
Kimi CLI环境变量控制tenacity 0.3-5s×3100 步/轮kosong(自研)
GooseNone(环境变量)可配置 RetryManager无固定上限Provider 决定Provider trait
Codex CLI可配置可配置原生 OpenAI✓ 服务端
Copilot CLI0/1(场景相关)可配置原生 GitHub
Qwen Code继承 Gemini继承 Gemini100 轮@google/genai✓(DashScope)

一、温度策略

跨 Agent 温度对比

场景Claude CodeGemini CLIAiderKimi CLI
代码生成~00(base)0环境变量
对话交互~11(chat)0环境变量
分类/安全00(classifier)
辅助任务0.2-0.3
推理模型禁用

Gemini CLI 7 种生成配置(源码:defaultModelConfigs.ts

配置temperaturetopPtopKthinkingConfig
base01
chat-base10.9564includeThoughts: true
chat-base-2.5继承继承继承thinkingBudget: DEFAULT
chat-base-3继承继承继承thinkingLevel: HIGH
classifier01thinkingBudget: 512, maxOutputTokens: 1024
prompt-completion0.3继承thinkingBudget: 0, maxOutputTokens: 16000
fast-ack-helper0.2继承thinkingBudget: 0, maxOutputTokens: 120

Aider 推理控制命令(2026 新增)

/think-tokens 32k        # 设置思维 token 预算(支持人类可读格式)
/reasoning-effort high    # 控制模型推理级别(low/medium/high)

运行时动态调整模型推理深度,无需重启会话。

Aider 推理模型温度禁用

# models.py — 以下模型自动禁用温度
use_temperature = False  # DeepSeek R1, o1/o3/o4, GPT-5

# Aider 实际 LLM 调用(models.py:1020)
response = litellm.completion(
    model=self.model_name,
    messages=messages,
    temperature=0 if self.use_temperature else None,
    stream=True,
    timeout=600,  # 10 分钟超时
    **extra_kwargs
)

Claude Code API 调用示例(二进制提取)

// Anthropic API 调用(cache_control 优化)
{
  model: "claude-sonnet-4-6",
  max_tokens: 16384,
  system: [
    { type: "text", text: systemPrompt, cache_control: { type: "ephemeral" } }
  ],
  tools: toolDefinitions.map(t => ({
    ...t, cache_control: { type: "ephemeral" }
  })),
  messages: conversationHistory
}

Gemini CLI 生成配置(源码:defaultModelConfigs.ts

// chat-base 配置(对话模式默认)
{
  temperature: 1,
  topP: 0.95,
  topK: 64,
  generationConfig: {
    thinkingConfig: { includeThoughts: true }
  }
}

// classifier 配置(模型路由分类器)
{
  temperature: 0,
  topP: 1,
  generationConfig: {
    thinkingConfig: { thinkingBudget: 512 },
    maxOutputTokens: 1024
  }
}

二、重试策略

跨 Agent 重试对比

Agent初始延迟最大延迟最大次数重试条件抖动
Aider0.125s60sLiteLLM 可重试错误
Gemini CLI5s30s10429 + 5xx
Kimi CLI0.3s5s3/步通用错误✓(0.5)
Goose300s(超时)用户配置
Claude Code指数退避API 错误

Kimi CLI tenacity 配置(源码:kimisoul.py:687-691

@retry(
    wait=wait_exponential_jitter(initial=0.3, max=5, jitter=0.5),
    stop=stop_after_attempt(3),
)
async def _step(self):
    ...

Gemini CLI 重试条件(源码:retry.ts:150

仅重试:

  • 429 — 速率限制(Rate Limit Exceeded)
  • 5xx — 服务器错误(Internal Server Error)

不重试:4xx 客户端错误(除 429)。


三、代理循环控制

循环上限

Agent上限源码位置说明
Gemini CLI100 轮client.ts:81 MAX_TURNS硬编码
Kimi CLI100 步/轮config.py:71-72 max_steps_per_turn可配置
Qwen Code100 轮继承 Gemini硬编码
Aider3 次反射base_coder.py:101lint/test 专用
Claude Code可配置maxTurns(74 refs)动态
Goose无固定上限直到模型停止
Copilot CLI可配置--max-autopilot-continuesAutopilot 模式限制
Codex CLI可配置config.toml审批模式影响循环
OpenCode可配置Doom Loop 保护(3 次拒绝中断)

停止条件

Agent停止方式
Claude Codeend_turn / stop_sequence / 用户中断
Gemini CLI轮次耗尽 / 模型停止 / 用户中断
Qwen Code继承 Gemini
Aider模型不再调用工具 / 3 次反射失败
Kimi CLI步数耗尽 / stop_reason / 用户中断
Goose模型决定 / 用户中断
Copilot CLI任务完成 / --max-autopilot-continues 耗尽 / 用户中断
Codex CLI模型决定 / 审批拒绝 / 用户中断
OpenCode模型决定 / Doom Loop 触发 / 用户中断

四、上下文窗口与压缩阈值

Agent最大上下文压缩阈值预留空间
Claude Code100 万 token(Opus 4.6[1m])~95%
Gemini CLI~100 万50%
Kimi CLI模型依赖85%50K tokens
Goose模型依赖80%
Aider模型依赖done_messages > 1024 tokens
Qwen Code~100 万50%(继承)
Copilot CLI模型依赖backgroundCompactionThreshold
Codex CLI模型依赖auto_compact_token_limit
OpenCode模型依赖可配置

五、Prompt 缓存

Agent缓存机制效果
Claude CodeAnthropic cache_control: ephemeral系统提示和工具定义缓存,减少重复 token
AiderAnthropic prompt caching(通过 LiteLLM)后台保活 ping 维持缓存
Gemini CLIGoogle cachedContent API长上下文缓存
Codex CLIOpenAI 服务端缓存enable_request_compression
Qwen CodeDashScope 缓存(enableCacheControl继承

六、工具调用策略

Agent并行调用工具选择特殊机制
Claude Code✓(Agent 子代理)模型自选ToolSearch 延迟加载
Gemini CLI模型自选TailToolCall 链式调用
Copilot CLI✓(multi_tool_use.parallel模型自选模型特定 apply-patch
Aider✗(串行)编辑格式决定14 种格式按模型选择
Kimi CLI✗(串行+后台任务)模型自选max_steps_per_turn=100
Goose模型自选toolshim 兼容层
Qwen Code✓(继承 Gemini)模型自选继承 TailToolCall
Codex CLI✓(supports_parallel_tool_calls模型自选apply_patch 专用格式
OpenCode模型自选按模型切换 edit/apply_patch

Goose toolshim(独有)

源码:model.rs:48

pub struct ModelConfig {
    pub toolshim: bool,              // 启用工具调用 shim
    pub toolshim_model: Option<String>, // 代理决策的模型
}

对不支持原生 function calling 的模型(如部分本地 Ollama 模型),Goose 通过 toolshim 用另一个模型代理工具调用决策。例如:主模型为 llama3:8b(无工具调用),toolshim_model 设为 gpt-4o-mini(代理工具选择)。


七、LLM SDK 生态

SDK使用者提供商覆盖
LiteLLMAider, SWE-agent, OpenHands100+(统一 Python 接口)
@google/genaiGemini CLI, Qwen CodeGoogle 模型
原生 AnthropicClaude CodeAnthropic 模型
原生 OpenAICodex CLIOpenAI 模型
Provider traitGoose(rmcp Rust)58+(Rust trait 抽象)
Handler 工厂Cline48+(per-provider Handler)
kosongKimi CLI5+(自研 Python 抽象)
Vercel AI SDKOpenCode100+(TypeScript)

证据来源

Agent源码文件获取方式
Aidermodels.py:988(temp), history.py(压缩)GitHub 源码
Gemini CLIdefaultModelConfigs.ts, retry.ts, client.ts:81GitHub 源码
Kimi CLIconfig.py:71-85, kimisoul.py:687-691GitHub 源码
Goosemodel.rs:48-158, context_mgmt/mod.rsGitHub 源码
Claude Codeclaude --help + 二进制分析本地二进制
Codex CLIcodex --help + config schema二进制 + 官方文档