跳转至

autowzry-agent 开发计划

版本: v1.0 日期: 2025-01-12 状态: 规划阶段


开发路线图

总体时间规划

阶段1: 基础框架搭建      [预计 3-5 ]
阶段2: 数据收集系统      [预计 5-7 ]
阶段3: 训练流程实现      [预计 7-10 ]
阶段4: 在线学习功能      [预计 5-7 ]
阶段5: 优化与扩展        [预计 持续迭代]

阶段1: 基础框架搭建

目标: 建立项目骨架,完成基础工具和配置系统

任务列表

1.1 项目结构初始化

  • [ ] 创建目录结构
  • [ ] 编写 requirements.txt
  • [ ] 配置 .gitignore
  • [ ] 初始化 README.md

1.2 配置管理模块

  • [ ] 实现 Config 类
  • [ ] YAML 文件加载功能
  • [ ] 命令行参数解析
  • [ ] 默认配置生成
  • [ ] 创建 default_config.yaml 模板
  • [ ] 定义 HyperParameters 数据类
  • [ ] 定义 PathConfig 数据类
  • [ ] 定义 EnvironmentConfig 数据类
  • [ ] 实现 --help 参数输出

1.3 工具模块

  • [ ] image_processing.py
  • [ ] resize 函数
  • [ ] 灰度化函数
  • [ ] 帧堆叠函数
  • [ ] 归一化函数
  • [ ] logger.py
  • [ ] 文件日志输出
  • [ ] 控制台日志格式化
  • [ ] (可选) TensorBoard 集成

1.4 兼容模块基础

  • [ ] compatibility.py 接口定义
  • [ ] 设备初始化接口
  • [ ] 截图接口
  • [ ] 动作执行接口
  • [ ] 状态判断接口
  • [ ] autowzry-lite 后端实现
  • [ ] 简单的测试脚本验证连接

1.5 动作空间定义

  • [ ] action_space.py
  • [ ] 定义动作字典结构
  • [ ] 实现 encode_action
  • [ ] 实现 decode_action
  • [ ] 定义初期动作集(移动 + 攻击)

验收标准

  • [ ] 能够生成默认配置文件
  • [ ] 配置可通过命令行参数覆盖
  • [ ] 能够截取游戏画面并预处理
  • [ ] 动作空间定义清晰可扩展

阶段2: 数据收集系统

目标: 实现观战模式数据收集,能够保存 episode 到磁盘

任务列表

2.1 状态感知与奖励

  • [ ] reward_evaluator.py
  • [ ] 实现死亡检测(OpenCV)
  • [ ] 实现击杀数识别(模板匹配/OCR)
  • [ ] 实现助攻数识别
  • [ ] 定义奖励字典
  • [ ] 实现 compute_reward 函数
  • [ ] 实现可配置的启用/禁用检测项

2.2 动作推断

  • [ ] action_inference.py
  • [ ] 实现位置变化检测(推断移动方向)
  • [ ] 实现攻击动作推断
  • [ ] 实现技能释放推断(可选,初期可简化)

2.3 经验收集器

  • [ ] experience_collector.py
  • [ ] 实现 collect_one_step (观战模式)
  • [ ] 实现 collect_episode
  • [ ] 实现 save_episode (HDF5格式)
  • [ ] 实现 collect_and_save_multiple_episodes
  • [ ] 添加进度显示
  • [ ] 添加异常处理(游戏崩溃、连接断开等)

2.4 数据收集脚本

  • [ ] scripts/collect.py
  • [ ] 命令行参数解析
  • [ ] 观战模式流程
  • [ ] 离线模式流程(读取视频)
  • [ ] 收集统计信息输出

2.5 数据验证

  • [ ] 编写数据加载测试脚本
  • [ ] 检查 HDF5 文件完整性
  • [ ] 可视化部分经验(截图 + 动作 + 奖励)

验收标准

  • [ ] 能够观战一局游戏并保存完整 episode
  • [ ] episode 文件包含 (state, action, reward, next_state, done)
  • [ ] 奖励计算逻辑正确(击杀加分、死亡扣分)
  • [ ] 能够从视频文件离线提取数据

阶段3: 训练流程实现

目标: 实现离线训练,能够从保存的 episode 训练模型

任务列表

3.1 经验回放缓冲区

  • [ ] replay_buffer.py
  • [ ] 实现 push 单条经验
  • [ ] 实现 load_episode_file
  • [ ] 实现 load_from_directory(批量加载)
  • [ ] 实现 sample 随机采样
  • [ ] 实现 save_consolidated
  • [ ] 实现 get_statistics

3.2 Dataset 封装

  • [ ] dataset.py
  • [ ] 继承 torch.utils.data.Dataset
  • [ ] 实现 len
  • [ ] 实现 getitem(返回tensor)
  • [ ] 测试 DataLoader 兼容性

3.3 模型定义

  • [ ] model.py
  • [ ] 定义 BaseModel 抽象类
  • [ ] 实现 SimpleConvNet(2-3层卷积)
  • [ ] 实现 forward 推理
  • [ ] 实现 save/load 方法
  • [ ] 实现 predict 方法(用于推理)

3.4 DQN 训练器

  • [ ] trainer.py
  • [ ] 初始化 model 和 target_model
  • [ ] 实现 train_step(单步训练)
  • [ ] 实现 compute_loss(DQN loss)
  • [ ] 实现 update_target_network
  • [ ] 实现梯度裁剪(防止爆炸)
  • [ ] 添加训练指标记录

