首页 / 正文

Fable 5 × Codex 实战:用一个 Loop 完成 AI SDK 7 全量升级

Mooko
发布于 2026-08-20 · 5分钟阅读
776 浏览
0 点赞 暴击点赞!

Fable 5 × Codex 实战:用一个 Loop 完成 AI SDK 7 全量升级

从 Fable 5 上线那天早上开始,到现在,我让 Fable 5 和 Codex 一起跑完了第一个完整 Loop。

目标很具体:帮我的 CodePilot 完成 AI SDK 7 的全部升级。

连续跑了两天,额度还没用完。实际体验下来,Fable 5 不需要一上来就开很高的思考额度。只要任务拆得清楚,代码库状态稳定,低一点的配置也能持续推进。

这套方法适合什么场景?

  • 大版本依赖升级
  • API 批量迁移
  • 老项目重构
  • 多文件联动修改
  • 需要反复测试、修复、再测试的工程任务

核心不是让模型一次性写完所有代码。

核心是让它进入一个可控的循环:

读取项目
  ↓
制定修改计划
  ↓
执行一小批改动
  ↓
运行类型检查和测试
  ↓
读取报错
  ↓
修复问题
  ↓
继续下一批

这才是 AI 编程真正能落地的姿势。别指望一句“帮我升级到最新版”就能收工,那更像是在给自己预约一场调试马拉松。

这次升级的任务边界

这次任务围绕 CodePilot 展开,目标是把项目迁移到 AI SDK 7。

大版本升级通常会碰到几类问题:

  • 导入路径变化
  • 方法名和参数结构变化
  • Provider 配置变化
  • 流式输出接口变化
  • 类型定义变严格
  • 旧版兼容代码失效
  • 测试用例和 Mock 需要同步调整

这些问题很少集中在一个文件里。

模型改了一个调用点,可能会影响类型定义;类型修好了,测试又可能暴露出运行时差异。把任务当成单次问答,成功率不会太高。把它当成一个持续运行的工程 Loop,结果会稳定很多。

一个实用的 Loop 怎么跑

1. 先让模型认识项目,不要急着改

把仓库交给 Fable 5 和 Codex 后,我会先要求它完成项目扫描:

请先不要修改代码。

扫描当前项目,确认:
1. 使用了哪些 AI SDK 相关包
2. 所有 SDK 调用点分布在哪些文件
3. 当前版本和目标版本的差异
4. 可能受影响的类型、Provider、流式响应和测试文件
5. 升级过程中最可能出现的风险

请输出:
- 受影响文件列表
- 修改优先级
- 推荐执行顺序
- 每一步完成后的验证命令

这一步看起来慢,实际是在省时间。

如果模型没有建立项目地图,后面很容易出现漏改、重复改、误删配置的问题。代码库越大,扫描阶段越不能省。

2. 把大升级切成小批次

不要直接下达这种指令:

把项目全部升级到 AI SDK 7,确保能运行。

这句话目标太大,验收标准也太模糊。

可以拆成几批:

请处理第一批:
- 升级 AI SDK 相关依赖
- 更新所有直接导入路径
- 暂时不要修改业务逻辑
- 修改完成后运行类型检查
- 如果出现报错,先修复本批次引入的问题
- 汇报改动文件和剩余风险

然后再处理:

请处理第二批:
- 迁移文本生成调用
- 迁移流式响应处理
- 保持现有函数签名不变
- 为每个改动点补充必要的类型修正
- 运行测试并报告失败用例

这样做有两个好处:

  • 出错时容易定位
  • 模型不容易跨文件乱改

一次只给它一个明确的小目标,工程质量通常比“全包”更好。

Fable 5 不需要一开始就拉满思考额度

这次连续运行了两天,额度还没有用完。

我的实际策略是:

  • 项目扫描:使用中等思考额度
  • 常规导入替换:使用较低额度
  • 类型报错修复:根据复杂度临时提高
  • 跨模块架构调整:再给更充足的思考空间

不是每个动作都值得消耗最高配置。

批量改导入、修正明显的类型错误、更新简单参数,这些工作更依赖上下文完整和验证及时。把大量额度用在机械修改上,性价比不高。

真正需要提高配置的情况,通常是:

  • 报错信息互相牵连
  • 同一个 API 在多个抽象层被封装
  • 流式响应行为发生变化
  • 类型通过了,运行时却失败
  • 模型连续两轮修复仍然没有解决问题

判断标准很简单:连续两次修改没有让测试结果变好,就别让模型继续盲修。提高思考额度,或者人工介入重新整理问题。

每个 Loop 都要有明确的验收点

AI 改完代码后,不能只看它说“已完成”。

每一轮都安排固定检查:

pnpm install
pnpm typecheck
pnpm lint
pnpm test
pnpm build

具体命令按项目实际情况替换。

重点是让模型自己跑验证,而不是把验证工作留给你。可以直接这样要求:

