思想领袖
当 AI 加速软件交付时,人类拼命抓住不放

在软件开发的大部分历史中,人类一直是控制者。开发者进行更改,另一位人员审查,更有人批准,最终部署上线。
AI 正在加速整个体系,而我们仍在努力让人保持在其中。开发者现在可以在几秒钟内生成代码和更改。代理能够跨代码库、工具、基础设施及其他系统工作,所需的人为介入更少。
我们的直觉是把人重新加入流程。我们审查拉取请求,批准工具调用,检查更改,并确认部署,因为我们想确保 AI 没有做它不该做的事。我们正拼命抓住不放。
这种直觉是有道理的。人工审查为我们在软件迈向生产阶段时提供了保持控制的方式。但 AI 正以人类无法再作为治理规模单元的速度和量级运行。
AI 已经超越人工审查的速度
生成式 AI 在软件开发中的第一波浪潮主要致力于帮助开发者更快编写代码。仅此就改变了软件交付。代码增多意味着应用、更改、基础设施和数据库的变更在测试、安全、审查、部署和生产阶段的流转增多。
问题不一定在于 AI 产生的更改质量更差,而是它产生的更改更多、更快。如果要让另一个人审查所有这些新产出,最终数学上不可行。
我们已经看到迹象。Anthropic 最近报告称 Claude Code 用户约有 93% 的权限提示被批准。该公司发现,重复的提示会导致批准疲劳,随着批准次数的增加,人们的注意力会下降。Anthropic 现在使用一个 自动分类器 来评估操作并阻止潜在危险的行为,而不是让人批准所有内容。
想想这对人工监督意味着什么。如果有人在 93% 的情况下点击批准,再增加一次批准并不一定能提供更多控制。到某个阶段,人类本身也会成为工作流中的另一步骤。
我们可以利用 AI 创造更多软件,但无法通过建立同等规模的人工审查体系来应对。
AI 正从生成代码转向执行操作
编码助手让 AI 在开发中扮演角色。代理赋予 AI 参与软件开发生命周期(SDLC)更多环节的能力。代理可以接收目标,决定实现方式,使用工具,观察结果,并调整后续行动。
在软件工程中,这可能意味着修改文件、运行命令、与代码库交互、调用 API、测试代码或使用基础设施。人们也越来越乐于让代理自行工作。在对数百万次人机交互的研究中,Anthropic 发现,经验丰富的 Claude Code 用户在超过 40% 的会话中使用全自动批准,约为新用户的两倍。
这并不意味着自主代理今天已经在各处运行生产环境。事实并非如此。但软件开发让我们提前看到这一趋势的走向。
如今,AI 产生的变更更多,人工审查开始承受压力。接下来,AI 将参与 SDLC 的更多环节。最终,代理将在几乎无需人工介入的情况下创建、验证、部署、观察并修复变更。
在每一步,我们都在剔除原本由人提供控制的环节。问题从 AI 能否完成工作转变为 AI 应该被允许自行完成哪些工作。
权限并非授权
代理需要访问权限才能完成有价值的工作。帮助部署软件的代理可能需要访问代码库、CI/CD 系统、云环境或数据库。剥夺这些访问权限,也就剥夺了代理大部分的价值。
但访问权限与授权并不相同。赋予代理访问系统的权限并不意味着它应拥有在该系统内执行所有操作的授权。
传统的访问控制可以告诉我们代理是否有权限访问某项资源。我们还需要一种方法来判断它想执行的具体操作是否应当发生。当决策系统对任务的解释与指派者不同,遇到障碍而选择其他路径,或以未预料的方式使用合法工具时,这一点尤为重要。
OWASP 将此类问题的一个版本描述为 过度代理。它指出过度的功能、权限和自主性会导致有害行为,并建议对高影响力的操作进行独立批准。
NVIDIA 正在从架构层面应对同样的问题。其 开放代理安全平台 将策略执行置于代理之外,并提出一个简单观点:不能期望代理完全自我治理其行为。
这应该影响我们构建 AI 软件开发生命周期(SDLC)的方式。代理可能需要权限才能访问数据库、基础设施环境或部署系统。但这并不意味着代理应自行决定其想进行的每一次更改都是安全的。
AI 基于概率做出决策。我们不应让所有这些决策自动转化为对关键系统的操作。
人类在环并非唯一答案
显而易见的做法是让人在关键 AI 行动前进行把关。对于某些决策,这正是我们应当采取的方式。错误在于把“人类在环”当作所有决策的唯一答案。
如果代理的每一次操作都需要有人审查并点击批准,我们就重新制造了 AI 本应消除的瓶颈。更糟的是,过多的批准会使监督变成习惯。整天点击批准的人并不一定在行使判断。
我们需要更有针对性地决定决策发生的地点。AI 可以在我们赋予的任务范围内做出决策。政策可以处理规则已明确的决策。人类则负责例外情况以及真正需要判断的决策。
符合既定政策的低风险变更不应需要有人盯着。违反政策的变更应自动停止。具有重要业务、安全或运营影响的例外可能需要由人来决定。
这与单纯在每个环节中放入人类的模式大相径庭。目标并非要淘汰人类,而是停止让人类注意力成为每个行动的前提,使受治理的路径成为最简路径。
将控制置于行动发生之处
企业不会统一使用单一 AI 模型或单一代理。开发者会使用不同的副驾驶工具,团队会尝试不同的模型。AI 将出现在开发者工具、安全产品、数据平台以及内部应用中。
试图为每个 AI 工具构建不同的治理流程是不可扩展的。控制必须更贴近 AI 想要执行的行动。
如果 AI 生成的变更进入部署流水线,它应遵循与人工生成变更相同的政策。若代理想要修改基础设施、数据或生产数据库,围绕该系统的控制不应因行为主体的变化而消失。
变更的来源并不决定风险,风险在于变更本身。开发者、编码助手、自动化流程或自主代理可能走不同路径实现同一操作,但该操作在产生后果之前仍需遵循相同的政策。
这也使技术能够演进,而无需公司每次都重建治理。模型会更迭,代理会更强大,关键系统的控制仍可保持一致。
NIST 采用类似的基于风险的方法,在其 AI 风险管理框架 中,将治理视为必须贯穿整个 AI 生命周期的活动,而非仅在末端进行一次批准。对于软件交付而言,这意味着将控制嵌入 AI 已经走的路径,而不是在其上额外加装手动流程。
当人类离开时,证据不能随之消失
人类审查模型中还隐藏着另一个问题。当你将人从流程中移除时,不仅失去了审查本身,还可能失去能够证明审查已发生的那个人。
这对拥有安全、合规和审计要求的公司来说是个严重问题。他们仍需了解哪些内容被更改、由谁或何物发起、适用了哪项政策、是否通过、谁批准了例外、更改在何处执行以及随后发生了什么。
你不能将变更自动化而让证据仍需手动记录。在以人为主的流程中,团队可以事后从工单、批准记录、流水线日志、截图和对话中重建证据。随着变更量的增加,这种做法变得更加困难;当机器持续创建并执行变更时,则几乎不可能实现。
证据需要成为交付过程的一部分。政策决策、批准、例外、部署以及结果应在工作进行时生成记录。审计证据因此成为软件交付的副产品,而不是事后由团队收集的材料。
这为 AI 驱动的 SDLC 中的治理留下了两项不同的任务:在行动发生前,判断其是否应当执行;在行动发生后,证明实际发生了什么。
人类不会消失,我们的职责在变化
人们自然会倾向于通过人参与的次数来衡量控制力度。审查越多感觉越安全,批准越多也感觉更安全,让人类参与每个环节同样让人觉得更安全。
AI 将检验这一假设。如果 AI 持续提升我们能够创建的软件量,人类将无法审查每一次变更、批准每一个动作、监控每次部署并事后重建每个决策。试图做到这些要么会减缓 AI 的发展,要么会把人类监督沦为形式上的盖章。
AI 软件开发生命周期需要不同的分工。AI 可以承担更多工作,而政策负责可重复的决策,人在真正需要判断时介入。证据应在整个过程中自动生成。
我们将为 AI 提供更多访问权限,因为这能让它变得有用。我们将为代理赋予更多自主权,因为这能让我们更好地利用它们。挑战在于确保更大的访问和自主权不会悄然演变为无限的权力。
人类不必更加紧抓不放。目标并非减少控制,而是建立一种不依赖我们亲自掌握每个决策的控制模型。我们需要构建能够让我们放松握力而不失控的控制机制。












