Claude Code 学习站
Mingyu's Library

学习站 / 实战 Tip / B · 并行与效率

要改200个文件怎么办

改 import 路径、迁移组件库、换 API 名——一次改动铺到几百个文件,丢给一个会话逐个磨既慢又容易漏。

大规模改动的关键不是「让 AI 更快地改」,而是先把改法固化成模式,再选对执行器:确定性的交给脚本,需要判断的才扇出给 agent,最后用抽查和全量校验兜底。

一句话结论

结论 本站观点三步走:① 先在 3–5 个代表性文件上把改法定成明确模式并人工确认;② 纯机械的文本/AST 变换让 Claude 写成脚本一次跑完(快、零 token、可重跑),每个文件需要单独判断的才用 workflow/subagent 扇出并行改;③ 改完随机抽查 diff,再跑类型检查/测试做全量校验,不过就继续修到过。

做法步骤

  1. 小样本定模式。挑 3–5 个有代表性的文件(普通的、边界的、最复杂的各来一个)让 Claude 先改,人工确认改法。官方workflows 文档在成本一节同样建议:大任务先跑一个小切片——「one directory instead of the whole repo」——再决定是否铺开。
  2. 判断脚本还是 LLM。本站观点标准是「改法能不能写成规则」:
    改动性质执行器例子
    确定性变换:同一规则套所有文件让 Claude 写脚本/codemod,一次跑完改 import 路径、重命名函数、批量替换配置键
    逐文件判断:规则写不全,要理解上下文workflow / subagent 扇出,每文件一个 agentstyled-components 迁移 Tailwind、给每个路由补鉴权
    脚本的好处是结果可 diff、可 review、错了改脚本重跑;200 个文件对 LLM 是 200 次机会出不一致,对脚本只是一次循环。
  3. 走 agent 扇出时,首选 dynamic workflow。官方在 prompt 里说「use a workflow」或加关键词 ultracode,Claude 会把编排写成脚本在后台跑,中间结果留在脚本变量里不挤占对话上下文;官方给的迁移例句就是「migrate every component under src/components/ from styled-components to Tailwind, working on each file in its own isolated copy」。/workflows 查看每个阶段的 agent 数、token 数,可暂停、可恢复。限制:最多 16 个 agent 并发、单次 1000 个;超过 25 个 agent 或预计 150 万 token 会出「Large workflow」提醒。需要 v2.1.154+ 的付费计划。
  4. 要产出可审的 PR,用 /batch官方/batch 是内置 skill:把一个大改动拆成 5–30 个 worktree 隔离的 subagent,每个各开一个 pull request,天然按 PR 粒度做 review。worktree 隔离的原理见 worktree 让多会话不打架
  5. 要进 CI 或彻底脚本化,用 headless。官方claude -p "<指令>" --allowedTools "Read,Edit" 非交互跑一条任务,退出码可供脚本分支,--output-format json 拿结构化结果;加 --bare 跳过 hooks/plugins 加载,适合在循环里逐文件调用。详见 D13 · Headless 与 CI
  6. 抽查 + 全量校验收尾。本站观点随机抽 5–10 个文件人工看 diff,确认模式没有走样;然后跑一遍全量校验。官方workflow 有现成的收尾模式:「run npx tsc --noEmit and keep fixing the reported errors until the type check passes」,以及对每个发现做对抗性复核(adversarially verify each finding)再上报。
  7. 成本提醒。官方一次 workflow 扇出几十个 agent,token 消耗显著高于单对话,计入套餐用量;这也是第 2 步先考虑脚本的另一个理由。

可直接抄的 prompt

我要把这个改动铺到整个仓库(约 200 个文件):<改动描述>。
分三步,每步之间停下来等我确认:

1. 先找出所有需要改的文件并报数量,然后挑 3 个有代表性的
   (最普通的、最复杂的、最边界的)改给我看,等我确认改法;
2. 确认后判断执行方式:如果改动是确定性的文本/AST 变换,
   写一个可重复执行的脚本一次跑完,脚本本身先给我看;
   如果每个文件需要单独判断,就 use a workflow 扇出,
   每个文件在隔离副本里改;
3. 全部改完后:随机抽 5 个文件展示 diff,
   然后跑 <类型检查/测试命令>,不通过就继续修,直到通过为止,
   最后报告总改动文件数和校验结果。

来源与最后核实日期