Roadmap: #1476
目标
消除 uni_rl 对 unilab 包的全部依赖,算法层只面向一个最小 env 契约(借鉴 mjlab:algo 层只见 gym-like 接口,env 构造由调用方注入)。
当前 outbound 耦合(迁移后须处理)
unilab.base.observations(get_obs_dims/get_critic_base_dim/split_obs_dict)
unilab.base.final_observation(resolve_terminal_observation_contract)
unilab.base.np_env(NpEnvState/NpEnv 类型引用)
unilab.base.registry(ensure_registries/registry.make,含 get_env_dims 探测 env)
unilab.base.config_adapter(create_env:fast_sac/flash_sac double_buffer、hora/appo)
unilab.base.process_device
unilab.utils.sim2sim(hora/appo play 中的 contract 校验)与 unilab.utils.checkpoint
hora/distill_config.py 的 parents[2]/"conf" 包内路径算术
方案方向
- obs/final-observation/ dims 等纯函数随迁移下沉 uni_rl(它们本属算法侧语义)
- env 构造(registry/config_adapter/create_env)改为注入:runner/builder 接受 env factory 或预构造 env,UniLab 侧入口脚本负责组装
- sim2sim 校验、checkpoint 解析等 UniLab 业务逻辑留在 UniLab,由 play 入口在调用 uni_rl 前后执行
- distill_config 的 conf 树解析移至 UniLab 侧(teacher 配置属于 task 资产)
验收
grep -r "unilab" uni_rl/src 零命中(注释/文档除外)
- uni_rl 测试全绿(不安装 unilab)
Roadmap: #1476
目标
消除 uni_rl 对 unilab 包的全部依赖,算法层只面向一个最小 env 契约(借鉴 mjlab:algo 层只见 gym-like 接口,env 构造由调用方注入)。
当前 outbound 耦合(迁移后须处理)
unilab.base.observations(get_obs_dims/get_critic_base_dim/split_obs_dict)unilab.base.final_observation(resolve_terminal_observation_contract)unilab.base.np_env(NpEnvState/NpEnv 类型引用)unilab.base.registry(ensure_registries/registry.make,含get_env_dims探测 env)unilab.base.config_adapter(create_env:fast_sac/flash_sac double_buffer、hora/appo)unilab.base.process_deviceunilab.utils.sim2sim(hora/appo play 中的 contract 校验)与unilab.utils.checkpointhora/distill_config.py的parents[2]/"conf"包内路径算术方案方向
验收
grep -r "unilab" uni_rl/src零命中(注释/文档除外)