
上个月我重构一个服务的错误处理层,十四个文件,要把散落在各处的字符串报错换成带错误码、调用上下文和 cause 链的结构化错误。
第一次我开着 Fable 加上高推理档位跑全程。十四个文件改完,虽然测试全绿,但代价极其昂贵:折算下来这一趟直接烧掉了将近七百美元的等价 token 额度。更要命的是刚改到第七个文件,密集的超长上下文加上高推理消耗,直接撞上了订阅制的 5 小时用量上限。任务被迫中断,我只能干等下一个 5 小时窗口重置才能继续,原本半天能搞定的活硬生生被拖了一整天。
两周后遇到类似的任务,我走向另一个极端,换成廉价小模型跑全程。它在第一步就把方向定歪了,把错误转换直接塞进每个底层数据库调用点,而不是在 API 边界做统一收口。等我发现不对,十几个文件已经改完,推倒返工又花了大半天。
这两种跑法都走偏了。真正的工程杠杆在于找到那个精准的换档点:用 Fable 做顶层设计与定模,用 Opus 或 Sonnet 承接批量实施。
顶级模型买的是第一个正确的形状
用顶配模型完成前期的架构设计,并让它亲手改完第一个文件;一旦代码模式定下来,立刻把任务交接出去。
这套做法的核心在于“亲手改完第一个文件”。
一份写着“在业务边界统一做错误收口”的重构文档,根本管不住后面的具体实现。真正定下代码形状的,是第一个文件里的那几十行具体代码:错误码枚举怎么命名、底层的原始 error 怎么包进 cause、HTTP 状态码映射写在哪里、单元测试里的断言结构怎么写。
这些工程约定很难巨细靡遗地全写进 prompt 里,但后面的十三个文件全都会严格照着这第一个样本模仿。
顶配模型在复杂系统的边界抽象和架构权衡上极具优势。用它跑前两步,买的是第一个真正正确的代码形状。前两步只占极少数的交互轮次,既能把最核心的规矩立稳,又完全不会触碰 5 小时速率限制的红线。
实施阶段降档给性价比模型
样板一旦立住,后续的工作本质上是高质量的模仿与适配。
这时候把任务交接给 Opus 或 Sonnet,不仅消耗降了一个数量级,更关键的是它们的速率上限宽裕得多。十四个文件的重构,后半段十个模块的处理直接降档,整个任务不仅不会把一周的高配额度抽干,更可以一口气连续跑完,不需要在 5 小时限制面前被迫“中场休息”。
在日常开发里也是同样的逻辑:机械改动交给性价比模型,只有在探索新架构或者大重构时,才动用最高规格模型的预算。
任务分层清晰之后,模型的额度消耗与开发节奏才能达到真正的平衡。
换档的依据只有一个:是否在做新决策
刚开始做分档时,我常按“这个任务难不难”来选模型,后来发现这个标准极不可靠。难易往往是主观感觉,同一个任务今天觉得棘手,明天理清了又觉得简单。
真正客观的判定标准是:这一步需要做新决策吗?
把重构计划拆成明确的任务节点,然后挨个评估:这个节点是在引入新的设计,还是在把前面确定的 pattern 照搬到下一个模块?
回到那次错误处理的重构。第一个接口的处理涉及全局架构设计,用 Fable 跑。剩下十几个接口只是换个数据结构和方法名,直接降到 Sonnet 或 Opus,我只需要扫一眼 diff 的代码形状是否变形。中间如果遇到一个带重试和退避逻辑的特殊模块,超出原有模板,那就把这一步单独升回高档位。
一次完整的重构里,顶配模型通常只出现两次:前期规划一次,敲定第一个样板文件一次。其余时间让它待机。

模式没立稳就降档,返工更贵
换档也有陷阱,最容易翻车的情况是样板还没完全定型就过早降档。
我曾经踩过一次坑:重构一个 API 模块时,第一个节点只写了一个普通的同步 CRUD handler,我就以为 pattern 已经立稳,把任务全交给了便宜模型。
但我忽略了系统里还有带长连接和异步推送的流式接口。便宜模型拿到同步接口的样板,机械地把它硬套在流式接口上,直接吞掉了 context 取消信号和超时控制。测试用例由于 mock 不够细甚至跑通了,直到联调压测时才发现连接泄露。
要避免这种返工,第一个节点必须把主要的变体覆盖全。如果系统里同时存在同步调用、异步流式和带重试的链路,样板阶段就得让顶配模型把这三种形态各做出一份标准解法,再把后续的搬砖任务分发下去。
换档发生在任务边界,保护 Prompt Cache
换档在工程落地时还有一个关键细节:档位切换必须发生在任务边界上,不要在单次对话中途临时改模型。
在同一个会话中途修改模型配置,往往会破坏已有的 prompt cache,为了省几个 token 反而导致整段长上下文被重新计算,既慢又费。
更顺畅的工程做法是按步骤切断上下文:
- 定模阶段:用 Fable 开一个全新会话,完成方案规划并落地第一个文件的代码,确认无误后提交 git commit。
- 实施阶段:开启一个使用 Sonnet 或 Opus 的工作会话,只把刚才提交的 diff 和规范当作参考输入,让它专注于按样板批量修改剩余文件。
- 验证阶段:在实施全部完成后,起一个干净会话做最后一轮审查与边界测试。
成熟的重构流程应当是:规划与样板用高配,批量实现交给性价比模型,并在任务边界上完成干净的交接与验证。
下次发现订阅额度见底或者频繁撞上限制时,不要直接把整个流程切到廉价模型。先看清楚,任务里的哪一步是在定义规则,哪一步只是在执行规则。