同一个 Codex 会话里,能不能随时换个模型接着干,上下文和任务状态一点不丢?比如复杂工程用一个模型,普通改代码换另一个,额度或成本不合适再切回去。想法很合理:既然都有 API,换个 Base URL 和模型名不就行了?
研究下来发现没那么简单。模型 API 能调用,不等于整个 Agent 会话状态能无缝迁移。一个完整的 Coding Agent 会话里,除了聊天文字,还有工具调用记录、工具返回结果、模型特定的消息格式、上下文压缩状态,以及不同提供商对参数和功能的支持。简单转发给另一个模型,它未必能按原来的方式继续处理。
尤其是工具调用:前一个模型可能已经发起了某个操作,客户端正等着工具返回,另一个模型未必能直接继承这段没完成的调用关系。就算看起来能继续聊天,也不代表原来的 Agent 状态真的被完整保留了。
所以模型路由其实有三个层次:只对新请求换模型,相对容易;让不同模型读取统一整理过的上下文,要处理兼容性;想在同一个原生客户端里完整保留会话状态、工具链和执行进度,则是最难的一层。
真正有价值的模型路由,比拼的可能不是支持了多少家供应商,而是状态兼容性和任务连续性。切换之前,先实际测一测:切换前后的历史有没有丢,工具调用能不能继续,已有文件状态对不对,异常中断后还能不能恢复。只看路由器返回成功就宣布切换完成,还差得远。