带审批门的写码Agent:改代码前必须经你点头
多数人以为写码Agent的能力取决于模型强弱和循环设计,实际核心难点是让模型动手改代码前先停下来征求你的同意。这套方案用一个文件、三个工具搭建会修复真实代码错误的Agent,没有人工点头,磁盘上的文件不会有任何改动。
环境固定为Python 3.12、Gemini SDK 3.0.0、pytest 9.2.0,模型选用Gemini 3.8 Flash,输入每百万token 0.75美元、输出每百万token 3.75美元,标准费率有效期到2026年12月31日,主循环上限设为12步。
演示案例是一个购物车功能bug:同一件商品第二次加入时,数量被覆盖而非累加。测试用例为先加2本笔记本、再加3本,预期总数5本,实际返回3本。Agent先运行测试得到1败3胜的结果,接着读取测试文件和购物车源码定位问题,随后把完整修改提案打印在终端,停在确认提示处,此时磁盘文件没有任何改动。
人工确认后写入才会生效,Agent自动重跑测试得到4胜,本次任务消耗7017个输入token、1202个输出token,总成本约0.0098美元,不到1美分。
搭建时需要注意三个核心风险:第一,写入工具没有审批门的话,模型第一次运行就可能把项目改得面目全非,写入前必须设置人工确认环节;第二,路径限制只写在提示词里没有约束力,必须在代码层面实现路径校验,所有路径解析后确认在项目目录内才允许访问,超出范围直接拒绝;第三,没读完提案就确认风险极高,案例中Agent为了修改一个方法里的3行代码,直接重写了整个文件,还保留了一行标注“此处故意埋错”的过期注释,自动确认会把这类无效内容一并提交,只有逐行读完提案才能发现问题。
三个工具的分工为读文件、跑测试、写文件。读文件和跑测试是只读操作,不需要人工确认,其中读文件设置路径围栏和8000字读取上限,跑测试的指令硬编码在程序中,模型无法修改,设置120秒超时,仅返回输出末尾3000字内容。写文件是唯一会修改项目的操作,因此必须设置审批门。
搭建顺序为:先开隔离环境、固定版本、跑一次1败3胜的测试,再安装三个工具、编写主循环,审批门装好后再允许模型运行。任务描述必须明确要求修改源文件、绝对不能改动测试用例,测试是验收的标尺,改动测试会让结果失去意义。
实际运行中还有两个容易踩的坑:一是工具结果的返回角色,用工具角色返回会直接触发400错误,必须用用户角色返回才能正常运行;二是被拒绝的提案不允许重试,模型收到拒绝后需要在总结中说明原本计划的修改内容,允许重试会让审批门形同虚设。
安全的写码Agent核心不在模型智能程度,而在动手前有没有一道无法绕过的人工确认关卡,提示词是建议,代码层面的限制才是实际执行的规则。