接入教程

Claude Code 换用其他模型:端点替换怎么做、哪些能力会掉

Kenji Watanabe

Claude Code 说到底是在跟一个 HTTP 端点通信。正是这一点让"换模型"这件事成立:这个工具并没有被焊死在某一家供应商上,它被焊死的是 Anthropic Messages API 这个请求形状。任何能把这个形状伺候好的服务,都可以坐在它后面。

下面讲清楚:端点替换具体怎么做、哪些能力换完还在、以及怎么判断一个替代模型是真能干活,还是仅仅能返回一段响应。

端点替换是怎么工作的

Claude Code 从环境变量里读取端点地址和凭据。把这两个变量指向另一个 base URL,客户端就会把同样的请求发到别处:

  • ANTHROPIC_BASE_URL——负责处理请求的端点基础地址。
  • ANTHROPIC_AUTH_TOKEN——该端点接受的凭据。

在启动工具的那个 shell 里设好这两个变量,之后每一个请求都会发往新目的地。客户端其他部分不需要改。整个机制就这么多。所以真正值得问的问题不是"能不能换",而是"对面那个端点到底实现了多少"。

这里有两件事都被叫作"换模型",但表现完全不同:

同样的 Anthropic 模型,走不同的线路。 同一个模型家族,通过网关、云厂商托管服务或中转端点访问。行为基本不变,因为模型就是那个模型;变的是计费、延迟和可用性。

另一个模型家族,套一层协议转换。 一个非 Anthropic 的模型被包装成能接收 Messages API 请求。请求形状对上了,但底下的模型并没有 Claude 那套针对智能体循环的训练,真正的差异就出在这里。

换完之后,什么还在、什么掉了

按实际出问题的频率排序:

工具调用是第一个要验的。 Claude Code 是一个智能体循环——它靠依次调用工具来读文件、跑命令、改代码。一个原则上支持工具调用、但调得不精准的模型,会让循环卡住、反复重试或者发出格式错误的调用。这是"技术上连上了、实际上用不了"最常见的原因。

长上下文比基准测试成绩更重要。 真实会话会不断累积文件内容、命令输出和之前的对话。一个标称窗口很大、但在后半程质量明显下滑的模型,前十分钟感觉良好,之后就开始忘记早先定下的决定。

Prompt 缓存本来是计费问题,直到它缺席。 智能体会话每一轮都会重发一大段稳定前缀。不支持缓存的端点每次都按完整前缀计费,长会话里这部分能主导总成本。

System prompt 的处理方式各不相同。 Claude Code 会发送相当长的系统指令。转换层有时会拼接、截断或重排它们,症状是模型无视明明已经告诉过它的项目约定。

流式与停止行为。 不完整或非标准的流式实现,表现为输出一阵一阵地冒出来,或者循环识别不出"已完成"。

五步验收

在把真活交给一个替代模型之前先跑这五步,每一步对应上面一个失效模式。

  1. 单次工具调用。 让它读某个指定文件并报告其中一个事实。如果调用格式错了或者干脆跳过,到此为止。
  2. 链式调用。 要求一个需要先读、再改、再验证的改动。调用不精准的问题会在这一步暴露。
  3. 长会话记忆。 跑二十来轮之后,不重述地引用一个很早做出的决定,看它还记不记得。
  4. 每轮成本。 对比第一轮和第十轮的计费输入 token。如果每轮都是一个又大又平的数字,说明缓存没有生效。
  5. 出错时的表现。 给它一条会报错的命令。能用的模型会读错误信息并调整;不合适的会把同一个调用再发一遍。

五步全过的模型可以用。只过了第一、二步的,做短小、范围清晰的改动没问题,稍长一点就会让人难受。

什么时候不该换

如果换的理由是省钱,先拿"算上缓存之后的价格"来比——一个命中缓存的 Anthropic 会话,可能比一个没有缓存的便宜模型还便宜,因为前缀占了大头。账单到底被什么推高,见 Claude API 价格

如果换的理由是访问问题而不是模型偏好,那变量是端点,不是模型。把请求路由到同一个模型的另一个端点,行为完全一致,访问问题本身就解决了——几条线路的对比见国内怎么用 Claude Code

如果活是长时间运行的智能体任务,对工具调用不精准的容忍度很低,一个会把循环卡住的便宜模型并不便宜。

常见问题

Claude Code 能用 Claude 以外的模型吗?

可以,前提是它指向的端点提供 Anthropic Messages API 形状的服务。客户端不限制端点后面是什么模型;实际的限制来自模型处理工具调用和长上下文的能力。

怎么把 Claude Code 指到另一个端点?

在启动工具的 shell 里,把 ANTHROPIC_BASE_URL 设为端点的基础地址,把 ANTHROPIC_AUTH_TOKEN 设为该端点接受的凭据。

为什么替代模型连上了却干不了活?

几乎总是工具调用的问题。把请求形状伺候好很容易;在一个长循环里持续发出格式正确、顺序正确的工具调用,很难。

换模型能省钱吗?

有时能,但比预期少。智能体会话会重发一大段稳定前缀,所以一个支持 prompt 缓存的端点,经常比名义上更便宜、却没有缓存的那个更划算。

替代模型的行为会完全一样吗?

不会。只有"同一个模型走不同线路"时行为才一致。另一个模型家族套一层转换层,对上的是接口,不是行为。