Agentic AI Patterns:AI 辅助开发的核心工程实践

2 阅读5分钟

当 AI 能生成代码时,工程实践不仅没有过时,反而变得更加重要。


引言

AI 辅助开发正在经历一场深刻变革。Paul Duvall(CI/CD 经典著作《Continuous Integration》作者)在最近的 AI DevOps Podcast 中指出:"工程实践在 AI 生成代码时变得更加重要。"

这看似矛盾的观点背后有着深刻的逻辑:AI 生成的代码量呈指数级增长,传统的人工审查模式已经无法适应。工程师需要新的方法来保证质量,这推动了 Agentic AI Patterns 的兴起。


一、为什么工程实践反而更重要?

1.1 现状:代码生成速度远超人类审查能力

传统模式:工程师写代码 → 代码审查 → 合并
AI 模式:   AI 生成代码 → 自动化验证 → 合并

当 AI 能在一分钟内生成过去需要数小时才能完成的代码时,传统的代码审查变成了瓶颈。

1.2 核心矛盾

维度传统开发AI 辅助开发
代码产出人力驱动AI 驱动
变更频率极高
审查覆盖100% 可行不可行
质量保障人工审查自动化验证

二、Agentic AI Patterns 核心模式

2.1 规范驱动开发(Specification-Driven Development)

核心理念:在让 AI 行动之前,先明确"做什么"和"做到什么程度"。

# 示例:AWS IAM 策略生成规范
spec:
  intent: "创建最小权限的 S3 访问策略"
  constraints:
    - 只允许读取特定桶
    - 不能删除对象
    - 过期时间: 24小时
  acceptance:
    - 通过 IAM 模拟器验证
    - 无过度权限

实践要点

  1. 角色定义:明确 AI 的身份和职责
  2. 上下文提供:给出足够的背景信息
  3. 约束声明:明确禁止的操作
  4. 验收标准:定义"什么是对的结果"

"如果你没有完全描述意图,就会得到随机结果。" —— Paul Duvall

2.2 原子分解 + 并行代理(Atomic Decomposition)

核心理念:将复杂任务拆分为独立的小任务,用多个代理并行处理。

# 原子任务示例
tasks = [
    "分析现有数据库 schema",
    "设计 API 端点",
    "实现用户认证",
    "编写单元测试"
]

# 并行执行(每个任务一个代理)
results = await parallel_execute(agents, tasks)

优势

优势说明
降低复杂度每个任务独立处理
加速执行任务并行而非串行
便于验证小任务更容易测试
错误隔离单点故障不影响整体

2.3 编码规则(Codified Rules)

核心理念:将团队的编码规范、架构约束固化为 AI 可执行的规则。

# .ai-rules.yaml 示例
rules:
  - id: "no-printf-in-prod"
    description: "生产代码禁用 console.log"
    action: "reject"
    
  - id: "max-function-length"
    limit: 50
    action: "warn"
    
  - id: "require-tests"
    pattern: "src/**/*.ts"
    require: "tests/**/*.spec.ts"
    action: "reject"

实现方式

  1. Agent Guard Rails:代理执行前的规则检查
  2. Self-Review:代理自我审查输出
  3. Validation Pipeline:自动化验证流程

2.4 可观测开发(Observable Development)

核心理念:不只是开发时验证,还要将反馈延伸到生产环境。

开发阶段 ←→ 测试阶段 ←→ 生产阶段
    │            │            │
    └────────────┴────────────┘
              │
         持续反馈循环

关键实践

  • 生产环境遥测数据反馈到开发流程
  • AI 分析生产日志识别模式
  • 提前发现问题(shift-left + shift-right)

"质量越来越通过自动化实现,而不是人工检查。" —— Paul Duvall


三、实践中的具体方法

3.1 测试驱动的 AI 工作流

Duvall 描述了他如何将 红-绿-重构 模式应用于 AI 开发:

1. Red(失败): 定义验收标准,AI 生成初始代码
2. Green(通过): AI 迭代直到满足标准
3. Refactor: AI 重构优化代码

这与 TDD 的核心理念一致,只是将"人工写测试"变成了"规范定义测试"。

3.2 架构约束前置

System Initiative 的 Paul Stack 提出了更激进的做法:

不接受 Pull Request
    ↓
必须通过 GitHub Issue 提出设计
    ↓
交互式评审 + 规范驱动开发
    ↓
代理按规范执行

理由:与其让 AI 生成代码后再审查,不如在生成前就确保意图正确。

3.3 "Remixing" 模式

Gergely Orosz(Pragmatic Engineer)描述了一种新模式:

贡献者提交 PR → 代理重建 → 符合项目标准

代理不是简单合并 PR,而是重新生成符合项目规范的代码。这确保了代码风格、架构的一致性。


四、关键模式对比

模式核心思想适用场景
规范驱动先定义"做什么"复杂任务、多人协作
原子分解拆分 + 并行大型项目、需要加速
编码规则自动化约束质量把关、风格统一
可观测开发全链路反馈生产系统、持续改进

五、实施建议

5.1 从哪里开始?

  1. 定义清晰的规范:不要用模糊的指令驱动 AI
  2. 建立编码规则:将团队规范转换为 AI 可执行的规则
  3. 自动化验证:用测试替代人工审查

5.2 常见误区

误区正确做法
给 AI 模糊的指令提供详细的规范和约束
试图审查每一行代码依赖自动化验证
只关注开发阶段延伸到测试和生产
把 AI 当作全能工具明确角色和边界

5.3 团队角色变化

过去:开发者 → 写代码 → 审查代码
现在:开发者 → 定义规范 → 验证结果 → 迭代优化

工程师的职责从"写代码"转变为"确保质量"——这是一个更高层次的角色。


六、工具与资源

推荐工具

工具用途
Claude Code Plan Mode执行前审查意图
GitHub Actions自动化验证
SWAMP基础设施自动化验证

参考资源


总结

AI 辅助开发不是让工程实践过时,而是提升了工程实践的价值

过去现在
人工写代码AI 生成代码
人工审查自动化验证
人工测试规范定义 + 自动化
人工保障质量系统保障质量

"编码只是我们工作的一部分,更重要的是培养更高层次的工程思维。" —— Gergely Orosz