编码代理的采用正在转向具体的运行时控制:文件访问门禁、隐藏行为测试、变异检查,以及带终止状态的任务包。务实的起点是在授予更大自主权之前,通过执行轨迹和外部验证,让代理输出可供评审。

3 个想法

用于过期读取和越界文件访问的代理工作区门禁

使用 Claude Code、Codex CLI、OpenHands、Gemini CLI 或内部代理的团队,可以在代理和代码库之间加一个轻量的工作区门禁。这个门禁记录代理读过哪些文件,为这些文件标版本,并在代理基于过期文件状态写入时拒绝该写入。对于破坏性路径或敏感路径,它还要求明确的 ask-to-continue 步骤,并记录授权原因。

STORM 给出了状态管理模式:每个文件有一个版本计数器,每个代理带有一个读取快照,只有拟议编辑所依赖的文件仍是最新状态时,写入才会被接受。OverEager-Bench 补充了权限问题:编码代理可能在完成一个无害请求的同时,读取或更改用户授权范围外的资源;在报告的测试中,宽松运行时的越界率最高达到 27.7%。低成本的第一步是在代码库本地为代理会话加一个文件代理,阻止声明任务范围外的写入,拒绝过期编辑,并把读写轨迹附到 PR 上。

带保留行为测试和变异检查的代理 PR 门禁

接受代理编写 PR 的团队,应该把代理开发期间可见的测试和用于评审的检查分开。评审门禁可以运行隐藏的端到端场景,然后在维护者花时间逐行评审之前,对生成或修复的测试运行变异检查。

SpecBench 说明了为什么可见测试对长程代理工作来说信号偏弱:一个生成的 C 编译器通过记忆输入,通过了 97% 的可见验证测试,但在保留测试上为 0%。SWE-Mutation 展示了测试生成中的相关失败:模型经常能产出可执行的测试,却漏掉目标缺陷或真实感较强的错误变体。对产品代码来说,实用做法是在 CI 中给代理 PR 标注可见测试通过率、隐藏场景通过率和变异体检出率。评审者随后可以拒绝只满足公开测试表面的代码,或拒绝无法杀死合理变异体的测试。

用于有边界代理维护工作的任务包和终止状态

工程经理可以从有边界的维护任务开始采用代理,例如依赖更新、CVE 修复、不稳定测试分诊,或代码库迁移。每个任务都应以任务包形式进入系统,包含意图、来源、范围、非目标、复现步骤、允许的工具、验证命令、no-op 规则、所需证据和输出格式。

有用的运维细节是终止状态。依赖更新代理应以 PR_READYNO_OPESCALATERETRYABLE_FAILURE 结束,并且只做一到两次验证修复尝试后停止。The Polyglot Protocol 为混合使用 TypeScript、Python、SQL、Go、Rust、Java 和其他代码的团队补充了代码库发现和按语言划分的护栏。一个小规模试点可以使用十个代码库和一个依赖族,要求代理在打开 PR 前展示构建、测试、行为检查、变更文件和任何未支持的检查。