Skip to content

Roadmap: scripts/ 与 src/unilab 职责治理(5 个 sub-issue) #1239

Description

@TATP-233

背景

scripts/(约 3.5 万行)与 src/unilab(尤其 src/unilab/training/)存在系统性的职责混乱与耦合,对照参考仓库 mjlab 的分层模式后确认三个结构性问题:

  1. scripts/ 越界承载库层逻辑scripts/benchmark/mjwarp/backend.py(754 行)是完整 SimBackend 子类;scripts/benchmark/torch_env/ 复制 task reward/obs 数学;play_viser.py import play_interactive.py 私有函数;多个脚本 import base.backend.mujoco.* 私有工具。
  2. training/ 职责混杂 + 依赖方向错乱:12 个文件混了 5 种性质(utils / 算法适配 / 部署推理 / 编排);training/experiment.py:73-97 运行时 exec_module 依赖 scripts/benchmark/core/device_info.py(库→scripts 倒置);algos 十余处 import training 而 training 又 import algos,形成互依。
  3. 平行实现泛滥:play 管线 8 处(visualization/interactive_playback.py 的 4 个 session 工厂无人用)、run 目录命名 3 份、checkpoint 诊断 3 份、_algo_config_dict 4 份、NanGuard 接线 3 份、MotionLoader 2 套、config 快照 2 套格式。

好的方面:envs/tasks/managers/ 三层干净(无向上依赖、无 backend 私有探测),本次不动。

总目标与边界

做什么:把混进 scripts/ 的库层逻辑归位,收敛平行实现,拆掉 training/ 与 algos/、scripts/ 之间的错乱依赖。完成后"任何一段逻辑,看路径就知道它该在哪"。

不做什么

  • 不动 envs/tasks/managers/ 三层;
  • 不改任何训练语义、算法行为、配置 schema、checkpoint 格式(纯结构性移动 + 去重,行为等价);
  • 不引入新框架(不迁 tyro、不动 Hydra 体系、不将 CLI 收编为 console script——方向性决策另行再议);
  • 不整体治理 scripts/benchmark/(约 2 万行,单独评估),本期只掐断它对库层的反向污染。

预计总规模:5 个 sub-issue,每个一个 PR;合计净改动预计 1200–1800 行(大半是 import 路径变更与删除重复代码)。

永久维护成本:低。重复点从 N 份收敛为 1 份后维护成本下降;新增约束用现有测试 + 少量 import 边界测试守住,不引入新运行时机制。

Sub-issues

执行顺序与依赖

基于分支 dev/issue-1042-manager-based-api 新建分支开发,pr时也merge回此分支。

#1240(反向依赖)──┐
                  ├─→ #1242(play 统一)─→ #1243(training 归位)
#1241(样板收敛)──┘
#1244(motion/deploy)独立,可任意插空

#1240#1241 先行:小而独立、风险低、见效快;#1242 依赖前两者(动同一批入口文件,先小收敛减少冲突面);#1243 必须在 #1242 之后(training/offpolicy.py 去向依赖 #1242 的结果);#1244 与主线无依赖。

明确未授权、需单独确认的扩张点

  • 是否学 mjlab 把 train/play 收编为 [project.scripts] console entry(新 execution path);
  • normalize_ppo_train_cfg 等 Python 层配置解释是否长期保留(触及 config first 原则取舍,需产品判断);
  • scripts/benchmark/(含 torch_env/ 数学复制、mjwarp/backend.py)整体去留。

以上三点在 sub-issue 执行中一律绕过不碰,需要时单独立项。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions