金句:一个 AI 像一个员工,多个 AI 协作才像一个团队。当你学会指挥 AI 团队,你就成了一个能驾驭比自己大十倍资源的架构师。
一、为什么需要多智能体?
单个 AI 助手存在天然局限:
- 上下文窗口有限:无法同时处理整个大型项目
- 专注领域有限:一个 AI 很难同时擅长前端、后端、测试、文档
- 串行处理:只能顺序思考,无法并行
多智能体框架解决了这些问题:
- 不同的 Agent 专注不同的领域
- Agent 之间可以并行工作
- 有协调者(Orchestrator)统筹全局
二、多智能体开发工作流设计
角色分工
┌─────────────────────────────────────────────────────────────┐
│ 多智能体开发团队 │
│ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ Orchestrator │ ←─────→ │ Planner │ │
│ │ (协调者) │ │ (规划者) │ │
│ └──────┬──────┘ └─────────────┘ │
│ │ │
│ ┌────┼────────────────────────┐ │
│ ↓ ↓ ↓ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Frontend │ │ Backend │ │ Tester │ │
│ │ Agent │ │ Agent │ │ Agent │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ ↓ │
│ ┌──────────────┐ │
│ │ Reviewer │ │
│ │ Agent │ │
│ └──────────────┘ │
└─────────────────────────────────────────────────────────────┘
三、使用 LangGraph 构建多智能体
安装依赖
pip install langgraph langchain-anthropic langchain-openai
构建开发团队
# multi_agent_dev_team.py
from typing import TypedDict, Annotated, List
from langgraph.graph import StateGraph, END
from langchain_anthropic import ChatAnthropic
from langchain_core.messages import HumanMessage, AIMessage
import operator
# 定义状态
class DevTeamState(TypedDict):
task: str # 原始任务描述
plan: str # 规划者的计划
frontend_code: str # 前端代码
backend_code: str # 后端代码
tests: str # 测试代码
review_comments: str # 审查意见
final_output: str # 最终输出
messages: Annotated[List, operator.add]
# 初始化模型
claude = ChatAnthropic(model="claude-3-5-sonnet-20241022")
# 规划节点
def planner_node(state: DevTeamState) -> dict:
"""分析任务,制定开发计划"""
prompt = f"""你是一个技术架构师,请分析以下开发任务,制定详细的开发计划。
任务:{state['task']}
请输出:
1. 功能分解(前端/后端分别需要做什么)
2. 文件结构建议
3. API 接口清单
4. 数据库 Schema
5. 各 Agent 的具体任务分配"""
response = claude.invoke([HumanMessage(content=prompt)])
return {"plan": response.content}
# 前端 Agent
def frontend_agent_node(state: DevTeamState) -> dict:
"""生成前端代码"""
prompt = f"""你是一个专业的前端工程师,使用 React + TypeScript + Tailwind CSS。
开发计划:
{state['plan']}
请生成前端相关代码,包括:
- 组件代码
- 页面代码
- API 调用封装
输出格式:使用 ```filename.tsx 标注每个文件"""
response = claude.invoke([HumanMessage(content=prompt)])
return {"frontend_code": response.content}
# 后端 Agent
def backend_agent_node(state: DevTeamState) -> dict:
"""生成后端代码"""
prompt = f"""你是一个专业的后端工程师,使用 Node.js + TypeScript + Prisma。
开发计划:
{state['plan']}
请生成后端相关代码,包括:
- API 路由
- Service 层
- 数据库 Schema (Prisma)
- 中间件
输出格式:使用 ```filename.ts 标注每个文件"""
response = claude.invoke([HumanMessage(content=prompt)])
return {"backend_code": response.content}
# 测试 Agent
def tester_agent_node(state: DevTeamState) -> dict:
"""生成测试代码"""
prompt = f"""你是一个 QA 工程师,专注于测试质量。
后端代码:
{state['backend_code'][:3000]} # 截取前3000字
请生成:
1. 单元测试(Jest)
2. 集成测试(Supertest)
3. 关键业务流程的 E2E 测试场景描述"""
response = claude.invoke([HumanMessage(content=prompt)])
return {"tests": response.content}
# 审查 Agent
def reviewer_agent_node(state: DevTeamState) -> dict:
"""审查所有代码"""
prompt = f"""你是一个高级工程师,负责代码审查。
请审查以下代码,重点关注:
1. 安全性问题
2. 性能问题
3. 代码质量
4. 前后端接口是否匹配
前端代码摘要:{state['frontend_code'][:1000]}
后端代码摘要:{state['backend_code'][:1000]}
测试覆盖:{state['tests'][:500]}
输出:发现的问题清单(严重程度 + 描述 + 修改建议)"""
response = claude.invoke([HumanMessage(content=prompt)])
return {"review_comments": response.content}
# 组装最终输出
def assembler_node(state: DevTeamState) -> dict:
"""组装最终交付物"""
final = f"""# 开发结果报告
## 任务描述
{state['task']}
## 开发计划
{state['plan']}
## 前端代码
{state['frontend_code']}
## 后端代码
{state['backend_code']}
## 测试代码
{state['tests']}
## 代码审查意见
{state['review_comments']}
"""
return {"final_output": final}
# 构建工作流
def build_dev_team_graph():
workflow = StateGraph(DevTeamState)
# 添加节点
workflow.add_node("planner", planner_node)
workflow.add_node("frontend", frontend_agent_node)
workflow.add_node("backend", backend_agent_node)
workflow.add_node("tester", tester_agent_node)
workflow.add_node("reviewer", reviewer_agent_node)
workflow.add_node("assembler", assembler_node)
# 定义流程
workflow.set_entry_point("planner")
workflow.add_edge("planner", "frontend")
workflow.add_edge("planner", "backend")
# 测试在后端完成后进行
workflow.add_edge("backend", "tester")
# 审查在所有代码完成后进行
workflow.add_edge("frontend", "reviewer")
workflow.add_edge("tester", "reviewer")
workflow.add_edge("reviewer", "assembler")
workflow.add_edge("assembler", END)
return workflow.compile()
# 运行
if __name__ == '__main__':
graph = build_dev_team_graph()
result = graph.invoke({
"task": """实现用户评论系统:
- 用户可以对文章发表评论
- 支持回复评论(嵌套结构,最多2层)
- 评论可以点赞
- 管理员可以删除不当评论
使用 React + Node.js + PostgreSQL""",
"messages": []
})
# 保存结果
with open("dev_output.md", "w", encoding="utf-8") as f:
f.write(result["final_output"])
print("✅ 开发完成,结果已保存到 dev_output.md")
四、CrewAI 框架:更高级的多智能体
CrewAI 提供了更接近真实团队协作的框架:
from crewai import Agent, Task, Crew
# 定义角色
architect = Agent(
role='系统架构师',
goal='设计可扩展的系统架构',
backstory='10年经验的架构师,专注于高并发系统设计',
llm=claude
)
developer = Agent(
role='全栈开发工程师',
goal='实现高质量的代码',
backstory='擅长 TypeScript 全栈开发,注重代码质量',
llm=claude
)
# 定义任务
design_task = Task(
description='设计评论系统的架构',
agent=architect,
expected_output='详细的系统设计文档'
)
# 创建团队
crew = Crew(
agents=[architect, developer],
tasks=[design_task, implement_task],
verbose=True
)
result = crew.kickoff()
章节小结:多智能体协作代表了 AI 辅助开发的下一个阶段——从"一个 AI 助手"进化为"AI 开发团队"。通过合理的角色分工和工作流设计,你可以用 AI 团队完成以前需要 3-5 个人才能完成的开发工作。这不是科幻,2025 年这已经是可用的现实。