在AI辅助编码日益普及的今天,如何更高效地利用大语言模型(LLM)提升开发效率成为关键。本文深入探讨了一种基于“计划与执行分离”的AI编码工作流,并进一步探索了并行智能体的应用,旨在为开发者提供一种结构化、可控且高效的AI辅助编码实践方案。

核心理念:计划与执行分离

传统的AI编码模式往往将思考和编码混合在一起,这容易导致LLM在面对复杂任务时表现不佳。文章作者观察到,当LLM需要同时进行规划和编码时,往往难以产生令人满意的结果。计划与执行分离的核心理念是将一个复杂任务分解为两个独立的阶段:首先,由LLM进行详细的规划,明确任务的具体步骤和目标;然后,再由LLM严格按照计划执行编码,完成具体的实现。这种模式避免了LLM在过程中进行过多的“思考”,而是专注于完成明确定义的任务,从而显著提高编码质量和效率。就像使用Cursor的作者发现,更充分的计划能带来更好的结果。

案例: 想象一下,你需要AI为你开发一个用户身份验证模块。如果直接让AI“开发用户身份验证模块”,它可能会做出很多假设,最终的代码可能并不符合你的需求。但如果采用“计划与执行分离”的模式,你可以先让AI详细规划:1) 需要哪些表单字段?2) 如何验证用户输入?3) 密码如何加密存储?4) 验证成功或失败后如何处理? 等等。在得到详细的计划后,再让AI按照计划执行编码,这样就能确保最终的代码符合你的预期。

Cursor定制化:打造专属AI编码环境

Cursor作为一款集成了AI功能的代码编辑器,其自定义模式功能为实现“计划与执行分离”提供了强大的支持。通过Cursor的自定义模式,开发者可以针对规划和执行阶段分别配置不同的LLM,并限制其功能,从而打造专属的AI编码环境。作者利用Cursor创建了“Planner”和“Executor”两种模式,分别负责任务规划和代码执行。

  • Planner模式: 使用擅长推理和理解上下文的LLM(例如 Gemini 2.5 Pro Max)负责任务规划。在该模式下,编辑工具被禁用,强制LLM专注于生成详细的计划。作者设置的prompt,严格防止模型过早生成代码,并采取循序渐进的方式,通过提问来完善需求,并在最终确定计划前需要用户明确批准。
  • Executor模式: 使用擅长代码生成和调试的LLM(例如 Claude Sonnet 4)负责代码执行。在该模式下,所有工具都被启用,允许LLM读取文件、编写代码、运行测试和提交更改。Claude Sonnet 4在解决测试失败时,会尝试创建临时.js文件来隔离测试特定功能,这增加了其自主解决问题的能力。

数据支持: 通过Cursor的定制化,开发者可以将LLM的能力发挥到极致。例如,Gemini 2.5 Pro Max拥有高达100万token的上下文窗口,这意味着可以将整个项目文件夹放入对话中,让LLM理解完整的代码库上下文,从而生成更准确的计划。而Claude Sonnet 4在速度和工具使用方面的优势,则可以确保代码执行的高效性和可靠性。

精细化Prompt:提升AI编码质量的关键

Prompt是与LLM沟通的桥梁,精细化的Prompt能够引导LLM产生更符合预期的结果。作者在实践中不断迭代Prompt,总结出以下几个关键要素:

  1. 明确的角色设定:Prompt中明确LLM的角色,例如“你是一位资深的软件工程师”,这有助于引导LLM以专业的视角思考和解决问题。
  2. 清晰的任务描述: 详细描述需要完成的任务,包括输入、输出、约束条件等,确保LLM对任务有清晰的理解。
  3. 明确的指令: 使用简洁明了的指令,引导LLM按照指定的步骤执行任务。
  4. 反馈机制: 建立反馈机制,允许开发者在LLM生成的结果不符合预期时进行干预和调整,从而不断优化Prompt的效果。

案例: 在Planner模式的Prompt中,作者通过明确的指令,要求LLM逐一提出问题,逐步完善需求,并要求用户在最终确定计划前进行确认。这避免了LLM在信息不完整的情况下做出假设,从而提高了计划的准确性。

Plan.md:结构化任务管理的基石