3.5 训练脚本

  • [ ] scripts/train.py
  • [ ] 加载配置
  • [ ] 加载 replay buffer
  • [ ] 初始化模型和训练器
  • [ ] 训练循环
  • [ ] 定期保存 checkpoint
  • [ ] 输出训练日志

3.6 测试与验证

  • [ ] 使用小数据集测试过拟合(验证模型能学习)
  • [ ] 检查 loss 是否下降
  • [ ] 验证模型保存和加载
  • [ ] 测试不同超参数组合

验收标准

  • [ ] 能够从 episodes 目录加载数据
  • [ ] 训练 loss 稳定下降
  • [ ] 模型能够保存和恢复
  • [ ] 训练过程有清晰的日志输出

阶段4: 在线学习功能

目标: 实现对战模式,模型能够实时控制英雄并边玩边学

任务列表

4.1 策略选择器

  • [ ] policy.py
  • [ ] 实现 Policy 基类
  • [ ] 实现 GreedyPolicy
  • [ ] 实现 EpsilonGreedyPolicy(含衰减)
  • [ ] 实现 SoftmaxPolicy
  • [ ] 实现 ModelWithPolicy 封装

4.2 对战模式收集器

  • [ ] 修改 experience_collector.py
  • [ ] 添加对战模式支持
  • [ ] 模型推理 → 执行动作 → 获取奖励
  • [ ] 实时添加经验到 buffer
  • [ ] 定期采样训练(可选)

4.3 Agent 主控制器

  • [ ] agent.py
  • [ ] 初始化所有模块
  • [ ] 实现 run_collect_mode
  • [ ] 实现 run_train_mode
  • [ ] 实现 run_battle_mode(在线学习)
  • [ ] 实现 checkpoint 管理

4.4 在线学习脚本

  • [ ] 修改 scripts/collect.py 支持对战模式
  • [ ] 实现边玩边学逻辑
  • [ ] 每 N 步采样训练
  • [ ] 定期更新 target 网络
  • [ ] 定期保存模型

4.5 评估脚本

  • [ ] scripts/evaluate.py
  • [ ] 加载训练好的模型
  • [ ] 运行多局游戏
  • [ ] 统计胜率、平均奖励等指标
  • [ ] 输出评估报告

验收标准

  • [ ] 模型能够控制英雄进行对战
  • [ ] 探索率随训练步数衰减
  • [ ] 对战过程中能够持续学习
  • [ ] 评估脚本能够给出清晰的性能指标

阶段5: 优化与扩展

目标: 提升模型性能,增加高级功能

任务列表

5.1 模型优化

  • [ ] 尝试更深的网络结构
  • [ ] 添加 Dueling DQN 架构
  • [ ] 添加 Double DQN
  • [ ] 添加 Prioritized Experience Replay
  • [ ] 实验不同的激活函数和归一化

5.2 状态识别增强

  • [ ] 添加血量识别
  • [ ] 添加位置识别(小地图)
  • [ ] 添加金币识别
  • [ ] 添加技能 CD 识别
  • [ ] 添加敌我单位识别

5.3 奖励函数优化

  • [ ] 实验不同的奖励数值
  • [ ] 添加时间衰减
  • [ ] 添加 Reward Shaping
  • [ ] 添加对线经验奖励
  • [ ] 添加推塔奖励

5.4 训练稳定性

  • [ ] 添加梯度监控
  • [ ] 实现学习率调度
  • [ ] 实现早停机制
  • [ ] 添加模型检查点恢复

5.5 工具与可视化

  • [ ] TensorBoard 集成
  • [ ] 训练曲线可视化
  • [ ] episode 回放可视化
  • [ ] Q 值热力图可视化

5.6 文档完善

  • [ ] 编写完整的 README
  • [ ] 编写使用教程
  • [ ] 编写 API 文档
  • [ ] 编写常见问题解答

验收标准

  • [ ] 模型在测试对局中表现优于随机策略
  • [ ] 训练过程稳定可复现
  • [ ] 文档完整,新用户能够快速上手

里程碑定义

Milestone 1: 基础框架完成

  • 能够截图、预处理图像、执行动作
  • 配置系统完善

Milestone 2: 数据收集可用

  • 能够观战并保存 10+ 局完整数据
  • 数据格式验证通过

Milestone 3: 离线训练可用

  • 能够从数据训练模型
  • Loss 稳定下降

Milestone 4: 在线学习可用

  • 模型能够控制英雄对战
  • 支持边玩边学

Milestone 5: 性能达标

  • 模型表现超过随机策略
  • 项目文档完整

风险与应对

风险1: 状态识别不准确

应对: 先使用简单的模板匹配,后期考虑 OCR 或轻量级识别模型

风险2: 训练不稳定

应对: 使用 target network,调整学习率,添加梯度裁剪

风险3: 奖励稀疏

应对: 添加密集奖励(如存活时间奖励),使用 Reward Shaping

风险4: 样本效率低

应对: 使用 Prioritized Experience Replay,增加训练轮数

风险5: 设备连接不稳定

应对: 添加重连机制,异常处理,定期保存数据


开发规范

代码风格

  • 遵循 PEP 8
  • 使用类型注解
  • 函数添加 docstring

测试要求

  • 每个模块编写单元测试
  • 集成测试验证数据流

版本管理

  • 使用 Git 进行版本控制
  • 功能开发使用分支
  • 重要节点打 tag

文档要求

  • 每个模块添加 README
  • 复杂函数添加示例
  • 定期更新开发日志

文档结束