
把 Claude Code 的 model、effort、fallback 与预算上限拆成四条控制轴,配合 CLI 和 Python Agent SDK 示例,帮助开发者按问题类型调质量、成本与可靠性。
model 和 effort 根本不是同一个旋钮。model 决定「谁来做」:能力上限、知识范围,以及每个 token 的单价。effort 决定「愿意做多少」:会读多少文件、调用多少工具、验证多少次、走多少步。fallback 决定「主模型不可用时怎么办」:它是可用性策略,不是质量调参。budget / max_turns 决定「最多允许跑到哪里」:它们是硬护栏,不是模型路由。model 与 effort:能力和投入不是一回事model。effort。sonnet、opus、haiku、fable,以及把计划阶段和执行阶段分开的 opusplan。别名会随 provider 和版本变化;需要可复现构建时,应该固定完整模型名,而不是把 sonnet 当成永久不变的版本号。1# 复杂、含糊、需要架构判断的任务
claude --model opus --effort high "定位这个并发 bug,并给出可验证的修复"
# 机械、边界清楚的任务
claude --model sonnet --effort medium "给所有公开函数补上缺失的类型注解"effort 可用级别取决于当前模型,常见值是 low、medium、high、xhigh 和 max。如果当前模型不支持你指定的级别,Claude Code 会回退到该模型支持的、且不高于目标级别的最高等级。ultracode 需要单独理解:它不是普通的 effort 等级,而是一个 Claude Code 会话设置,使用 xhigh,同时打开动态工作流能力。它只适用于当前会话,不能当作持久化的 effortLevel 值写进 settings。1/model 立即切换;交互式选择可以保存为新会话默认值。--model,只影响这次启动的会话,并覆盖 model 设置和 ANTHROPIC_MODEL。ANTHROPIC_MODEL 适合在 shell、容器或 CI 环境注入。model 只是初始选择,不等于强制锁定。--model 或对应环境变量,否则换一个终端里的默认模型,不会悄悄改写旧会话。13model 写成 sonnet,以为所有人都永远只能用 Sonnet。它实际上只是「启动时先选谁」;要做组织级限制,需要 availableModels,还要考虑 Default 是否被 allowlist 覆盖。claude --model opus --fallback-model sonnet,haiku "分析这次线上故障"availableModels allowlist 中,它会在读取链时被丢弃,不会等到故障发生后才发现不可用。claude -p \
--model sonnet \
--effort medium \
--fallback-model haiku \
--max-budget-usd 2.00 \
--max-turns 6 \
"检查最近改动,运行测试,并只输出 JSON 结果"--max-budget-usd 限制 print mode 下 API 调用的美元预算;--max-turns 限制 agentic turn 数,达到上限会报错退出。两者都不是「换一个便宜模型继续跑」的开关。3ClaudeAgentOptions:from claude_agent_sdk import ClaudeAgentOptions, query
options = ClaudeAgentOptions(
model="sonnet",
effort="high",
fallback_model="haiku",
max_turns=8,
max_budget_usd=3.0,
allowed_tools=["Read", "Glob", "Grep", "Edit", "Bash"],
)
async for message in query(
prompt="检查 auth 模块,修复 bug,并运行最小必要测试",
options=options,
):
if hasattr(message, "result"):
print(message.result)max_budget_usd 是客户端侧成本估算达到指定美元值时停止查询;它和结果消息中的 total_cost_usd 使用同一估算口径,官方也提醒它存在精度边界。SDK 的 max_turns 则限制工具使用往返次数。4max_turns 来弥补模型能力不足,也不要用降低预算来处理本该由权限或工具范围解决的问题。model 不是 allowlist{
"model": "sonnet"
}{
"model": "claude-sonnet-4-5",
"availableModels": ["claude-sonnet-4-5", "haiku"],
"enforceAvailableModels": true,
"env": {
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-4-5"
}
}availableModels 负责限制命名模型;enforceAvailableModels 进一步让 Default 也必须落在 allowlist 内。只写 model,用户仍然可以打开 /model 选择其他模型;只写 availableModels,Default 仍可能解析到账户级默认模型。1model。effort。max-budget-usd 和 max-turns;SDK 加 max_budget_usd 和 max_turns。availableModels + enforceAvailableModels 做真正的模型边界;需要版本复现时固定完整模型名。model管能力,effort管投入,fallback管可用性,budget管止损。
docs.anthropic.com
docs.anthropic.com
docs.anthropic.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.