Sonnet 速度是 Opus 的 2-3 倍,覆盖 80-90% 编程任务;Opus 适合复杂多步推理场景。实战建议:先用 Sonnet,连续两次出错再切 Opus。
开发者开始付费使用 Claude Max 或 Claude Pro 后,最常见的问题总是一样的:我真的需要 Opus 吗,Sonnet 够用吗?
答案并不简单。两个模型基于相同的架构,都能写出真正的代码。但它们做出了不同的取舍——只有当你用两者完成同类型工作时,差异才会显现出来。
Sonnet 4.6 适用于 80%–90% 的编码工作。它速度更快、成本更低,而且处理绝大多数任务时质量差异几乎察觉不到。
Opus 4.6 适用于需要持续多步推理的工作:跨多个文件梳理复杂 bug、从零设计系统,或者审查一个错误决策会产生重大后续影响的架构。
实践中有效的规则:每次会话从 Sonnet 开始,当 Sonnet 在同一问题上连续出错两次时切换到 Opus。
Sonnet 4.6 生成 token 的速度大约是 Opus 4.6 的 2–3 倍。在一次产生 800 行输出的复杂重构中,这意味着 25 秒响应和 60 秒响应的差别。对于迭代式工作,这个差距会乘以数十次交互。
在 Claude Max(订阅计划)中,使用 Opus 仍然会更快耗尽用量限额——每次请求消耗更多容量。即使在 Max 上,Opus 也是有限资源。明智地使用它,而不是默认使用。
// Sonnet 生成这个和 Opus 一样好
export async function createUser(data: CreateUserDto): Promise<User> {
const existing = await db.user.findUnique({ where: { email: data.email } })
if (existing) throw new ConflictException('Email already in use')
const hashed = await bcrypt.hash(data.password, 12)
return db.user.create({
data: { ...data, password: hashed },
select: { id: true, email: true, name: true, createdAt: true }
})
}
生成端点、CRUD 处理器、组件、测试文件——Sonnet 处理这些的质量与 Opus 相同。没理由在这里消耗 Opus 配额。
同样属于 Sonnet 领域的还有:
最棘手的 bug 是症状与原因相隔三层之远。用户看到空白屏幕。问题出在 auth token 刷新和缓存 API 响应之间的竞态条件,导致一个过时的闭包捕获了 undefined 值,这个值随后被用在了渲染函数中。
Sonnet 找到症状。Opus 从症状反向追溯到根本原因,追踪完整调用链,修复正确的问题。这正是推理差异最明显的地方。
"这里应该用 Redis pub/sub 还是消息队列?""我们应该如何组织租户隔离?"这些问题涉及会复合的取舍。Opus 能同时保持更多上下文,并推理二阶后果——它能捕捉到 Sonnet 在复杂设计问题上会遗漏的"是的,但如果你那样做,X 会因为 Y 而出问题"。
识别 SQL 注入向量、SSRF 可能性、JWT 验证错误——安全推理需要对抗性思考并追踪微妙的数据流。Opus 在这方面明显更好。在发布前用 Opus 进行安全检查。
# 从 Sonnet 开始(默认,最快)
claude
# 意识到 bug 比预期更复杂 — 切换:
# /model claude-opus-4-6
# 或者在你知道需要 Opus 的会话中将其设为默认:
claude --model claude-opus-4-6
有效的模式:
常见错误:认为"大任务用 Opus,小任务用 Sonnet"。这是错的。
正确的框架是问题类型:
一个你已经想好方案的大型重构是 Sonnet 任务。一个总是返回错误结果且你找不到原因的单函数是 Opus 任务。
Sonnet 4.6 是正确的默认选择。它不是妥协——它能正确处理大多数编码工作,而且返回答案足够快,能保持迭代循环紧凑。Opus 4.6 是专家:只为真正需要它的问题请它介入,你会立刻感受到差异。
Full article at stacknotice.com/blog/claude-sonnet-vs-opus-coding-2026