AI时代,沟通能力强的程序员更有价值。规范驱动开发成为关键,它通过结构化文档捕捉需求,指导AI Agent。Runbooks将AI编码从单人变为多人协作,促进知识共享和决策追踪。规范是精炼的上下文,确保AI有效工作且不迷失方向。
译自:Spec-Driven Development: The Key to Scalable AI Agents
作者:Ankit Jain
“未来,沟通能力最强的人将成为最有价值的程序员。一种新的稀缺技能是编写能够充分捕捉你的意图和价值的规范,” OpenAI 的 Sean Grove 最近在 AI Engineer 会议 上表示。
Grove 说,规范,而不是提示或代码,正在成为编程的基本单元,而编写规范是一种新的超能力。
随着 AI 使生成代码比以往任何时候都更容易,两件事变得清晰起来。首先,用 AI 生成更多代码并不能消除软件工程的复杂性;它只是将其抽象到调试、测试和部署管道中。其次,编写代码从来都不是瓶颈。
编写代码不是瓶颈
瓶颈在于知道要构建什么,收集需求,知道为什么要构建它,以及最终知道它是否已正确构建并实现其意图。Grove 指出,随着 AI 模型变得越来越先进,工程组织将会感受到这种压力。
在 亚马逊的 AI IDE 公告 和规范驱动开发的概念中,跨团队的设计对齐、解决冲突的需求、消除技术债务、为代码审查带来严谨性以及在资深工程师离职时保留机构知识被列为使软件构建变得困难的根本挑战。
决定 Agent 成功或失败的主要因素是它所获得的上下文的质量。而且,如果我们希望 Agent 不仅在从头开始氛围编程酷炫的应用程序方面取得成功,而且在混乱的、棕地企业代码库中也能取得成功,那么为 Agent 提供正确的上下文(或上下文工程)是使其实现的关键。
但获取上下文很难。即使大型语言模型(LLM)的上下文窗口正在增加,我们已经知道向 LLM 提供更大的上下文实际上会降低质量。秘诀在于所提供上下文的质量。
规范是“精炼的上下文”,它提供了足够的信息,使 LLM 能够有效工作而不会不知所措。
什么是规范驱动开发?
规范驱动开发是在编写代码(或要求 AI 工具编写代码)之前编写规范的实践。规范驱动开发不是仅仅尝试你的运气与提示,无论提示多么精心制作,然后提示进行修复,而是从清晰和结构化的文档开始,这些文档捕获需求、意图和约束。
在 AI 编码时代,规范充当 AI Agent 的指南,它们可以参考规范、针对规范验证其工作并使用规范来保持方向。它就像一颗北极星,使 Agent 能够承担更大、更复杂的任务而不会迷失意图。
规范驱动开发用一种结构化的、持久的方式来表达程序员的目标,从而取代了临时、提示驱动的氛围编程的混乱。它允许开发人员更具体地了解特定细节,并允许 Agent 提前沟通其计划。
规范变成了一种版本控制的、人类可读的超级提示。
规范驱动开发如何工作?
如果你只是提示 AI“实现用户权限”,它可能会创建一个标准的基于角色的访问控制 (RBAC) 系统,其中包含管理员和用户角色。从表面上看,代码可能看起来很完美并且可以投入生产。但它不会停下来询问你是否需要细粒度的权限、临时访问窗口或连接到现有身份提供程序的挂钩。生成的代码看起来专业且完整,掩盖了它解决了错误问题的事实。
规范驱动的开发要求工程师放慢速度,清楚地思考他们正在构建的内容,并以清晰和结构化的方式沟通以下内容:
- 特定的输入/输出格式和数据类型。
- 显式的业务规则和边缘情况。
- 集成约束和现有系统依赖项。
- 性能要求和预期规模。
- 错误处理和验证规则。
- 安全性和合规性要求。
从那里,Agent 创建一个任务列表,列出根据规范构建代码需要做的事情。工程师仍然可以通过提示与 Agent 交互并引导它们。
从开发者-Agent 协作到多人编码
使用 AI Agent 构建软件不是一项单人运动,尤其是在较大的工程组织中。现代项目通常跨越多个存储库、微服务、提示和规范。想象一下在你的规范中添加一个“共享”按钮,以在你的团队中共享专业知识并委派执行。
这就是 Runbooks 的用武之地。我们一直在开发的一个概念是将 AI 辅助编码从单人活动转变为多人活动。Runbooks 为团队提供了一个共享空间,以协作处理提示、对齐执行工作流程并维护清晰的决策审计跟踪。
将 Runbooks 视为产品规范和代码之间的缺失链接。Runbook 不仅仅是文档,它还是一个活生生的知识库,其他人可以拾起、扩展和改编。你可以在别人的 Runbook 之上构建,在存储库或代码路径之间传输上下文,起草你自己的规范并获得反馈,或者将利益相关者和编码 Agent 聚集在一个结构化的会话中。