完成修改后,请依次执行:
1. 类型检查
2. lint
3. 单元测试
4. 构建

不要只描述结果,请读取实际命令输出。
如果失败:
- 判断是本轮修改造成的问题,还是项目原有问题
- 给出失败原因
- 直接修复本轮相关问题
- 重新执行失败的命令

这段话很关键。

没有“读取实际输出”这句,模型可能只会根据代码表面推测成功。代码升级最怕这种“看起来对,跑起来炸”的情况。

给 Codex 的推荐任务模板

你可以把下面这段作为通用模板,放进升级任务里:

你正在维护一个真实运行中的项目。

目标:将当前项目升级到 AI SDK 7。

工作规则:
- 修改前先读取相关文件和依赖配置
- 不要凭记忆猜 API,优先以项目代码、类型定义和官方变更为准
- 每次只处理一个明确批次
- 不要顺手重构无关代码
- 保持现有业务行为不变
- 修改后运行类型检查、测试或构建
- 记录每个失败命令的完整输出
- 遇到不确定的问题,先说明假设,再继续执行

本轮任务:
[填写具体任务]

验收标准:
[填写必须通过的检查]

完成后请输出:
1. 修改了哪些文件
2. 每个文件改了什么
3. 执行了哪些验证命令
4. 哪些命令通过
5. 还有哪些风险或待办

这个模板的重点不在措辞多漂亮,而在于给模型加上边界、验证和汇报机制。

升级过程中最容易踩的坑

坑一:让模型一次性重写整个项目

看起来省事,实际很容易带来大范围噪音。

模型可能顺手改掉命名、目录结构、错误处理,甚至动到和升级无关的业务逻辑。后面出问题时,你很难判断是哪一处改动造成的。

**处理方式:**限定文件范围和本轮目标。无关重构全部延后。

坑二:只升级 package.json

依赖版本更新只是起点。

真正麻烦的是调用方式、类型、流式处理和测试代码。只改依赖,不跑检查,基本等着后续报错。

**处理方式:**依赖升级后,立刻搜索旧 API、旧导入和旧配置。

坑三:看到类型错误就直接加 any

这是 AI 修代码时很常见的偷懒路线。

类型错误消失了,问题被藏起来了。等到生产环境遇到异常响应,排查成本更高。

**处理方式:**要求模型解释类型冲突的来源,优先调整真实类型和数据流,不要用 any 盖住问题。

坑四:测试失败后不断重试同一个方案

模型有时会在同一个方向上来回打补丁。代码越来越复杂,测试结果却不动。

**处理方式:**连续两次失败后暂停,让模型重新总结:

当前方案连续两次没有通过测试。
请停止继续打补丁,重新分析:
1. 失败是否来自 API 迁移方向错误
2. 当前封装是否仍然使用旧版假设
3. 是否需要回退最近一轮修改
4. 请提出两个替代方案,并比较风险

这一步能把模型从“修补模式”切回“分析模式”。

坑五:忽略运行时验证

类型检查通过,不代表 AI 调用真的正常。

尤其是流式输出、工具调用、错误处理、Provider 配置,这些地方经常出现类型层面看不出的差异。

**处理方式:**准备一个最小可运行场景,验证真实请求、流式返回和异常分支。

一套适合日常开发的操作节奏

如果你也要用 Fable 5 和 Codex 做大规模升级,可以照着这个节奏走:

开始前

  • 建立独立分支
  • 保存当前测试结果
  • 确认依赖管理命令
  • 找出所有 SDK 入口文件
  • 准备回滚方案

执行中

  • 每轮只改一类问题
  • 每轮都跑验证命令
  • 记录失败输出
  • 及时提交小版本
  • 不要把多个未验证批次叠在一起

收尾时

  • 检查是否还有旧 API
  • 搜索旧版本配置
  • 跑完整测试和构建
  • 手动验证关键 AI 流程
  • 清理临时兼容代码
  • 让模型生成升级变更记录

提交粒度越小,回滚越轻松。别等改了四十个文件、堆了两百处变化,才发现第一步就走偏了。

这次实践得到的结论

Fable 5 和 Codex 适合处理这类持续型工程任务,但前提是你要把它们放进一个明确的 Loop 里。

任务拆分、命令验证、错误回读、分批提交,这几件事缺一不可。

思考额度也不用盲目拉高。简单迁移交给低额度,复杂报错再临时加码,通常更省资源。连续跑两天,额度没有耗尽,说明稳定的流程比堆配置更重要。

真正好用的 AI 编程,不是模型替你敲完所有代码。

是它能持续读取项目、执行修改、面对报错、调整方案,并且每一步都留下可检查的结果。

这才是一个能用于真实项目的 Loop。

OpenClaw
木瓜AI - 中转平台
木瓜AI - 大模型中转平台上线啦
注册即送免费tokens
聚合 全球顶尖大语言模型,支持 GPT, Claude, Gemini 等。
立即领取tokens