如何阻止您的 AI Agent 进行不想要的代码更改
Source: Dev.to

AI 代理经常表现得像才华横溢却过于热情的实习生——想帮忙,却有时帮得太过火。即使给出明确指示,它们偶尔也会决定,“让我顺便修一下别的东西……”结果你的代码库里出现了你从未要求的更改。
之所以会这样,是因为现代大语言模型(LLM)被训练成乐于助人。在软件项目中,“过度帮助”很快就会变成混乱。一个微小、无意的编辑可能隐藏在数十个被修改的文件中。通过 git diff 手动审查这些更改既痛苦,而让代理去撤销更改更糟——它只记得对话内容,不记得你的文件状态。
解决方案并不复杂。这是经典的工程纪律:版本控制。我们已经在早期且频繁地提交代码,为什么不把同样的规则强加给我们的 AI 代理呢?下面是一套使用 goose 来保证干净快照和轻松回滚的工作流。
1. 设置版本控制
- 使用 GitHub。
- GitHub CLI (
gh) 配合良好,因为 goose 能完美与其交互。 - 如果更符合你的工作流,GitHub MCP Server 也是一个可靠的替代方案。
2. 始终先创建分支
绝不要让代理直接在 main 上工作。
在特性分支上开始,这样代理的更改始终是隔离且可恢复的。
3. 在上下文文件中添加规则
这才是真正的游戏规则改变者。在 .goosehints 或 AGENTS.md 文件中加入以下行:
每次你进行更改时,都要提交一次,并写上清晰的提交信息。
这条规则会彻底改变整个协作方式:
- 强制自动检查点。
- 为代理的决策创建完美的时间顺序记录。
- 将你的 git 历史变成即时的撤销系统。
不再需要手动寻找隐藏的编辑。
4. 自信地工作
规则设定好后,让代理自由地构建、重构或修复。
如果它偏离轨道,你只需要:
git log # 检查它的步骤
git diff # 审查更改
# 或者直接:
git revert # “Revert to commit abc123.”
你的工作流变得透明且可逆。
结果
只要养成一个简单的习惯——频繁提交——就能消除 AI 辅助开发带来的焦虑。代理仍然乐于助人,但 你仍然掌控全局。
- 再也不用在数十个文件中寻找顽固的更改。
- 再也不必指望代理“记得”它做了什么。
- 再也不会有隐藏在仓库里的意外编辑。
只要干净的提交、清晰的历史和完全的信心。下次项目尝试使用 goose——你的未来的自己(以及你的 git 历史)会感谢你的。
Thumbnail credit: https://petesena.medium.com/