吴恩达详解编程智能体的规划执行部署监控流程

编程智能体已经成为当前AI工程领域的核心技能之一,这类工具不仅可以辅助编写代码,还能完成数据分析、系统运维等非代码类任务,帮助开发者大幅提升工作效率。
随着技术快速迭代,编程智能体的发展速度远超其他顶层AI工程技能,无论是商业化的专业工具,还是开源的智能体项目,都在底层运行环境和模型能力上不断突破,因此持续实践、实验和学习才能跟上最新的使用方法。
经过大量顶尖AI工程师的访谈和团队实践经验,我们总结出了一套通用的编程智能体开发工作流,分为三个核心阶段:规划、执行、部署与监控。
规划阶段:首先需要完成头脑风暴、相关研究以及现有代码库的梳理,如果项目已有成熟代码的话。接下来要撰写完整的规格说明,涵盖需求细节、技术设计方案和整体架构,同时生成可执行的项目计划。在这一步中,开发者还需要主动审阅这份计划,对关键假设提出质疑,检查是否存在过度工程或者安全漏洞等问题。
执行阶段:在这个阶段需要完成软件的构建、测试和验证,核心是平衡智能体的自主工作权限和人工监督的程度。一方面可以根据任务需求设置合适的智能体自主级别,让其独立完成部分开发工作;另一方面需要通过自动化或人工检查的方式,验证智能体输出的内容是否符合预期。
部署与监控阶段:完成开发后,可以通过CI/CD流水线或者额外的人工审核环节完成部署。之后可以借助编程智能体查看运行日志,定位系统中暴露的问题,并提出对应的改进方案并执行更新。
这套工作流和传统软件开发流程有相似之处,但现在开发者的重心不再是直接编写代码,而是转向确定开发目标、设计架构、撰写规格说明以及验证最终输出。每个阶段的耗时会根据项目类型有很大差异,比如从零开始的新项目可能只需要用简短的提示词就能完成粗略的规格说明,而涉及已有系统且用户基数较大的改造项目,则需要投入更多精力来撰写和验证规格说明。同时这个工作流是高度迭代的,熟练的开发者会根据后续步骤的反馈回到之前的阶段调整工作,比如当验证发现问题时,可以引导智能体重构代码修复错误,或者当监控发现系统问题时,让智能体更新系统并重新部署。
要有效使用编程智能体,需要掌握五个核心技能:
引导工作流:开发者需要清楚在每个阶段如何推进项目,权衡开发速度、成本、技术风险和人工投入的比例,决定前期调研和规划的深度,确定哪些关键环节需要人工主导,选择合适的技术架构,确定规格说明的细节程度,以及如何将项目拆解为可验证的小步骤,同时合理安排人和智能体的分工。
启用智能体自主性:在应用智能体到各个开发环节时,需要选择合适的自主级别,比如是全程观察智能体的交互过程,还是将更大块的任务委派给它独立完成,或者设定明确目标让智能体循环执行直到达成效果。同时需要谨慎管理智能体的上下文,随着开发进入不同阶段,要确保关键的项目收获、用户反馈和中途变化的假设都被记录下来,供后续步骤使用。如果任务规模较大,还可以协调多个智能体并行处理拆分后的子任务,由人类或更高层级的智能体统一调度,同时合理分配人类注意力在多个智能体会话之间。此外还要掌握安全运行智能体的方法,设置合理的权限和动作审核机制,在限制数据泄露、文件损坏等风险的同时,保障开发效率。
审阅工作成果:编程智能体的输出存在不确定性,无法提前预知其提出的方案是否合理,也无法避免出现bug,因此审阅和验证输出是确保项目符合预期的关键步骤。开发者需要设计匹配任务的测试和验证方案,同时应用行为验证和功能验证两种方式。还可以测试完整的用户流程,让智能体提供截图作为任务完成情况的证据。对于定性的行为评估,可以使用评测集,结合大语言模型作为评审工具来完成。此外需要决定哪些测试需要自动化,部分工作流可以将所有测试和验证完全自动化,让智能体自行检查工作并确认任务完成,但开发者需要评估这些自动化测试是否符合项目目标,在不符合时及时调整。开发者还可以使用智能体辅助代码审查,运行AI赋能的安全和架构审计,当AI审查不够充分时,再引入人工审查代码行为,极少数情况下甚至需要人工直接审查代码,同时探索进一步自动化审查流程的方法。最后还要验证部署效果,借助智能体完成监控和事件管理的运维工作。
定制智能体及其环境:开发者需要更新智能体本身和其运行环境的能力,让智能体能够高效获取所需的上下文信息、访问必要的工具,从而正确且高效地完成开发任务。需要掌握如何集成智能体技能、插件和相关服务,当新的模型或工具出现后,及时裁剪不再必要的旧技能。可以使用自动化钩子完成开发流程中的重复环节,比如触发自动化代码审查或CI/CD流水线。同时需要维护智能体的工作环境,补充代码库信息、关键架构假设、代码风格规范和数据访问模式等内容。开发者还要能够在多个会话和并行智能体之间保留状态,随着时间积累智能体的学习成果,比如通过事后复盘总结哪些方案有效、哪些需要调整。此外还需要建立统一的代码库约定和结构,让智能体更容易浏览代码,定期清理智能体生成的技术债务。如果是团队开发,还需要考虑如何在不同开发者的智能体之间协调上下文信息。
编程智能体基础:为了在整个开发过程中做出合理的决策,开发者需要深入理解编程智能体的工作原理,包括它们如何进行代码库的搜索和检索、如何管理上下文窗口、不同操作如何影响上下文、智能体和子智能体之间的交互方式,以及智能体如何通过在大语言模型外围包装运行环境来完成开发任务。这种理解可以让开发者不再将智能体视为黑箱,帮助识别常见的失败模式,比如将简单方案过度工程化、因为缺少明确的验证流程而导致开发不够严谨、未达到目标就提前终止任务,或者智能体的操作可能损坏文件或生产数据。同时这种理解也能帮助开发者推断智能体的当前状态,通过提供正确的指令和上下文来引导智能体完成任务,在监控开发过程时,更容易发现智能体偏离轨道的情况并及时介入。
社交媒体上对编程智能体的使用方式往往存在过度简化的描述,比如宣传让智能体自主运行数小时、消耗大量token就能完成复杂任务,但实际上超长时程的自主任务的实际效用,尤其是结合成本来看,往往被夸大了。真正高效的编程智能体使用方式是一个复杂且高度迭代的过程,能够在关键节点进行高水平的人工干预,往往能带来更好的开发效果。
掌握编程智能体的使用方法能够让开发者成为更高效的构建者,同时也能更好地引导整体的开发流程,后续还会对这一主题进行更深入的展开。祝愿各位开发者持续构建出优秀的项目。

