# 实施计划:真正的 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:任务执行完整性** - **属性 14:ReAct 循环终止** - **属性 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 **状态**: 任务计划完成