大多数AI编程代理的失败,不是模型不够聪明,而是执行模式选错了。团队上手Claude Code这类代理系统后,往往默认只跑一种工作流:要么每个任务都走受监督的计划模式,要么所有改动一律自动接受。前一种把开发者的时间浪费在审阅琐碎编辑上,后一种则在代理误解上下文时悄悄埋下回归缺陷。
被忽略的关键在于,模式选择应该按任务逐个决定,而不是当成全局偏好。计划模式和自动接受对应的是两种完全不同的风险画像:计划模式让代理先探索、先提议,不碰文件;自动接受则从一开始就授予写入权限。差别之所以重要,是因为一次糟糕的自动接受改动,代价是构建失败或状态损坏,而一次不必要的规划,代价只是token消耗和延迟。
计划模式:先看清楚,再动手
计划模式在探索与实现之间划出严格边界。代理读取代码库、分析依赖、生成一份提议的变更集,在开发者审阅并批准之前,不修改任何文件。这让计划模式成为一类任务的正确默认值:代理对上下文的理解尚未被验证时。
它的价值出现在两种场景。一是任务涉及不熟悉的代码或横切改动,代理可能误判模块边界;二是正确性比速度更重要,比如数据库迁移、认证逻辑,或任何处理用户数据的代码。这些地方一个静默错误的代价足够高,多一道审阅永远划算。
工作流遵循固定顺序:开发者用自然语言描述任务,代理探索代码库、读取文件、分析结构,生成一份列出每处文件改动、新增与删除的计划;开发者审阅后接受或要求修改;只有明确批准之后,代理才进入实现。计划模式增加了延迟,但消除了一种失败模式——代理无法在开发者没看到的情况下写出破坏性改动。
一个常见错误是对每个琐碎改动都用计划模式。如果代码库有强类型检查和完整测试,跨十个文件重命名一个函数并不需要计划阶段,多出的审阅步骤只是纯开销。可用的判断标准是:当开发者无法在三十秒内心算验证这处改动时,才用计划模式。
自动接受:速度换信任
自动接受模式从第一个token起就授予代理写入权限。代理拿到任务提示,读取必要上下文,立即把改动落到文件系统,中间没有批准环节。开发者是在修改已经进入工作目录之后才看到它们。
这种模式为机械性改动提供最大速度:重命名标识符、更新导入路径、应用lint修复,或在大范围里迁移API调用。当代码库有强护栏——类型检查、单元测试、能在合并前拦住回归的CI流水线——风险是可以接受的。
它的工作流把计划与实现压缩成一遍:开发者给出任务提示,代理读取必要文件、决定变更集、立刻写入修改;开发者在版本控制里审阅diff,看到的不是提议计划,而是已提交的工作。改对了就发布,改错了就回滚或手动修复。
这里的失败模式隐蔽但昂贵。自动接受会一直好用,直到代理遇到有歧义的上下文,或做出一个开发者在计划审阅时本会拦下的决定。常见例子是重命名函数时,两个函数名字相似但职责不同,代理选错了目标;代码能通过类型检查,测试也通过,因为测试没有覆盖受影响的路径,缺陷就这样进了生产环境。
自动接受要求同时信任代理和代码库的安全网。正确的使用条件是三条同时成立:任务机械、歧义低;代码库有强静态分析和测试覆盖;开发者已验证代理近期在类似任务上的表现。缺任何一条,就该退回计划模式。
分界线是风险画像,不是任务复杂度
计划模式与自动接受之间的决策边界是风险画像,而非任务复杂度。一行改动如果触及关键逻辑,可能需要计划模式;上千行的重构如果是纯机械的、且被测试充分覆盖,可以用自动接受。
判断从正确性风险开始:如果错误行为的代价高于审阅一份计划的时间,就用计划模式。这包括认证逻辑、支付处理、数据迁移,以及任何处理个人身份信息的代码。
热门跟贴