Appearance
Gemini CLI Agent 过于激进地修改代码,不经确认直接大范围变更
问题
使用 Gemini CLI 处理编程任务时,Agent 会在没有明确用户许可的情况下直接进行大范围代码修改——重命名文件、重构多个模块、删除代码块——让人感觉失控,不知道它到底改了什么。
解决方案
方案 1:使用 Plan Mode(推荐)
在任务前输入 /plan,强制 Agent 先输出执行计划,由你确认后再动手:
/planPlan Mode 下 Agent 会展示:
- 打算修改哪些文件
- 每个步骤的具体操作
- 预期影响范围
你可以在计划阶段修改意图、删掉不想要的步骤,或直接取消。确认后 Agent 才会执行。
详见 Plan Mode 规划模式。
方案 2:更小粒度地描述任务
将大任务拆分成多个小任务逐步执行,避免一次性给 Agent 太大的自由度:
# 不推荐(太宽泛)
帮我重构整个 auth 模块
# 推荐(具体可控)
只修改 auth/login.ts,把 getUserById 函数的返回类型改为 User | null描述越具体,Agent 的操作范围越可预测。
方案 3:配置工具批准策略
在 settings.json 中设置更严格的工具批准策略,要求 Agent 在执行写文件操作前先征得确认:
json
{
"autoApprove": false
}关闭自动批准后,每次写文件、运行命令都会弹出确认提示。
常见问题
Q: 有没有办法让 Agent 只读不写,只帮我分析代码?
A: 可以在任务描述中明确说"只分析,不修改文件",Agent 会尊重这个指令。也可以使用 --allowed-tools read_file,web_fetch 限制可用工具(仅允许读操作)。
Q: Agent 已经改了一堆文件,怎么回滚?
A: 用 /rewind 命令回退到之前的会话状态,或通过 git checkout . 还原工作区变更(前提是修改前已 commit)。
Q: Plan Mode 是否默认开启?
A: 从 v0.34.0 起 Plan Mode 默认开启,复杂任务会自动触发规划流程。如果你的版本较旧,可手动输入 /plan 进入。