在人工智能快速发展的今天,编程领域正经历着一场革命。传统的编码方式正在被AI辅助的“agentic engineering”(代理工程)所重塑。本文基于Addy Osmani、Zed团队和Simon Willison等专家的见解,探讨AI Coding的未来。
什么是Agentic Engineering?
Agentic Engineering代表了一种新的编程范式,它将人类工程师的匠心与AI代理的能力相结合。与“vibe coding”(感觉编码)不同,后者强调快速原型、不审查代码,agentic engineering则强调纪律和质量。
如Addy Osmani在他的博客中所言,agentic engineering意味着人类作为架构师和决策者,AI代理负责实现细节。人类写Spec、审查代码、运行测试,确保最终交付物的质量。
Vibe Coding vs. Agentic Engineering
Vibe Coding适合快速原型和个人脚本:你提示AI,接受输出,不阅读差异。如果出错,再次提示。但这种方法在生产环境中容易失败,因为代码质量无法保证。
Agentic Engineering则要求:
- 规划先行:在提示前写设计文档,分解任务。
- 严格审查:像对待人类同事的PR一样审查AI生成的代码。
- 测试驱动:使用测试套件让AI迭代直到通过。
- 责任所有:人类负责代码库的维护和监控。
Zed团队在他们的页面中强调,agentic engineering结合了传统开发的确定性与AI的随机性创造力。质量是工程师的责任,AI放大专业知识。
实践中的Agentic Engineering
Simon Willison的指南提供了具体模式:
- 代码现在便宜了:AI让编写代码成本降低,但理解和维护更重要。
- 囤积技能:保留你擅长的领域,避免过度依赖AI。
- 测试优先:使用红绿TDD,让AI在测试驱动下工作。
- 理解代码:通过线性演练和交互式解释理解AI生成的代码。
这些正逐渐成为共识,难点主要是能不能真正融入大部分普通工程师的日常。
Mitchell Hashimoto在他的AI采用之旅中分享了渐进采用AI的步骤,从放弃聊天机器人转向代理,到构建harness:
- 放弃聊天机器人:使用能读取文件、执行程序的代理,而非聊天界面。
- 重现自己的工作:强制用代理重现手动工作,学习分解任务、规划与执行分离、验证结果。
- 每日结束代理:启动代理处理研究、想法探索或问题分类。
- 外包确定任务:让代理处理易于成功的任务,自己专注于其他工作。
- 构建harness:更新AGENTS.md或添加工具,防止代理犯错。
- 始终运行代理:寻找可委托的任务,保持代理运行。
这些步骤强调渐进采用,从怀疑到效率提升。
技能差距与挑战
Agentic Engineering不成比例地受益于资深工程师。他们有深厚的系统设计、安全和性能知识,能有效指导AI。但新手若过早依赖AI,可能导致技能退化:能生成代码,却不懂调试。
Addy Osmani警告,这不是让编码更容易,而是换了一种难度:从打字到审查,从实现到编排。基础知识更重要。
抽象的新性质
Martin Fowler在他的文章中指出,LLMs带来了编程抽象的新性质。从汇编到高级语言提高了抽象水平,但LLMs是另一个根本变化:从确定性编程到非确定性。
传统编程中,代码编译后行为一致。但LLMs通过提示生成代码,每次可能不同,无法像存储提示在git中那样保证一致性。这不仅提高了抽象水平,还引入了非确定性,需要工程师学习与之相处。
这强化了agentic engineering的重要性:人类必须监督AI代理,确保质量和一致性。
Harness Engineering:构建AI代理的框架
OpenAI的Harness Engineering展示了如何构建“harness”来支持AI代理完全生成代码,无需人类手动编写。团队使用Codex构建了一个百万行代码的产品,强调工程师角色从编码转向设计环境、指定意图和构建反馈循环。
关键组件包括:
- 应用可读性:使应用对AI可读,通过集成Chrome DevTools和可观察性工具,让AI直接驱动和验证应用。
- 知识库作为记录系统:将文档、架构和计划存储在仓库中,作为AI的知识来源。
- 代理可读性:优化代码库对AI的可读性,优先选择稳定的依赖和抽象。
- 强制架构和品味:通过自定义linter和结构测试强制约束,如分层架构和边界解析。
- 自主性增加:AI代理能端到端处理功能,从验证到合并。
- 熵和垃圾收集:定期清理AI生成的低质量代码,维护一致性。
Martin Fowler在回应文章中指出,harness可能成为未来服务模板,约束运行时以提高AI自主性,可能导致技术栈和拓扑的收敛。前AI和后AI应用维护的世界将不同,harness适用于从头构建的项目。
Harness强调,软件工程的纪律从代码转向脚手架、抽象和反馈循环。
“harness engineering.” It is the idea that anytime you find an agent makes a mistake, you take the time to engineer a solution such that the agent never makes that mistake again.
AI Coding的未来
未来,AI代理将更强大,agentic engineering将成为默认工作流。我们需要:
- 诚实术语:区分vibe coding和agentic engineering。
- 评估框架:系统测量AI辅助工作流的可靠性。
- 投资基础:培训程序适应新范式,强调架构思维。
Zed团队通过直播分享知识,Simon Willison提供实用指南,这表明社区正在共同探索。
AI Coding的未来不是AI取代人类,而是人类与AI协作,创造更高质量的软件。工程师将从“编码者”转变为“AI编排者”,专注于高层次设计和创新。
正如Addy Osmani所说:“AI Coding不取代软件工程的工艺——它提高了门槛。”那些能清晰思考“为什么”和“如何”的人,将引领未来。
参考文章
- Agentic Engineering by Addy Osmani
- Agentic Engineering by Zed
- Agentic Engineering Patterns by Simon Willison
- LLMs bring new nature of abstraction by Martin Fowler
- Harness engineering: leveraging Codex in an agent-first world by OpenAI
- Harness Engineering by Martin Fowler
- My AI Adoption Journey by Mitchell Hashimoto
注:本文由AI撰写,人类审校。