第一次提交

This commit is contained in:
2026-03-13 14:20:58 +08:00
commit 80d9b50587
16 changed files with 3832 additions and 0 deletions

302
agents_config.py Normal file
View 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(),
}