AI Agent实战二:多Agent协作系统搭建
AI辅助创作 | 专栏《2026 AI编程效率革命》第08篇\n\n## 前言上一篇我们学习了MCP协议掌握了AI与工具交互的标准化方法。本文将更进一步探讨如何让多个AI Agent协同工作——就像组建一个AI开发团队每个Agent负责不同的角色通过协作完成复杂任务。一、为什么需要多Agent协作单Agent在面对复杂任务时有明显局限问题单Agent多Agent协作任务复杂度长任务容易跑偏分而治之各司其职上下文窗口单个窗口有限各Agent独立上下文专业性通用但不精深各Agent专精一个领域并发性串行执行可并行处理典型场景一个软件开发项目需要产品经理、架构师、开发工程师、测试工程师、代码审查员等角色协作完成。二、主流多Agent框架对比2.1 框架对比表框架特点适用场景CrewAI角色驱动上手简单快速搭建团队协作AutoGen微软出品对话式协作研究、对话式任务LangGraph图状态机灵活可控复杂工作流编排Camel角色扮演多Agent沟通创意生成、辩论2.2 本文选择CrewAICrewAI以其直观的角色定义和简洁的API成为入门多Agent的最佳选择。三、CrewAI核心概念 CrewAI的三个核心概念 1. Agent智能体扮演特定角色拥有目标、工具和 backstory 2. Task任务具体的工作内容有明确的预期输出 3. Crew团队由多个Agent组成协调完成一系列Task # 安装# uv add crewai crewai-tools┌──────────────────────────────────────────────┐ │ Crew │ │ │ │ ┌─────────┐ ┌─────────┐ ┌──────────┐ │ │ │ 产品经理 │ │ 开发工程师│ │ 测试工程师│ │ │ │ Agent │ │ Agent │ │ Agent │ │ │ └────┬────┘ └────┬────┘ └────┬─────┘ │ │ │ │ │ │ │ ┌────▼────┐ ┌────▼────┐ ┌───▼─────┐ │ │ │ 需求分析 │ │ 代码实现 │ │ 测试验证 │ │ │ │ Task │──│ Task │──│ Task │ │ │ └─────────┘ └─────────┘ └─────────┘ │ └──────────────────────────────────────────────┘四、实战搭建AI软件开发团队4.1 定义Agent角色# agents.pyfromcrewaiimportAgent,Task,Crew,Processfromcrewai_toolsimport(FileReadTool,DirectoryReadTool,CodeInterpreterTool,)# 工具初始化file_readFileReadTool()dir_readDirectoryReadTool()code_interpreterCodeInterpreterTool()# Agent定义 product_managerAgent(role产品经理,goal分析用户需求输出清晰的产品需求文档PRD,backstory(你是一位经验丰富的产品经理擅长将模糊的用户需求转化为清晰、可执行的技术需求。你注重用户体验每个需求都有明确的验收标准。),verboseTrue,allow_delegationFalse,llmgpt-5.5,)tech_leadAgent(role技术架构师,goal根据需求设计技术方案输出架构设计文档,backstory(你是一位资深技术架构师精通Python、FastAPI、PostgreSQL技术栈。你擅长系统设计注重代码质量、可扩展性和安全性。),verboseTrue,allow_delegationTrue,llmgpt-5.5,)developerAgent(role开发工程师,goal根据技术方案编写高质量代码,backstory(你是一位全栈开发工程师精通Python、TypeScript。你写代码注重规范、可读性和测试覆盖率。你习惯先写测试再写实现。),verboseTrue,tools[file_read,dir_read],allow_delegationFalse,llmgpt-5.5,)code_reviewerAgent(role代码审查员,goal审查代码质量发现潜在问题并给出改进建议,backstory(你是一位严格的代码审查专家关注代码质量、安全漏洞、性能问题和最佳实践。你的审查报告条理清晰每个问题都有具体的修改建议。),verboseTrue,tools[file_read],allow_delegationFalse,llmclaude-4-sonnet,)qa_engineerAgent(role测试工程师,goal编写测试用例验证功能正确性,backstory(你是一位经验丰富的测试工程师擅长设计边界测试、异常测试和集成测试。你确保每个功能都有充分的测试覆盖。),verboseTrue,tools[code_interpreter],allow_delegationFalse,llmgpt-5.5,)4.2 定义任务流# tasks.pyfromcrewaiimportTaskdefcreate_tasks(project_description:str)-list[Task]:根据项目描述创建任务链task_analyzeTask(description(f分析以下项目需求输出PRD文档\n\nf{project_description}\n\nfPRD应包含\nf1. 项目背景与目标\nf2. 功能需求列表含优先级\nf3. 非功能需求\nf4. 验收标准),expected_outputMarkdown格式的PRD文档,agentproduct_manager,)task_designTask(description(根据产品经理的PRD文档设计技术方案\n1. 系统架构图用文字描述\n2. 数据模型设计\n3. API接口设计\n4. 技术选型说明\n5. 目录结构规划),expected_outputMarkdown格式的技术设计文档,agenttech_lead,context[task_analyze],# 依赖前置任务)task_developTask(description(根据技术方案实现项目代码\n1. 创建项目目录结构\n2. 实现数据模型层\n3. 实现API接口层\n4. 实现业务逻辑层\n5. 添加配置文件和启动入口\n确保代码有完整的类型注解和文档字符串。),expected_output完整的项目代码文件列表及内容,agentdeveloper,context[task_design],)task_reviewTask(description(审查开发工程师提交的代码\n1. 检查代码规范PEP 8\n2. 检查安全问题SQL注入、XSS等\n3. 检查性能问题\n4. 检查错误处理\n5. 给出评分A/B/C/D和具体改进建议),expected_output代码审查报告含问题列表和改进建议,agentcode_reviewer,context[task_develop],)task_testTask(description(为项目编写测试\n1. 单元测试覆盖核心逻辑\n2. API接口测试\n3. 边界和异常测试\n4. 运行测试并报告结果),expected_output测试代码文件和测试执行报告,agentqa_engineer,context[task_develop,task_review],)return[task_analyze,task_design,task_develop,task_review,task_test]4.3 组建团队并执行# crew.pyfromcrewaiimportCrew,Processfromagentsimportproduct_manager,tech_lead,developer,code_reviewer,qa_engineerfromtasksimportcreate_tasksdefrun_dev_crew(project_description:str):运行开发团队# 创建任务taskscreate_tasks(project_description)# 组建团队crewCrew(agents[product_manager,tech_lead,developer,code_reviewer,qa_engineer],taskstasks,processProcess.sequential,# 顺序执行verboseTrue,)# 启动执行resultcrew.kickoff()returnresult# 使用示例if__name____main__:project_desc 开发一个个人记账API服务 - 用户注册/登录JWT认证 - 记录收支金额、类别、日期、备注 - 按月/年统计报表 - 预算管理和超支提醒 技术栈FastAPI SQLAlchemy SQLite resultrun_dev_crew(project_desc)print(*60)print(项目交付物)print(result)五、进阶层次化多Agent架构对于更复杂的项目可以采用层次化架构# hierarchical_crew.pyfromcrewaiimportCrew,Processdefrun_hierarchical_crew(project_description:str):层次化管理模式crewCrew(agents[developer,code_reviewer,qa_engineer],taskscreate_tasks(project_description),processProcess.hierarchical,# 层次化manager自动分配manager_llmgpt-5.5,# 管理者模型verboseTrue,)returncrew.kickoff()层次化模式下一个经理Agent会自动分析任务复杂度决定任务分配给哪个Agent协调Agent之间的依赖关系汇总最终结果六、Agent间通信模式6.1 顺序模式SequentialAgent_A → Agent_B → Agent_C → 完成适用于流水线式任务前一个Agent的输出是后一个的输入。6.2 层次模式HierarchicalManager Agent / | \ Agent_A Agent_B Agent_C \ | / 汇总结果输出Manager负责分配和汇总。6.3 自定义图模式LangGraph# 使用LangGraph实现自定义工作流fromlanggraph.graphimportStateGraph,ENDfromtypingimportTypedDict,AnnotatedimportoperatorclassDevState(TypedDict):requirements:strdesign:strcode:strreview:strtest_results:strmessages:Annotated[list[str],operator.add]defanalyze_node(state:DevState)-DevState:# 需求分析state[messages].append([产品经理] 需求分析完成)returnstatedefdesign_node(state:DevState)-DevState:# 架构设计state[messages].append([架构师] 技术方案设计完成)returnstatedefdevelop_node(state:DevState)-DevState:# 代码实现state[messages].append([开发者] 代码实现完成)returnstatedefreview_node(state:DevState)-dict:# 代码审查 - 可以决定是否需要返工state[messages].append([审查员] 代码审查通过)return{next:test}# 或 rework 返回开发deftest_node(state:DevState)-DevState:state[messages].append([测试] 测试通过)returnstate# 构建图graphStateGraph(DevState)graph.add_node(analyze,analyze_node)graph.add_node(design,design_node)graph.add_node(develop,develop_node)graph.add_node(review,review_node)graph.add_node(test,test_node)graph.add_edge(analyze,design)graph.add_edge(design,develop)graph.add_edge(develop,review)graph.add_conditional_edges(review,lambdas:s.get(next,test),{test:test,rework:develop,})graph.add_edge(test,END)graph.set_entry_point(analyze)appgraph.compile()七、实践建议Agent角色要清晰每个Agent的职责边界明确避免重叠Task描述要具体包含输入、输出格式、验收标准选择合适的协作模式简单任务用Sequential复杂项目用Hierarchical控制Token消耗多Agent会显著增加API调用注意成本控制加入人类审核节点关键决策点加入人工确认Human-in-the-loop总结多Agent协作将AI编程从单兵作战提升到团队协作的层面。本文介绍了多Agent协作的必要性和优势CrewAI框架的核心概念完整的5角色AI开发团队搭建层次化管理和自定义工作流实践建议掌握MCP协议 多Agent协作你已经具备了构建复杂AI应用的基础能力。后续文章将继续探讨AI在代码审查、Prompt工程和DevOps中的实战应用。免责声明本文为AI辅助创作内容代码示例仅供学习参考。实际项目中多Agent系统的API调用成本可能较高请根据预算合理规划。文中涉及的工具版本请以官方最新文档为准。专栏《2026 AI编程效率革命》| 第08篇发布日期2026-05-03