Files
vibe_data_ana/.kiro/specs/true-ai-agent/tasks.md

459 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 实施计划:真正的 AI 数据分析 Agent
## 概述
本实施计划将设计转化为具体的编码任务。系统采用五阶段流水线架构,每个阶段由 AI 驱动,具有自主决策能力。实施将按照从核心数据结构到各个引擎组件,最后到集成的顺序进行。
## 任务列表
- [x] 1. 搭建项目结构和核心数据模型
- 创建项目目录结构src/models, src/engines, src/tools, tests
- 定义核心数据类DataProfile, ColumnInfo, RequirementSpec, AnalysisObjective, AnalysisPlan, AnalysisTask, AnalysisResult
- 实现数据类的序列化和反序列化方法
- 设置测试框架pytest, hypothesis
- _需求FR-1.1, FR-1.2_
- [x] 2. 实现数据访问层和隐私保护机制
- [x] 2.1 实现 DataAccessLayer 类
- 实现数据加载功能(支持多种编码)
- 实现数据画像生成(不暴露原始数据)
- 实现结果过滤机制sanitize_result
- _需求约束条件5.3_
- [x] 2.2 编写属性测试:数据访问限制
- **属性 18数据访问限制**
- **验证需求约束条件5.3**
- [x] 2.3 编写单元测试
- 测试多种编码的数据加载
- 测试空文件和格式错误的处理
- 测试结果过滤功能
- [x] 3. 实现工具系统基础设施
- [x] 3.1 定义工具接口AnalysisTool 抽象类)
- 定义标准接口name, description, parameters, execute, is_applicable
- 实现工具注册机制
- _需求FR-4.1_
- [x] 3.2 实现基础数据查询工具
- 实现 get_column_distribution 工具
- 实现 get_value_counts 工具
- 实现 get_time_series 工具
- 实现 get_correlation 工具
- 确保所有工具返回聚合数据而非原始数据
- _需求FR-4.1, 约束条件5.3_
- [x] 3.3 实现基础统计分析工具
- 实现 calculate_statistics 工具
- 实现 perform_groupby 工具
- 实现 detect_outliers 工具
- 实现 calculate_trend 工具
- _需求FR-4.1_
- [x] 3.4 编写属性测试:工具接口一致性和输出过滤
- **属性 10工具接口一致性**
- **属性 19工具输出过滤**
- **验证需求FR-4.1, 约束条件5.3**
- [x] 3.5 编写单元测试
- 测试每个工具的基本功能
- 测试工具参数验证
- 测试工具执行错误处理
- [x] 4. 实现可视化工具
- [x] 4.1 实现图表生成工具
- 实现 create_bar_chart 工具
- 实现 create_line_chart 工具
- 实现 create_pie_chart 工具
- 实现 create_heatmap 工具
- 实现 ai_picture 依据数据特性画图工具
- 使用 matplotlib 生成图表并保存为文件
- _需求FR-4.1_
- [x] 4.2 编写单元测试
- 测试图表生成功能
- 测试图表文件保存
- [x] 5. 检查点 - 确保工具系统测试通过
- 确保所有测试通过,如有问题请询问用户
- [x] 6. 实现工具管理器
- [x] 6.1 实现 ToolManager 类
- 实现工具选择逻辑select_tools 方法)
- 根据数据特征启用/禁用工具
- 实现工具适用性判断
- _需求FR-4.2, FR-4.3_
- [x] 6.2 实现动态工具调整策略
- 检查时间字段并启用时间序列工具
- 检查分类字段并启用分布分析工具
- 检查数值字段并启用统计工具
- 检查地理字段并启用地理工具
- _需求FR-4.2, FR-4.3_
- [x] 6.3 编写属性测试:工具选择和适用性
- **属性 9工具选择适配性**
- **属性 11工具适用性判断**
- **属性 12工具需求识别**
- **验证需求FR-4.2, FR-4.3, 工具动态性验收.1, .2, .3**
- [x] 6.4 编写单元测试
- 测试不同数据特征的工具选择
- 测试工具适用性判断
- [x] 7. 实现数据理解引擎
- [x] 7.1 实现基础统计生成
- 实现 generate_basic_stats 函数
- 生成列信息(名称、类型、缺失率、唯一值数量)
- 生成示例值每列最多5个
- _需求FR-1.2, FR-1.3_
- [x] 7.2 实现 AI 驱动的数据理解
- 实现 understand_data 函数
- 调用 LLM 推断数据类型
- 调用 LLM 识别关键字段和业务含义
- 调用 LLM 评估数据质量
- 生成 DataProfile 对象
- _需求FR-1.2, FR-1.3, FR-1.4_
- [x] 7.3 编写属性测试:数据理解
- **属性 1数据类型识别**
- **属性 2数据画像完整性**
- **验证需求场景1验收.1, FR-1.2, FR-1.3, FR-1.4**
- [x] 7.4 编写单元测试
- 测试工单数据识别
- 测试销售数据识别
- 测试数据质量评估
- [x] 8. 实现需求理解引擎
- [x] 8.1 实现用户需求解析
- 实现 understand_requirement 函数
- 调用 LLM 解析自然语言需求
- 将抽象概念转化为具体指标
- 生成 RequirementSpec 对象
- _需求FR-2.1, FR-2.2_
- [x] 8.2 实现模板解析功能
- 实现 parse_template 函数
- 解析模板文件结构
- 提取模板要求的指标和图表
- _需求FR-2.3_
- [x] 8.3 实现数据-需求匹配检查
- 实现 check_data_requirement_match 函数
- 检查数据是否满足需求
- 标记缺失的字段或能力
- _需求FR-2.3_
- [x] 8.4 编写属性测试:需求理解
- **属性 3抽象需求转化**
- **属性 4模板解析**
- **属性 5数据-需求匹配检查**
- **验证需求场景2验收.1, .2, 场景3验收.1, .2, FR-2.1, FR-2.2, FR-2.3**
- [x] 8.5 编写单元测试
- 测试"健康度"需求的理解
- 测试模板解析
- 测试数据不满足需求的情况
- [x] 9. 检查点 - 确保数据和需求理解测试通过
- 确保所有测试通过,如有问题请询问用户
- [x] 10. 实现分析规划引擎
- [x] 10.1 实现 AI 驱动的任务生成
- 实现 plan_analysis 函数
- 调用 LLM 根据数据特征和需求生成任务列表
- 为每个任务分配优先级
- 识别任务依赖关系
- 生成 AnalysisPlan 对象
- _需求FR-3.1, FR-3.2_
- [x] 10.2 实现任务依赖验证
- 实现 validate_task_dependencies 函数
- 检查依赖关系是否形成 DAG
- 检查所有依赖的任务是否存在
- _需求FR-3.1_
- [x] 10.3 编写属性测试:分析规划
- **属性 6动态任务生成**
- **属性 7任务依赖一致性**
- **验证需求场景1验收.2, FR-3.1, FR-3.2**
- [x] 10.4 编写单元测试
- 测试任务生成
- 测试循环依赖检测
- 测试任务优先级排序
- [x] 11. 实现任务执行引擎ReAct 模式)
- [x] 11.1 实现 ReAct 执行循环
- 实现 execute_task 函数
- 实现思考-行动-观察循环
- 调用 LLM 进行思考和决策
- 选择并调用工具
- 记录执行历史
- 实现循环终止条件(完成或达到最大迭代次数)
- _需求FR-5.1_
- [x] 11.2 实现工具调用和结果处理
- 实现 call_tool 函数
- 根据 AI 决策选择工具
- 传递参数并执行工具
- 处理工具执行结果
- _需求FR-5.2_
- [x] 11.3 实现洞察提炼
- 实现 extract_insights 函数
- 从执行历史中提炼关键发现
- 识别异常和趋势
- _需求FR-5.4_
- [x] 11.4 编写属性测试:任务执行
- **属性 13任务执行完整性**
- **属性 14ReAct 循环终止**
- **属性 15异常识别**
- **验证需求场景1验收.3, 场景4验收.1, FR-5.1**
- [x] 11.5 编写单元测试
- 测试 ReAct 循环
- 测试工具选择和调用
- 测试异常数据的识别
- [x] 12. 实现动态计划调整
- [x] 12.1 实现计划调整逻辑
- 实现 adjust_plan 函数
- 分析已完成任务的结果
- 识别关键发现和异常
- 决定是否需要深入分析
- 生成新任务或调整优先级
- _需求FR-3.3, FR-5.4_
- [x] 12.2 编写属性测试:计划调整
- **属性 8计划动态调整**
- **验证需求场景4验收.2, .3, FR-3.3**
- [x] 12.3 编写单元测试
- 测试发现异常后的计划调整
- 测试新任务的生成
- 测试任务跳过逻辑
- [ ] 13. 检查点 - 确保规划和执行引擎测试通过
- 确保所有测试通过,如有问题请询问用户
- [x] 14. 实现报告生成引擎
- [x] 14.1 实现关键发现提炼
- 实现 extract_key_findings 函数
- 从所有分析结果中提炼关键发现
- 识别最重要的异常和趋势
- 排序和优先级排列
- _需求FR-6.1_
- [x] 14.2 实现报告结构组织
- 实现 organize_report_structure 函数
- 根据分析内容组织报告结构
- 如果有模板,参考模板结构
- 如果没有模板,生成合理的结构
- _需求FR-6.2_
- [x] 14.3 实现 AI 驱动的报告生成
- 实现 generate_report 函数
- 调用 LLM 生成报告内容
- 包含执行摘要、详细分析、结论和建议
- 嵌入图表和可视化
- 格式化为 Markdown
- _需求FR-6.1, FR-6.2, FR-6.3_
- [x] 14.4 实现报告追溯性
- 确保报告中的所有发现都能追溯到分析结果
- 说明哪些分析被跳过及原因
- _需求FR-6.1_
- [x] 14.5 编写属性测试:报告生成
- **属性 16报告结构完整性**
- **属性 17报告内容追溯性**
- **验证需求场景3验收.3, .4, 场景4验收.4, FR-6.1, FR-6.2**
- [x] 14.6 编写单元测试
- 测试报告结构生成
- 测试模板结构遵循
- 测试跳过分析的说明
- [x] 15. 实现错误处理机制
- [x] 15.1 实现数据加载错误处理
- 实现 load_data_with_retry 函数
- 支持多种编码尝试
- 处理文件过大的情况(采样)
- 处理格式错误
- _需求NFR-2.1_
- [x] 15.2 实现 AI 调用错误处理
- 实现 call_llm_with_fallback 函数
- 实现重试机制(指数退避)
- 实现降级策略(规则方法)
- _需求NFR-2.1_
- [x] 15.3 实现工具执行错误处理
- 实现 execute_tool_safely 函数
- 验证工具参数
- 捕获执行异常
- 返回错误信息而不是崩溃
- _需求NFR-2.1_
- [x] 15.4 实现任务执行错误处理
- 实现 execute_task_with_recovery 函数
- 检查依赖任务状态
- 处理依赖失败的情况
- 单个任务失败不影响整体流程
- _需求NFR-2.1_
- [x] 15.5 编写单元测试
- 测试各种错误场景
- 测试重试机制
- 测试降级策略
- 测试错误恢复
- [x] 16. 实现主流程编排
- [x] 16.1 实现完整分析流程
- 实现 run_analysis 主函数
- 编排五个阶段的执行顺序
- 处理阶段之间的数据传递
- 实现进度显示
- _需求所有功能需求_
- [x] 16.2 实现命令行接口
- 实现 CLI 参数解析
- 支持指定数据文件
- 支持指定用户需求
- 支持指定模板文件
- 支持指定输出目录
- _需求NFR-3.1_
- [x] 16.3 实现日志和可观察性
- 配置日志系统
- 记录每个阶段的执行状态
- 显示 AI 的思考过程
- 记录错误和警告
- _需求NFR-3.2_
- [x] 16.4 编写集成测试
- 测试端到端分析流程
- 测试基于模板的分析
- 测试错误恢复流程
- [x] 17. 实现配置和环境管理
- [x] 17.1 创建配置文件
- 定义 LLM API 配置
- 定义性能参数(超时、重试次数)
- 定义输出路径配置
- _需求约束条件5.1_
- [x] 17.2 实现环境变量支持
- 支持从环境变量读取 API 密钥
- 支持配置文件覆盖
- _需求约束条件5.1_
- [x] 17.3 编写单元测试
- 测试配置加载
- 测试环境变量读取
- [x] 18. 检查点 - 确保所有测试通过
- 确保所有测试通过,如有问题请询问用户
- [x] 19. 创建测试数据和示例
- [x] 19.1 创建测试数据集
- 创建工单数据示例ticket_sample.csv
- 创建销售数据示例sales_sample.csv
- 创建用户数据示例user_sample.csv
- 创建包含异常的数据集
- _需求验收标准_
- [x] 19.2 创建分析模板
- 创建工单分析模板ticket_analysis.md
- 创建问题分析模板problem_analysis.md
- 创建基于数据特征的分析模板data_analysis.md
- _需求场景3验收_
- [x] 19.3 编写示例脚本
- 创建完全自主分析示例
- 创建指定需求分析示例
- 创建基于模板分析示例
- [x] 20. 编写文档
- [x] 20.1 编写 README
- 项目介绍
- 安装说明
- 使用示例
- 配置说明
- _需求NFR-3.1_
- [x] 20.2 编写 API 文档
- 核心类和函数的文档字符串
- 工具接口文档
- 配置参数文档
- _需求NFR-3.1_
- [x] 20.3 编写开发者指南
- 如何添加新工具
- 如何扩展功能
- 架构说明
- _需求NFR-4.1_
- [x] 21. 性能优化和验证
- [x] 21.1 运行性能测试
- 测试数据理解阶段性能(< 30秒
- 测试完整分析流程性能(< 30分钟
- 测试大数据集处理100万行
- _需求NFR-1.1, NFR-1.2_
- [x] 21.2 优化性能瓶颈
- 优化数据加载
- 优化 AI 调用(批处理、缓存)
- 优化工具执行
- _需求NFR-1.1_
- [x] 21.3 编写性能测试
- 测试各阶段的性能指标
- 测试内存使用
- [x] 22. 最终检查点 - 完整系统验证
- 运行所有测试套件
- 验证所有验收标准
- 运行端到端示例
- 确保所有测试通过,如有问题请询问用户
## 注意事项
- 所有任务都是必需的,确保从一开始就有完整的测试覆盖
- 每个任务都引用了具体的需求以便追溯
- 检查点确保增量验证
- 属性测试验证通用正确性属性
- 单元测试验证特定示例和边缘情况
- 所有属性测试应使用 hypothesis 库,最少运行 100 次迭代
- 每个属性测试必须包含注释标签:`# Feature: true-ai-agent, Property {number}: {property_text}`
## 实施顺序说明
1. **阶段1任务1-5**:搭建基础设施,实现工具系统
2. **阶段2任务6-9**:实现数据理解和需求理解引擎
3. **阶段3任务10-13**:实现分析规划和任务执行引擎
4. **阶段4任务14-15**:实现报告生成和错误处理
5. **阶段5任务16-18**:集成和主流程编排
6. **阶段6任务19-22**:测试数据、文档和性能优化
每个阶段都有检查点,确保在继续之前验证功能正确性。
---
**版本**: v1.0.0
**日期**: 2026-03-06
**状态**: 任务计划完成