
Claude Code 刚火起来的时候很多人把它当成一个“内置 Claude 模型的终端工具”来用。真正上手一段时间后你会发现这个工具最值钱的地方根本不是默认那个模型而是它这套以/model命令为核心的模型切换机制。我见过太多人装完 Claude Code 就闷头写代码完全不知道自己的 API key 可能已经被默认模型烧掉了一大半额度也不知道其实可以接 DeepSeek、GLM 甚至本地模型在不同任务之间来回切换。这篇文章就把/model命令掰开了讲清楚它到底怎么工作、怎么把第三方模型接进来、怎么让不同任务用不同模型以及我在实际使用中踩过的坑和总结出的排查思路。不管你是刚装好 Claude Code 的新手还是已经用了一段时间但没研究过模型切换的老手这篇都能帮你把工具用得更通透。1. 为什么需要多模型别只盯着默认模型1.1 默认模型背后的隐藏成本很多人第一次运行 Claude Code直接就是默认设置一路用下去。表面上看Claude 的代码能力确实够强但问题在于默认模型是按prompt tokens output tokens计费的而且你在终端里每一次往返交互都会把上下文窗口里的历史内容重新计算一遍。我做个简单的算术你就明白了。假设你有一个中等规模的项目上下文里已经有 60k tokens 的代码和对话历史每次你请求一次假设输出 2k tokens那么这一次交互的费用大约是输入60k × 输入单价以 Claude Sonnet 大致水平估算约 $3/M输出2k × 输出单价约 $15/M单次成本大约 $0.21如果你在一个复杂任务里交互了 100 次光是这一个 session 的成本就是 20 美元以上。如果你只是用来改个 CSS、写个正则表达式这个成本就非常不划算。这就是/model命令存在的第一个价值按任务粒度切换不同档位的模型把成本控制在合理范围。注意这里说的价格是参考值的估算不同模型、不同接入渠道的实际价格差异很大但“上下文越长单次越贵”这个规律是通用的。关键是你要有这个成本意识而不是死磕一个模型。1.2 多模型的真实使用场景以我自己的使用习惯为例我平时至少会配三个模型在 Claude Code 里轮着用重活累活用最强的模型架构设计、跨文件重构、疑难 Bug 排查。这种任务上下文长、逻辑复杂值得用贵一点的模型。日常 CRUD 和脚本用性价比模型写接口、调样式、写单元测试、修 lint 报错。这类任务模式化程度高用便宜的模型完全够用。机械性任务用快模型批量重命名、格式化、补注释、转译代码。这些活儿考验的是速度和吞吐不是推理深度。你可能会说那我直接开三个终端窗口分别配不同的环境变量不就行了这也是一种办法但/model命令的优势在于可以在同一个会话里热切换不用退出重开也不用记一堆环境变量的排列组合。尤其是你现在用第三方接入方式跑 Claude Code 的时候/model的价值会更加明显。1.3 切换不只是“换个模型”这么简单多说一句很多人以为/model就是改个名字其实背后涉及的是整套请求链路的切换模型名变化 → 对应的 API 端点变化 → 对应的 API key 变化 → 对应的上下文计费规则变化。Claude Code 在这套链路上做得比较聪明的地方在于它允许你通过环境变量和配置文件把不同模型映射到不同的上游服务而不只是换模型 ID。理解了这个机制你才能真正做到“一个终端多模型在手”。2./model命令完全拆解它到底做了什么2.1 最基础的操作方式在 Claude Code 交互界面里直接输入/model回车之后你会看到当前会话可用的模型列表。用上下方向键选择回车确认就完成了切换。如果你已经知道自己要切到什么模型也可以直接一步到位/model sonnet这里有个细节你输入的名字不需要完整匹配Claude Code 支持模糊补全。比如/model son会匹配到 sonnet 相关模型/model opus会匹配到 opus。这个模糊匹配在模型很多的时候非常有用不用记完整 ID。2.2 内置模型的命名规律Claude Code 默认内置了几个模型命名规律是模型系列/型号这种结构。常见的几个模型 ID定位适用场景opus旗舰级推理最强复杂架构设计、大型重构、数学推理sonnet均衡型代码能力强日常开发主力、中型重构、Bug 分析haiku轻量级速度快简单脚本、文档生成、注释补全opus/mini等变体取决于接入版本视具体接入渠道而定你可以输入/model直接看列表不同版本支持的模型不完全一样以列表为准。2.3 切换模型时背后发生的“链路切换”你光知道怎么切换还不够得知道切换后发生了什么。Claude Code 的模型路由逻辑大致是这样的你输入 /model 选择模型 ↓ 读取当前配置环境变量 配置文件 默认值 ↓ 确定该模型对应的 API 端点 ↓ 确定该模型对应的 API key 和认证方式 ↓ 后续所有请求走新的端点/key具体来说模型 ID 会被映射到一次完整的 API 调用而这个映射关系取决于你的接入方式。如果是官方直连那sonnet就会解析成 Anthropic 官方的claude-sonnet-xxx模型。如果你是第三方接入比如通过网关转发到 DeepSeek、GLM模型 ID 就会按照你配置的映射规则去解析。所以/model命令本质上是在帮你管理一套“模型路由表”而不是粗暴地换一个名字。2.4/model支持的模型别名与自定义命名这里要重点讲一个很实用的功能模型别名。你可以在配置里给某个模型定义一个更容易记忆的别名。比如export ANTHROPIC_MODELsonnet export CLAUDE_CODE_MODEL_ALIAS_sonnetdeepseek-chat这种情况下你输入/model sonnet实际请求会打到 DeepSeek 的deepseek-chat模型。这样一来不管背后接了几个模型你只需要记住几个简单的别名就够了。具体配置方式不同版本略有差异但思路是一样的用别名把“逻辑模型名”和“物理模型 ID”解耦。这样你换上游服务商的时候只需要改映射关系不需要改自己的使用习惯。3. 把第三方模型接进 Claude Code完整方案与推荐3.1 前置准备理解三个关键环境变量在配置多模型之前你必须先搞懂三个环境变量的分工不然会出现“配了但没生效”“切了但还是请求官方”这类困惑。环境变量作用典型值ANTHROPIC_BASE_URL指定所有 API 请求的起点地址https://你的网关地址ANTHROPIC_API_KEY网关要求的认证凭证sk-xxxxANTHROPIC_MODEL默认使用的模型 IDsonnet/deepseek-chat等当这三个变量被设置后Claude Code 不再直接访问官方 API而是把所有请求发到你指定的网关由网关决定路由到哪个真正的模型。提示这里说的“网关”可以是云服务商提供的兼容端点也可以是你自己部署的转换层。核心思路是Claude Code 只认 Anthropic 的协议只要对方接口兼容这个协议就能接入。3.2 快速接入 DeepSeek 作为替代模型如果你想把 DeepSeek 接进 Claude Code大致的配置步骤是这样的以通过兼容网关接入为例确认你使用的网关或服务商提供 Anthropic 兼容的端点地址。拿到对应的 API key。在 Shell 配置文件比如.zshrc或.bashrc里写入export ANTHROPIC_BASE_URLhttps://你的网关地址/v1 export ANTHROPIC_API_KEYsk-你的密钥 export ANTHROPIC_MODELdeepseek-chat重新加载配置source ~/.zshrc然后启动 Claude Code。输入/model如果列表中出现了deepseek-chat说明接入成功。这里有一个非常容易踩的坑不是所有兼容服务都支持deepseek-chat这个名字。有些网关要求你填完整的模型名有些则要求你填厂商专属 alias。如果你切过去后发现返回 404 model not found先别怀疑 Claude Code去确认模型名是否在服务商的模型列表里。3.3 同时接入 GLM、DeepSeek 等多个模型很多教程只教你怎么接一个模型但实际使用中我们想要的是“一个 Claude Code 里同时有 DeepSeek 和 GLM随时切换”。这时候把ANTHROPIC_MODEL写死为某个模型的方式就不够用了。正确做法是使用claude_code_models.json这类配置文件如果你的版本支持把所有可用模型都注册进去。我演示一下这个 JSON 文件的典型结构字段名以你实际版本为准{ models: [ { name: deepseek-chat, display_name: DeepSeek Chat, api_key: sk-deepseek, base_url: https://你的deepseek网关地址 }, { name: glm-4-plus, display_name: GLM-4 Plus, api_key: sk-glm, base_url: https://你的glm网关地址 }, { name: sonnet, display_name: Claude Sonnet, api_key: sk-anthropic, base_url: https://api.anthropic.com } ] }这个文件的作用是告诉 Claude Code你现在有三个可用的上游模型各自用什么 key、发到哪个地址。配置好之后重启 Claude Code输入/model你就能看到三个模型出现在列表里自由切换。3.4 云服务商 MaaS 平台的快速姿势如果你不想自己研究网关协议还有一条更省事的路径使用提供 Anthropic 协议兼容的 MaaS模型即服务平台。这类平台通常直接把 Anthropic 兼容端点给你你只需要在控制台里开通服务、拿到 API key然后在 Claude Code 里配置两个环境变量就可以跑起来。我之前用这种方式接入过国内某个 MaaS 平台体验下来有几个点值得说好处是不用自己处理协议转换平台已经帮你做好了模型名按平台提供的 ID 填就行。坏处是可定制性低你不能随便自定义路由规则平台支持哪些模型你才能用哪些模型。另外要注意MaaS 平台一般都会有并发限制和速率限制如果你在 Claude Code 里跑了比较重的自动化任务容易触发限流。3.5 把 Anthropic 官方模型和第三方模型混用的注意事项我最推荐的日常方案其实是“官方 第三方”混用。官方模型处理复杂推理第三方模型处理高频低价值任务。混用的时候需要注意API key 不要混在一起。官方 key 和第三方 key 分开存放不要图省事共用一个。上下文不互通。你在 DeepSeek 上的对话历史不会同步到 Claude切模型相当于换了一个脑子之前的上下文还在但模型的“理解方式”变了复杂任务切模型后可能需要重新描述一下问题。计费规则不同。切换前看一眼当前模型的计费方式尤其是某些第三方模型按 tokens 计费时单价比你以为的贵。4. 多模型日常切换的手感优化与避坑4.1 让 /model 切换更顺手的三件小事第一件小事把最常用的模型排在前面。不同版本的 Claude Code 排序规则不同有些是最新使用的排在前面有些是固定排序。如果你发现自己总是要翻半天才能找到目标模型试试在配置文件里调一下模型列表顺序或者通过别名简化选择路径。第二件小事给高频操作建立肌肉记忆。比如你日常工作流是“先让 haiku 写个基础实现再切 sonnet 做 code review”那就把这两条命令固定下来不要每次都临时去翻列表。我实际用下来下面的切换思路是最顺手的日常编码/写接口 → /model haiku 重构/排查复杂问题 → /model sonnet 架构设计/跨文件改造 → /model opus第三件小事利用/permission配合模型切换。Claude Code 里有个权限模式设置你可以理解为“要不要每次执行命令都问一下我”。当你在跑批量机械任务时可以切到更快的模型同时把权限模式调整为更宽松减少交互等待当你切回复杂任务时把权限模式收紧避免模型自作主张执行危险命令。4.2 模型之间切换的上下文断裂问题这是我在实际使用中遇到的最“反直觉”的问题切换模型后当前会话的聊天上下文其实是保留的但模型的行为差异会导致“记忆还在理解变了”。举个例子我在一个大型重构项目里先用 sonnet 和它讨论了一套方案十几轮对话下来上下文里累积了不少背景信息。这时候我图便宜切到 haiku让它继续按方案写代码。结果发现 haiku 对之前讨论的某些约束理解得很“浅”甚至自作主张简化了逻辑。这不是 bug而是模型的推理能力差异导致的。不同的模型对相同上下文的“理解深度”是不同的。所以我的经验是任务开始阶段尤其是需求讨论、方案设计阶段用能力强的模型。方案定稿后执行阶段可以切到便宜快速的模型。执行过程中如果发现模型开始“犯蠢”及时切回强模型不要硬扛。这个经验在你自己跑过一个完整的多模型工作流后会体会更深。工具只是给了你切换的入口切换的节奏要靠自己把握。4.3 多个 API Key 的管理别用“统一变量”很多人在 .zshrc 里写死ANTHROPIC_API_KEY然后接第三方模型时把 key 换成第三方的。结果下次用官方模型时忘了换回去白白把第三方 key 发给官方端点报错 401 之后还以为官方挂了。我的建议是不要全局设置ANTHROPIC_API_KEY。除非你只用一个固定接入方式。如果你用的是配置文件方式比如claude_code_models.json那就把 key 填在各自的模型配置里如果只能用环境变量方式也建议用脚本管理不同场景的环境变量集合而不是手动改.zshrc。例如在.zshrc里不要写死 key而是写一个简单的切换函数use-claude() { export ANTHROPIC_BASE_URLhttps://api.anthropic.com export ANTHROPIC_API_KEY$ANTHROPIC_OFFICIAL_KEY export ANTHROPIC_MODELsonnet } use-deepseek() { export ANTHROPIC_BASE_URLhttps://你的deepseek网关 export ANTHROPIC_API_KEY$DEEPSEEK_API_KEY export ANTHROPIC_MODELdeepseek-chat } use-glm() { export ANTHROPIC_BASE_URLhttps://你的glm网关 export ANTHROPIC_API_KEY$GLM_API_KEY export ANTHROPIC_MODELglm-4-plus }这样要用哪个就执行哪个函数切换成本低也不容易串 key。4.4 多模态文件识别这么说Claude Code 在日常使用时有个很容易被忽略的点它支持读取图片等非文本文件作为上下文输入但多模态能力的可用性取决于当前模型本身是否支持视觉输入。你如果在一个不支持视觉的模型上粘贴图片路径或让 Claude Code “看”一张截图对方可能会告诉你它看不懂。这时候不是工具坏了而是该切回支持视觉的模型。我在实际项目中处理 UI bug 时经常直接截图丢给 Claude Code 分析这个操作依赖的是模型的视觉能力。如果你用的第三方模型不支持视觉就得不到预期效果。所以在/model切换时给支持的模型做个简单标记是个好习惯——比如在模型列表里给支持视觉的模型加个[vision]后缀一眼就能认出来。5. 常见问题排查与避坑清单实录5.1 模型切换常见报错速查表下面这张表整理了我遇到过以及从社区收集到的高频问题建议收藏。现象根本原因解决方案/model命令提示 unknown model模型名拼写错误或该模型未在配置文件中注册输入/model查看可用列表对比确认切换后立即报 401 authentication errorAPI key 错误或该模型对应的 key 未正确关联检查对应模型的api_key配置切换到某个模型后一直超时网关地址不通或上游服务限流/过载单独 curl 测试该网关连通性确认服务状态切换模型后上下文好像丢了模型在同一个会话中默认共享上下文但部分网关会重置会话检查网关是否支持会话保持必要时手动补充背景模型切换成功但行为无变化你选的模型实际上是某个模型的 alias指向同一个后端在配置里确认 model ID 是否真的对应独立模型输入/model后列表为空配置文件格式出错或没有配置任何可用模型先设置ANTHROPIC_MODEL作为默认模型再排查配置文件 schema5.2 一个真实案例模型列表为空有次我清理环境变量时不小心删掉了ANTHROPIC_MODEL然后启动 Claude Code输入/model发现列表是空的。当时我以为是安装坏了重装了一遍才发现是环境变量的问题。这个问题的排查思路是这样的先检查ANTHROPIC_MODEL是否有值echo $ANTHROPIC_MODEL。如果为空设置一个默认值比如export ANTHROPIC_MODELsonnet。重新启动 Claude Code确认能够正常进入会话。再输入/model列表应该会恢复。这个案例说明一个底层逻辑Claude Code 至少需要一个默认模型作为保底。你的多模型配置可以花里胡哨但默认模型这条“安全绳”必须时刻在线。5.3 接线报错connection failed 的通用排查思路很多人遇到unable to connect to anthropic services这类报错就懵了。这个报错的本质是Claude Code 最终没有连上它期望的服务端点。通用排查顺序先确认你当前的实际端点是什么echo $ANTHROPIC_BASE_URL。检查端点是否可达用curl发一个最小请求测试。如果是第三方网关确认网关面板上的服务状态是否正常是否欠费或限流。如果是官方端点确认你的网络环境是否能正常访问官方服务。逐层确认后再检查 API key 是否有效。这条链路排查下来90% 的问题都能定位。最忌讳的是什么都不查直接重装 Claude Code浪费时间且不一定有效。5.4 一个容易忽略的“用户级 vs 项目级”配置优先级Claude Code 的配置存在多个层级从上到下大致是环境变量最高优先级如果设置就生效 ↓ 项目级配置文件.claude 目录下的配置 ↓ 用户级配置文件~/.claude 目录下的配置这个优先级的意思是如果某个环境变量没设Claude Code 会去找项目级配置项目里也没有才会用用户级配置。很多人的“为什么我改了配置没生效”问题根源就在这里你以为你改了用户级配置但环境变量里残留了旧值导致你的修改被覆盖了。排查思路很简单启动前先echo $ANTHROPIC_BASE_URL看看有没有值有值的话先unset掉再测试。6. 我的实际使用经验与最终建议用了 Claude Code 这么久/model是我每天用得最多的命令之一但说实话真正把它用好经历了一个摸索过程。这里分享几个我觉得最有价值的经验。第一个经验是多模型配置不是越全越好而是越精越好。我一开始接了一堆模型结果每次/model列表都长到要翻页反而影响效率。后来精简到三个主流模型日常使用反而顺手很多。模型在精不在多你有几个真正会用、用得上、用得起的好模型比堆十个模型列表要强得多。第二个经验是别迷信“最强模型”在所有场景下的表现。有时候你切回最强模型解决一个本可以用小模型快速搞定的小问题不仅响应慢费用也高最后生成的结果跟小模型差别不大。我现在的习惯是复杂任务先花 30 秒判断一下复杂度真的复杂再切强模型简单任务就用默认的均衡型模型。第三个经验是把/model命令当成一种“任务分工工具”而不是“升级工具”。它不是一个让你永远用最强的模型来碾压所有任务的工具而是一个让你在合适场景调用合适模型的分工工具。切换模型本身是一种思考方式你要想清楚当前这一步需要的是什么——是深度推理能力还是快速响应还是低成本批量处理然后按需选择。说到底Claude Code 的/model命令本质上是在考验你对任务的理解和拆解能力。工具本身的学习成本并不高真正值钱的是你能不能想明白每个任务适合交给什么样的模型去处理。希望这篇指南能帮你在模型切换这条路上少踩一些坑把 Claude Code 用出自己的节奏。