正文

随着 AI 编程工具越来越强大,它们不仅可以写代码,还能直接修改文件、提交 Pull Request,甚至运行脚本。乍一看,效率惊人,但潜在风险也很大:AI 可能修改本不该动的文件,破坏核心逻辑、敏感配置,或者引入难以察觉的 bug。

因此,如何让 AI 只改该改的文件,成为团队必须解决的核心问题。

一、明确文件修改边界

AI 并不会自动知道哪些文件可以改、哪些文件必须保持原样。必须明确边界,告诉 AI 哪些目录、文件属于任务范围,哪些文件禁止修改。

策略一:使用项目级说明文件。

AGENTS.md / CLAUDE.md 可以定义文件访问规则,例如:

这种规则可以直接供 AI 参考,避免盲目改动其他目录。

策略二:用 task-specific prompt 限制修改范围。

在启动 AI 编码任务时,给它明确指令,例如:

这种 prompt 级别的控制可以防止任务扩散,但要注意 prompt 必须覆盖所有目标文件路径,否则 AI 可能自己猜测。

md
## File Access Rules

- Only edit files under `apps/web/src/components/` for UI tasks.
- Only edit files under `apps/api/src/modules/` for API tasks.
- Do not modify configuration files: `.env.production`, `docker-compose.yml`.
- Do not edit legacy directories: `legacy/`, `old_modules/`.
Text
只修改以下文件:
- apps/web/src/components/Button.tsx
- apps/web/src/pages/Home.tsx

其他文件请勿改动,任何必要变更都必须先询问。

二、通过上下文识别控制修改

AI 生成代码的依据是上下文。让它只改特定文件,需要让它明确理解项目结构和任务目标。

这样,AI 会有意识地将修改限制在指定范围,减少意外越界。

  • 提供目录结构:告诉 AI 文件夹和模块分布。
  • 提供文件责任说明:告诉 AI 每个目录的用途,例如“components 目录只放 UI 组件”,“utils 目录只放纯函数工具”。
  • 限制依赖范围:让 AI 知道只能调用现有模块,禁止新增跨模块依赖。

三、分支管理和工作区隔离

即便有规则,AI 也可能在任务过程中意外改到不该动的文件。分支管理和工作区隔离是保险策略。

只要有人工确认,越界风险就能大幅降低。

  • 创建专属任务分支:让 AI 在独立分支工作,不直接触碰主分支。
  • 复制工作目录或使用 sandbox:给 AI 一个隔离的代码副本,让它只能操作副本中的文件。
  • 提交前 Diff 审查:让 AI 生成修改后,先生成 diff,再由人类审查是否越界。可以要求 AI 输出修改的文件列表。
Bash
git diff --name-only

四、自动化验证

AI 即便被限制文件,也有可能破坏接口或逻辑。自动化验证是第二道防线。

通过 CI/CD 集成,可以自动检查 AI 的修改是否符合预期。

  • Lint 检查:确保风格一致,不破坏约定。
  • Type check / Static Analysis:确保类型正确,不破坏依赖关系。
  • 单元测试:覆盖任务相关文件的功能验证。
  • 集成测试:确保模块交互未被破坏。

五、分层任务与迭代控制

给 AI 的任务越小,它改错文件的概率越低。建议将大任务拆成多个小任务。

每个任务都有明确的目标文件,迭代过程中发现越界修改可以立即纠正。

  • 先改单个模块或组件文件。
  • 完成后运行测试和审查 diff。
  • 再进入下一模块。

六、AI 输出审查与风险提示

让 AI 输出每次修改涉及的文件列表、修改原因和潜在风险,可以辅助开发者判断:

这样,AI 只修改任务相关文件,同时给出修改理由,人工审查更高效。

md
## AI Modification Summary

- Files modified:
  - apps/web/src/components/Button.tsx
- Reason for modification: Update onClick handler to fix bug
- Potential risks: UI regression if props structure changed
- Tests run: unit tests passed

七、总结策略

要让 AI 只改该改的文件,需要多层保障:

结合以上策略,AI 修改的文件范围可以严格控制,同时确保修改安全可靠。

  • 明确规则:通过 AGENTS.md / CLAUDE.md 或 prompt 指令明确修改范围。
  • 提供上下文:项目结构、文件用途、依赖限制。
  • 分支隔离:独立分支或 sandbox 环境。
  • 自动化验证:lint、type check、单元测试、集成测试。
  • 分层任务:小任务迭代,降低越界风险。
  • 输出审查:让 AI 自行列出修改文件和风险,便于人工确认。

FAQ

1. AI 可以自动避免修改不该改的文件吗?

只有当你明确规则并提供上下文时,AI 才会遵守。否则它会根据概率猜测,可能修改不相关文件。

2. 分支隔离真的有必要吗?

非常有必要。即便有规则,AI 也可能出错。独立分支可以避免直接破坏主分支。

3. 可以只靠 prompt 限制文件吗?

可以,但不够安全。结合 AGENTS.md / CLAUDE.md 或其他规范文件,效果更稳。

4. 如何知道 AI 改了哪些文件?

让 AI 输出 diff 或使用 git diff --name-only,人工审核修改范围。

5. 文件越界修改有什么风险?

可能破坏核心逻辑、敏感配置、接口兼容性,甚至导致线上系统故障。

结论

AI 写代码强大,但不受约束时可能修改任何文件,带来不可预测风险。

让 AI 只改该改的文件,需要多层保障:明确规则、上下文约束、分支隔离、自动化验证、分层任务和输出审查。

在 AI 时代,边界管理比代码本身更重要,只有这样,AI 才能成为可靠的工程协作者,而不是潜在的破坏者。

参考来源

Codex CLIOpenAI 官方文档How Claude remembers your projectAnthropic 官方文档Claude Code settingsAnthropic 官方文档

相关文章

Codex CLI 实用配置指南:先把这 6 件事配好,再开始让它写代码智能编程 / 约 18 分钟Claude Code 配置指南:先把这 7 件事配好智能编程 / 约 18 分钟为什么 AI Agent 写代码必须有 AGENTS.md / CLAUDE.md:提高质量的 9 个关键理由智能编程 / 约 16 分钟7 个关键洞察:AI Coding 工具真正改变的不是写代码,而是验证代码智能编程 / 约 18 分钟AI 写代码最危险的不是报错,而是看起来能跑的代码:开发者必须警惕的五大陷阱智能编程 / 约 10 分钟

作者信息