真实面经题目 · 原创解析
AI Coding Agent 如何从人工逐步确认切换到自主执行,权限、审批策略、风险护栏和回滚机制应如何设计?
这题考 Agent 自主化的安全工程:不是简单关闭确认按钮,而是用风险分级、最小权限、策略审批、沙箱执行、自动验证和回滚审计来决定哪些动作可以自动做。
真实面经题目 · 原创解析
这题考 Agent 自主化的安全工程:不是简单关闭确认按钮,而是用风险分级、最小权限、策略审批、沙箱执行、自动验证和回滚审计来决定哪些动作可以自动做。
我会先说明,AI Coding Agent 从人工确认到自主执行不能一步切到全自动,而要按动作风险做分级授权。低风险动作,例如读文件、搜索代码、运行只读命令、执行局部测试,可以默认自动;中风险动作,例如修改普通源码、安装开发依赖、生成 patch,可以在受限目录、受限命令和自动测试通过的前提下自动;高风险动作,例如删除文件、改生产配置、提交推送、访问密钥、数据库迁移、执行网络或付费操作,必须保留人工审批或更强策略。权限上要采用最小权限和能力令牌,Agent 只拿当前任务需要的文件、命令、网络和写入范围,并设置超时、资源配额和审计 trace。审批策略可以从手动确认演进为规则引擎:按动作类型、文件敏感度、diff 大小、测试覆盖、置信度和用户偏好决定自动批准、要求确认或拒绝。护栏上要有沙箱、命令 allowlist、敏感信息扫描、越权检测、输出校验和二次验证。回滚机制要支持 patch 级回退、临时工作区、版本控制、检查点和失败自动停止。最后还要用灰度策略上线:先在只读和测试环境自动化,再扩展到低风险代码改动,持续监控误改率、审批命中率、回滚率和用户信任。
从人工确认切到自主执行,最重要的是区分动作风险,而不是给 Agent 一个总开关。读文件、搜索、查看 git diff、运行单测通常风险较低;写代码、格式化、安装依赖属于中等风险;删除文件、修改安全配置、提交推送、访问外部服务、执行迁移或清理数据属于高风险。不同等级对应不同审批、沙箱和回滚要求。
不要让 Agent 继承用户完整终端权限。更合理的是 capability-based permission:给每次任务发放有限能力,例如可读路径、可写路径、允许命令、网络域名、最大运行时间、最大输出大小和可用工具。能力应有时效、范围和用途说明,任务结束或失败后自动失效。这样即使模型误判或提示被注入,也难以越权执行。
人工确认可以被抽象成策略决策:自动批准、需要确认、拒绝或降级执行。策略输入包括动作类型、文件敏感度、diff 行数、测试覆盖、是否触碰密钥、是否执行破坏性命令、模型置信度、历史成功率和用户配置。这样 Agent 在大多数低风险步骤上可以连续执行,但遇到高风险动作仍会停下来。
自主执行必须配沙箱。常见护栏包括只读文件系统视图、临时工作区、命令 allowlist、环境变量脱敏、网络默认关闭、资源配额、进程超时、输出截断和依赖安装隔离。对于代码修改,优先在工作区生成 patch,再由验证流程应用;对于命令执行,明确禁止 rm、chmod、curl 管道执行、生产 CLI 等高风险模式。
中风险代码改动能否自动落地,取决于能不能自动验证。Agent 应在改动后运行格式化、类型检查、相关单测、构建或冒烟测试,并把失败作为停止或回滚信号。验证范围要和改动影响面匹配:改公共模块就不能只跑一个局部测试,改配置就要至少做启动或加载检查。
自主执行一定会有失败,所以要提前设计恢复路径。可以在每个阶段建立检查点,保留原始 diff、命令日志、测试结果、文件哈希和策略决策记录;失败时自动回滚未通过验证的 patch,或把工作区恢复到上一个稳定点。审计记录还可以用于复盘哪些策略过宽、哪些动作总是需要人工确认。
一般包括搜索、读取非敏感文件、查看 git 状态、运行项目已有的只读检查和局部测试。前提是命令在 allowlist 中,资源消耗可控,并且不会访问外部敏感服务。
不一定。低敏感目录的小范围源码改动可以在临时工作区自动生成 patch,并通过测试后保留;但涉及安全、支付、生产配置、数据库迁移、权限模型或大面积重构时应要求人工确认。
不要让模型文本直接决定权限。命令必须经过宿主策略检查,匹配 allowlist、路径范围和动作风险;用户输入、文件内容和网页内容只作为数据,不应拥有提升权限的能力。
可以有限重试,但要基于错误类型。格式化失败、单测失败可以定位后重试;权限拒绝、破坏性命令、策略拦截和连续同类失败应停止并请求人工处理,避免循环扩大损害。
看自动完成率、人工审批率、误拦截率、误放行率、回滚率、失败恢复时间、用户撤销率和高风险策略命中情况。过松会误改和越权,过紧会让 Agent 退化成频繁弹窗。