10.4 开发方法论

本节聚焦智能体编程的核心方法论,探讨如何将智能体融入日常开发工作流,实现从"写代码"到"编排 AI"的角色转变。

10.4.1 智能体开发闭环

在传统的开发流中,开发者亲自执行每一个循环。而在 Agentic Workflow 中,开发者上升为 循环的管理者

核心工作流:P-D-E-R 循环

我们将智能体开发工作流概括为 P-D-E-R 四步循环:

  • Plan - 规划任务目标

  • Decompose - 拆解任务为原子任务

  • Execute - 执行原子任务

  • Review - 审查结果并迭代

spinner

图 10-14:P-D-E-R 智能体开发循环

代码化描述

如果我们把这个新工作流写成伪代码,它看起来是这样的:

class AgenticWorkflow:
    """智能体时代的开发循环"""
    
    def develop_feature(self, requirement: str):
        # 1. Prepare: 准备上下文
        context = self.context_engineer.gather(requirement)
        
        # 2. Decompose: 拆解为原子任务
        plan = self.planner.break_down(requirement, context)
        
        # 3. Execute: 智能体执行
        for task in plan.tasks:
            while True:
                # 让智能体写代码
                result = self.agent.code(task)
                
                # 4. Review: 验收与反馈
                feedback = self.reviewer.evaluate(result)
                
                if feedback.passed:
                    break
                else:
                    # 带着反馈重试
                    self.agent.fix(feedback)
        
        # 集成与交付
        self.system.integrate()

规划先于执行

在现代智能体工具中,规划模式是提升开发质量的核心功能。进入规划模式后,智能体不会立即编写代码,而是:

  1. 调研代码库:搜索相关文件,理解现有结构

  2. 提出澄清问题:确认需求边界和约束条件

  3. 创建实施计划:生成可编辑的 Markdown 计划文档

  4. 等待批准:用户确认后才开始实现

spinner

图 10-15:规划优先的开发流程

时间分配的重构

这种工作流的变化导致了开发者时间分配的显著转移:

活动
传统开发
智能体开发(典型变化)

需求与架构

相对较少

占比上升,需要更精确地定义问题

编写代码

占比较高

占比下降,更多变成“审查与整合”

调试与测试

稳定投入

更依赖自动化与回归测试

审查与验收

相对较少

占比上升,为 AI 产出把关

10.4.2 任务分解与提示词设计

好的任务分解和精准的提示词是智能体编程的两大基础能力。本节将 DECOMPOSE 任务分解框架与 CLEAR 提示词框架结合,形成**"需求→分解→表达"**的完整方法论。

DECOMPOSE 框架

任务分解示例

原始需求:"实现一个用户认证模块"

spinner

图 10-16:用户认证模块任务分解思维导图

CLEAR 提示词框架

分解完任务后,需要用精准的提示词向智能体表达每个子任务。CLEAR 框架提供了结构化的表达方式:

示例应用

提示词实践技巧

提供充足上下文

分步骤执行复杂任务

与其试图让智能体"一步登天",不如引导它分而治之:

验证和测试一起请求

在请求代码生成时,同时要求生成验证逻辑:

10.4.3 规范驱动开发(Spec-Driven Development)

规范驱动开发(Spec-Driven Development,SDD)是软件开发的一种方法论,它强调先编写规范文档(Specification),再让智能体按规范实现。它特别适合智能体编程场景:规范文档既是给人的设计文档,也是给智能体的高精度指令。

为什么需要 Spec?

在传统开发中,开发者脑中有隐含的设计意图,边写代码边细化。但对智能体而言,没有写下来的东西等于不存在。规范文档解决了这个根本问题:

方式
问题

直接告诉智能体"实现一个缓存"

缺少约束,结果不可预测

口头描述 + 多轮对话修正

效率低,上下文积累不可控

先写 Spec,再交给智能体

一次性传达完整意图

Spec 文档的结构

一个有效的 Spec 通常包含以下要素:

示例:用 SDD 开发一个速率限制器

将这份 Spec 交给智能体后,它能清晰地理解:要做什么、不能违反什么、怎样算完成。相比模糊的口头描述,开发效率和产出质量都会大幅提升。

SDD 与 TDD 的关系

SDD 和 TDD 是互补而非替代关系:

spinner

图 10-17:Spec 与 TDD 的互补关系

推荐的工作流是:先写 Spec 定义边界,再写测试固化预期,最后让智能体实现。这样智能体既有"目的地"(Spec),又有"导航仪"(测试),产出质量最高。

10.4.4 测试驱动开发

智能体在有明确目标可迭代时表现最佳。测试允许智能体做出更改、评估结果、逐步改进直到成功。

TDD 工作流

spinner

图 10-18:TDD 驱动的智能体工作流

TDD 提示词示例

10.4.5 架构可视化优先

在编写任何复杂功能之前,先让智能体画图。

为什么先画图?

  1. 验证理解:确认智能体脑子里的架构和你想要的一致

  2. 文档化:生成的图表直接存入 docs/architecture/,成为永久文档

  3. 发现缺陷:在写代码之前,通过看图往往能一眼发现逻辑漏洞

架构图提示词示例

智能体输出

spinner

图 10-19:认证系统序列图示例

10.4.6 调试方法

当标准智能体交互难以解决 bug 时,Debug Mode 提供不同的方法:

适用场景

  • 可重现但无法弄清的 bug

  • 竞态条件和时序问题

  • 性能问题和内存泄漏

  • 曾经正常的回归问题

提示词示例


下一节: 工程化实践

Last updated