Composer 与多文件编辑 本节摘要:真实项目中的功能开发很少只改一个文件——加一个 API 接口,可能要同时改 model、service、controller、router、test 五六个文件。Composer(Cursor)和 Cascade(Windsurf)就是为这种场景设计的:你描述一个完整意图,AI 同时修改多个关联文件,生成统一的 diff 供你审查。本节拆解多文件编辑的底层工作流程,讲清如何控制编辑范围、审查 diff、以及在 AI「改飞了」时如何回滚。
本节摘要:真实项目中的功能开发很少只改一个文件——加一个 API 接口,可能要同时改 model、service、controller、router、test 五六个文件。Composer(Cursor)和 Cascade(Windsurf)就是为这种场景设计的:你描述一个完整意图,AI 同时修改多个关联文件,生成统一的 diff 供你审查。本节拆解多文件编辑的底层工作流程,讲清如何控制编辑范围、审查 diff、以及在 AI「改飞了」时如何回滚。
不管你用 Cursor Composer 还是 Windsurf Cascade,多文件编辑的底层逻辑是一样的:
关键步骤解析:
关键概念:多文件编辑的核心价值不是「AI 能改多个文件」,而是「AI 能保持多个文件之间的一致性」。比如你改了一个接口签名,AI 会同步修改所有调用方——这是手动 Inline Edit 做不到的。
在 Composer 输入框中描述你的意图:
给用户模块添加「修改密码」功能: - 在 src/api/user.ts 中添加 PUT /user/password 接口 - 在 src/services/userService.ts 中添加 updatePassword 方法 - 需要验证旧密码正确后才能修改 - 用项目现有的 hashPassword 和 comparePassword 工具函数
Composer 会:
切换到 Agent 模式后,Composer 不仅能改文件,还能:
💡 技巧:对于「加一个完整功能」这种任务,直接用 Agent 模式。对于「我知道要改哪些文件,只需要 AI 帮我写代码」的任务,用普通 Composer(更快、更可控)。
Cascade 的多文件编辑与 Composer 逻辑类似,但体验上有几个不同:
适用差异:
多文件编辑最大的风险是「AI 改多了」或「AI 改错了」。审查 diff 是保护自己的最后一道防线。
如果接受后发现有问题:
git diff 查看变更,git checkout -- . 全部回滚git checkout -- src/api/user.ts⚠️ 注意:养成习惯——在让 AI 做大规模多文件修改之前,先
git add -A && git commit -m "before AI edit"。这样不管 AI 改成什么样,你都能一键回到修改前。
AI 有时候会「热心过度」——你让它加一个函数,它顺手重构了整个文件。控制范围的方法:
方法 1:在 Prompt 中明确约束
只修改 src/api/user.ts 和 src/services/userService.ts。 不要修改其他文件。不要重构现有代码。
方法 2:手动指定文件列表
@file:src/api/user.ts @file:src/services/userService.ts 基于这两个文件,添加修改密码功能。
方法 3:分步执行
先让 AI 只改 service 层 → 确认 → 再让它改 API 层 → 确认。每步范围小,出错容易定位。
多文件编辑是 AI 编程的「重武器」。但再好的武器也需要精准的「瞄准」——下一节我们讲一套可复用的需求描述模板,让你的每一次 Prompt 都精准命中目标。