""" Agent 配置文件 定义所有 Agent 的角色、目标、背景描述和任务模板 """ from typing import Dict, Any from crewai import Agent # Qwen3.5-flash 模型配置(阿里百炼 - DashScope) QWEN_MODEL_CONFIG = { "model": "qwen3.5-flash", # 阿里百炼 Qwen3.5-flash 对应 qwen-plus "base_url": "https://dashscope.aliyuncs.com/compatible-mode/v1", "api_key_env": "DASHSCOPE_API_KEY", } def get_product_manager_agent() -> Agent: """创建产品经理 Agent""" from crewai.llm import LLM # 创建一个基础的 LLM 占位符(会在 configure_llm 中被替换) llm_placeholder = LLM( model="qwen-plus", api_key="placeholder", # 会被 configure_llm 替换 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", ) return Agent( role="ProductManager", goal="将用户需求转化为清晰的产品需求文档 (PRD)", backstory="""你是一位经验丰富的产品经理,擅长理解用户需求并转化为可执行的产品规格。 你的职责包括: 1. 分析用户需求的核心痛点和业务价值 2. 定义功能列表和优先级 3. 编写详细的功能描述和验收标准 4. 识别潜在的技术风险和业务风险""", verbose=True, allow_delegation=False, llm=llm_placeholder, ) def get_qa_engineer_agent() -> Agent: """创建 QA 工程师 Agent""" from crewai.llm import LLM # 创建一个基础的 LLM 占位符(会在 configure_llm 中被替换) llm_placeholder = LLM( model="qwen-plus", api_key="placeholder", # 会被 configure_llm 替换 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", ) return Agent( role="QAEngineer", goal="根据产品需求制定测试计划和测试用例", backstory="""你是一位资深 QA 工程师,专注于软件质量保障。 你的职责包括: 1. 分析 PRD 文档,识别测试范围 2. 设计测试策略(单元测试、集成测试、端到端测试) 3. 编写详细的测试用例,包括正常场景和异常场景 4. 定义验收标准和性能指标""", verbose=True, allow_delegation=False, llm=llm_placeholder, ) def get_software_developer_agent() -> Agent: """创建软件开发工程师 Agent""" from crewai.llm import LLM # 创建一个基础的 LLM 占位符(会在 configure_llm 中被替换) llm_placeholder = LLM( model="qwen-plus", api_key="placeholder", # 会被 configure_llm 替换 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", ) return Agent( role="SoftwareDeveloper", goal="根据需求和测试用例设计技术方案并生成代码框架", backstory="""你是一位全栈软件架构师,拥有深厚的技术功底。 你的职责包括: 1. 根据 PRD 和测试用例设计系统架构 2. 选择合适的技术栈和框架 3. 设计数据库 schema 和 API 接口 4. 生成核心模块的代码框架和关键算法实现 5. 编写技术文档和部署指南""", verbose=True, allow_delegation=False, llm=llm_placeholder, ) def get_coordinator_agent() -> Agent: """创建协调员 Agent - 负责最终审核和交付""" from crewai.llm import LLM # 创建一个基础的 LLM 占位符(会在 configure_llm 中被替换) llm_placeholder = LLM( model="qwen-plus", api_key="placeholder", # 会被 configure_llm 替换 base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", ) return Agent( role="Coordinator", goal="审核所有产出物,确保质量并生成最终交付报告", backstory="""你是一位项目协调员,负责把控整体交付质量。 你的职责包括: 1. 审核 PRD、测试计划和技术方案的完整性 2. 识别各文档之间的一致性和潜在冲突 3. 汇总所有产出物,生成结构化交付报告 4. 评估项目风险和后续建议 5. 在需要时请求人工确认(通过 API 控制)""", verbose=True, allow_delegation=False, llm=llm_placeholder, ) # 任务模板配置 TASK_TEMPLATES = { "product_manager": """ ## 任务:产品需求分析 ### 用户需求输入: {user_requirement} ### 输出要求: 请按照以下结构输出产品需求文档 (PRD): 1. **项目概述** - 项目背景 - 目标用户群体 - 核心价值主张 2. **功能需求列表** - 按优先级排序(P0/P1/P2) - 每个功能的详细描述 - 用户故事格式(作为...我希望...以便...) 3. **非功能需求** - 性能要求 - 安全性要求 - 可用性要求 4. **验收标准** - 每个功能的验收条件 - 关键业务指标 (KPI) 5. **风险评估** - 技术风险 - 业务风险 - 缓解措施 请使用 Markdown 格式输出,确保结构清晰、内容完整. """, "qa_engineer": """ ## 任务:制定测试计划 ### 输入信息: - 产品需求文档 (来自 ProductManager): {prd_content} ### 输出要求: 请按照以下结构输出测试计划文档: 1. **测试策略** - 测试范围界定 - 测试类型(单元/集成/E2E/性能/安全) - 测试环境规划 2. **测试用例设计** - 针对每个 P0/P1 功能设计测试用例 - 包含:测试目的、前置条件、测试步骤、预期结果 - 覆盖正常流程和异常流程 3. **自动化测试建议** - 推荐使用的测试框架 - 需要自动化的测试场景列表 - CI/CD 集成建议 4. **性能测试方案** - 压测场景设计 - 性能基准指标 - 监控指标 5. **验收检查清单** - 上线前必须通过的检查项 请使用 Markdown 格式,测试用例使用表格形式展示。 """, "software_developer": """ ## 任务:技术方案设计与代码实现 ### 输入信息: - 产品需求文档: {prd_content} - 测试计划: {qa_plan} ### 输出要求: 请按照以下结构输出技术方案文档: 1. **系统架构设计** - 架构图(使用文字描述或 ASCII art) - 技术选型及理由 - 系统组件划分 2. **API 接口设计** - RESTful API 列表(方法、路径、请求/响应格式) - 接口鉴权方案 - 错误码规范 3. **数据模型设计** - 数据库表结构(表名、字段、类型、索引) - ER 关系描述 - 数据迁移策略 4. **核心代码实现** - 关键模块的代码框架(Python/TypeScript 等) - 核心算法伪代码或实现 - 重要设计模式的应用 5. **部署方案** - 基础设施需求 - Docker 容器化配置示例 - CI/CD 流水线配置建议 6. **开发注意事项** - 代码规范 - 日志和监控 - 安全最佳实践 请确保代码片段语法正确,注释清晰。 """, "coordinator": """ ## 任务:最终审核与交付报告 ### 输入信息: - 产品需求文档: {prd_content} - 测试计划: {qa_plan} - 技术方案: {dev_plan} ### 输出要求: 请按照以下结构输出最终交付报告: 1. **交付摘要** - 项目基本信息 - 交付物清单 - 整体质量评估 2. **一致性检查** - PRD 与测试计划的匹配度 - 技术方案对需求的覆盖度 - 发现的遗漏或不一致点 3. **质量评估** - 文档完整性评分(1-10 分) - 技术可行性评估 - 测试覆盖度评估 4. **风险提示** - 高风险项列表 - 中低风险项列表 - 风险缓解建议 5. **后续行动建议** - 短期行动计划(1-2 周) - 中期目标(1-3 月) - 长期演进方向 6. **交付确认** - 是否满足交付标准 - 需要人工复核的点 - 最终结论(通过/有条件通过/不通过) 请使用专业、客观的语气,给出具体、可执行的建议。 """, } def create_agents() -> Dict[str, Agent]: """创建所有 Agent 实例""" return { "product_manager": get_product_manager_agent(), "qa_engineer": get_qa_engineer_agent(), "software_developer": get_software_developer_agent(), "coordinator": get_coordinator_agent(), }