第一次提交
This commit is contained in:
302
agents_config.py
Normal file
302
agents_config.py
Normal file
@@ -0,0 +1,302 @@
|
||||
"""
|
||||
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(),
|
||||
}
|
||||
Reference in New Issue
Block a user