Plan.md文件是“计划与执行分离”工作流中的核心组成部分,它以结构化的方式记录了任务的详细计划,为Executor模式提供了清晰的执行指导。Plan.md文件通常包含以下内容:

  • 任务列表: 将整个任务分解为一系列小的、可执行的任务,每个任务都有明确的编号和描述。
  • 复选框: 每个任务都有一个复选框,用于跟踪任务的完成情况。
  • 规则与技巧: 记录在执行过程中遇到的问题和解决方案,以便后续任务参考。
  • 明确的边界: 每个任务都应该有清晰的边界,避免范围蔓延。

Plan.md的结构化设计,使得Executor模式能够自动识别未完成的任务,并按照计划逐步执行。同时,复选框和规则与技巧的记录,也为开发者提供了清晰的任务进度和问题追踪。

案例: 作者展示了一个Plan.md文件的例子,其中包含了编号、复选框、任务描述以及规则与技巧等信息。通过这个文件,Executor模式能够清晰地了解每个任务的具体要求,并按照计划逐步执行。例如“规则与提示”部分,记录了executor在完成任务过程中积累的经验,使得后续任务执行更加顺畅。

Executor模式:自动化代码执行的引擎

Executor模式是“计划与执行分离”工作流中的核心执行环节。在该模式下,LLM(例如 Claude Sonnet 4)会自动读取Plan.md文件,识别未完成的任务,并按照计划逐步执行。Executor模式的核心功能包括:

  • 任务识别: 自动识别Plan.md文件中未完成的任务。
  • 代码生成: 根据任务描述生成相应的代码。
  • 代码测试: 运行测试用例,验证代码的正确性。
  • 代码提交: 将完成的代码提交到代码仓库,并添加清晰的提交信息。
  • 状态更新: 在Plan.md文件中更新任务的完成状态。

Executor模式的自动化执行,极大地提高了编码效率,同时也减少了人工干预的错误风险。此外,每次任务完成后都会进行代码提交,这有助于保持清晰的代码历史,方便后续的回滚和审查。

数据支持: 作者提到,通过Executor模式,AI可以独立完成大量的编码工作,包括实现新功能、编写测试用例、重构代码等。开发者只需要在遇到复杂问题时进行干预,例如调试难以发现的错误、进行决策判断等。作者在过去几周使用这种工作流提交了数千行代码的PR,AI承担了大部分工作。

并行智能体:突破效率瓶颈

为了进一步提高编码效率,作者探索了并行智能体的应用。并行智能体是指同时运行多个LLM,并行处理不同的任务。通过将复杂的任务分解为多个子任务,并分配给不同的LLM并行处理,可以显著缩短整体的编码时间。

实现方式: 作者利用Git Worktree功能,为每个并行智能体创建独立的工作区,每个智能体负责处理Plan.md文件中的不同任务。由于Cursor的编辑工具只能在当前工作区生效,因此作者通过文本编辑MCP服务器,赋予智能体修改其工作区文件的能力。

优势: 并行智能体可以充分利用计算资源,提高编码效率。例如,在开发一个大型系统时,可以将不同的模块分配给不同的并行智能体并行开发,从而显著缩短开发周期。

案例: 作者描述了一个使用并行智能体的场景:在开发复杂功能时,可以让人工开发者专注于核心功能的开发,而将一些简单的任务(例如修复bug、编写文档)分配给并行智能体并行处理。这样可以充分利用开发资源,提高整体的开发效率。

实际应用与未来展望

作者分享了其使用这种AI编码工作流的实践经验,强调了计划与执行分离、精细化Prompt以及并行智能体在提高编码效率和代码质量方面的重要作用。通过这种工作流,AI可以承担大量的编码工作,从而解放开发者的生产力,让他们能够专注于更具创造性和挑战性的任务。

未来展望: 随着LLM技术的不断发展,AI在编码领域的应用将会越来越广泛。未来,我们可以期待更加智能的AI编码工具,它们能够更好地理解开发者的意图,生成更高质量的代码,并与开发者进行更有效的协作。

结语:

本文介绍的AI编码工作流,从“计划与执行分离”到“并行智能体”,代表了AI辅助编码的发展方向。通过掌握这些技术,开发者可以更有效地利用AI的力量,提高编码效率和代码质量,并在未来的软件开发领域中保持领先地位。正如作者在GitHub上分享的prompt,这种工作流需要不断进化,随着新的模型和工具出现,我们将不断找到与AI伙伴更有效协作的方式。如果你找到了改进方法,或者利用它们构建了一些有趣的东西,欢迎分享你的经验。