
LeRobot 贡献指南从环境搭建、质量门禁到 PR 合并的完整开发流程【免费下载链接】lerobot LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot本篇技术指南以 Hugging Face LeRobot 仓库的 贡献指南 为核心骨架系统讲解如何为这一让机器人端到端学习更易用的开源项目贡献代码、文档与反馈。文中不仅继承原指南的全部操作步骤还结合仓库内真实的.pre-commit-config.yaml钩子配置、Makefile质量检查目标、GitHub Actions 工作流与pyproject.toml测试配置帮助你理解每个命令背后的门禁机制从而能够以符合项目规范的方式提交高质量 PR。一、贡献方式总览不止代码这一条路LeRobot 欢迎任何人以任何形式参与贡献并且明确强调代码并不是帮助社区的唯一方式。回答疑问、帮助他人、对外传播项目、改进文档同样极具价值。根据原贡献指南常见的贡献途径包括修复 IssueFixing issues解决代码缺陷或改进既有实现新增功能New features开发全新的功能特性生态扩展Extend实现新的模型/策略policy、机器人或仿真环境并将数据集上传到 Hugging Face Hub文档改进Documentation完善示例、使用指南与源码 docstring反馈Feedback提交与 Bug 或新需求相关的 Issue 工单。从仓库结构看生态扩展正是 LeRobot 最活跃的方向policies 下已经汇聚了 ACT、Diffusion、TDMPC、pi0、SmolVLA、GROOT、VQ-BeT 等十余种策略实现robots 与 teleoperators 则覆盖了 SO-100、REACHY 2、Unitree G1、KOCH、LeKiwi 等硬件平台新成员加入时通常就是向这些目录补充实现并配齐测试。无论选择哪种方式都需要遵守仓库根目录下的 行为准则 与 AI 政策。若不确定从哪里开始可以加入官方 Discord 频道向维护者与社区求助。二、开发环境搭建Fork、Clone 与源码安装2.1 Fork 并克隆仓库贡献代码的第一步是 fork 上游仓库然后将自己的 fork 克隆到本地并添加上游 remote 以便随时同步git clone https://github.com/your-handle/lerobot.git cd lerobot git remote add upstream https://github.com/huggingface/lerobot.git2.2 源码安装依赖环境与依赖的完整安装步骤请严格参照 安装指南 执行。仓库通过pyproject.toml将依赖划分为多个可选 extras如test、dataset、hardware、viz等开发时可按需安装。例如仅做代码贡献与跑测试可以安装testextrapip install -e .[test]若使用uv管理环境则与仓库 CI 保持一致的安装方式是uv sync --locked --extra test从 fast_tests.yml 可以看出CI 正是按test、testdataset、testhardware、testviz四个依赖层级分别安装并执行完整测试套件的这保证了每个可选依赖层级都能独立工作。三、代码风格门禁Pre-commit 钩子全解析3.1 安装与手动运行提交代码前先安装 pre-commit 钩子让每次git commit自动触发检查pre-commit install如果只想在提交前对所有文件手动执行一遍检查pre-commit run --all-files3.2 仓库实际启用的钩子清单仓库根目录的 .pre-commit-config.yaml 是这些命令的真实配置来源它定义了以下检查链钩子作用check-added-large-files阻止提交超过 1MB--maxkb1024的大文件debug-statements/check-merge-conflict/check-case-conflict拦截调试残留、未解决的合并冲突标记、大小写冲突文件名check-yaml/check-toml校验 YAML 与 TOML 配置语法end-of-file-fixer/trailing-whitespace统一文件结尾换行、清除行尾空白ruff-formatruffPython 代码格式化与 lintruff以--fix --exit-non-zero-on-fix模式自动修复typos自动检测代码与文档中的拼写错误pyupgrade将代码升级到 Python 3.12 的现代语法prettier格式化 Markdown / MDX 文档排除模型卡模板与自动生成的 API 文档gitleaks扫描提交中的密钥与敏感信息泄露zizmor静态审计 CI 工作流GitHub Actions的安全性banditPython 代码安全漏洞扫描配置读取自pyproject.tomlmypy静态类型检查使用pyproject.toml中的 mypy 配置目前按模块渐进式开启这一整套门禁在 CI 中由 quality.yml 的pre-commit-checks任务复现使用pre-commit/action并携带--all-files --show-diff-on-failure --coloralways参数任何不符合风格规范的提交都会被 CI 拦截因此本地先跑一遍可以显著减少返工。四、Docstrings 规范API 文档的质量来源LeRobot 的 API 参考文档由src/lerobot/下源码的 docstring自动生成。这意味着你新增或修改任何公共接口时docstring 的格式都至关重要——它既会被文档渲染器解析也会被 CI 严格校验。4.1 遵循的标准所有公共接口的 docstring 必须遵循 docstring 编写标准。该标准由仓库内的三个检查脚本强制执行utils/check_docstrings.py校验 docstring 中记录的参数/返回值与实际函数签名一致utils/check_config_docstrings.py校验配置类的 docstring 与其字段定义一致utils/check_doctest_list.py校验 utils/documentation_tests.txt 中的 doctest 文件清单已排序且路径真实存在。4.2 通过 Makefile 快速检查仓库的 Makefile 封装了上述检查开发时常用make check-docstrings # 校验 docstring 与签名一致 make check-doctest-list # 校验 doctest 清单排序与路径 make doctest # 实际运行清单中文件的 doctest 示例 make fix-docstrings # 自动修复 docstring 问题并更新清单其中make doctest会借助 src/lerobot/utils/doctest_utils.py 跳过需要真实机器人、串口或 Hub 下载的示例CI 通过SKIP_HARDWARE_DOCTEST1与SKIP_CUDA_DOCTEST1环境变量开启跳过逻辑其余示例必须真实可运行。在 quality.yml 的doc-checks任务中CI 会依次执行make check-doctest-list、make check-docstrings、interrogatedocstring 覆盖率检查与make doctest四条检查全部通过才算合格。五、运行测试从单文件到全量套件5.1 准备测试数据git-lfsLeRobot 使用pytest作为测试框架。由于部分测试依赖通过 Git LFS 跟踪的测试产物运行前必须先安装并拉取 LFS 内容git lfs install git lfs pull5.2 运行测试运行完整测试套件可能需要安装对应 extraspytest -sv ./tests开发期间针对单个测试文件快速验证pytest -sv tests/test_specific_feature.py5.3 测试组织与分层运行目录结构全部测试集中在 tests 目录按policies/、datasets/、processor/、envs/、robots/、teleoperators/、rl/等子目录与源码模块一一对应例如 ACT 策略测试位于 tests/policies/pi0_pi05流水线处理测试位于 tests/processorMarker 机制根据 pyproject.toml 中的[tool.pytest.ini_options]配置仓库注册了multigpu需要 2-4 张 GPU 的分布式测试仅在docker_publish.yml的 CI 通道运行与multigpu_heavy8 卡压测永不进 CI两个标记可通过-m参数筛选分层 CIfast_tests.yml 在MUJOCO_GLegl环境下按 base → dataset → hardware → viz 四个依赖层级分别执行uv run pytest tests -vv --maxfail10未安装对应 extras 的测试会通过pytest.importorskip自动跳过端到端冒烟测试make test-end-to-end会串联 ACT、Diffusion、TDMPC、SmolVLA 四种策略的「训练 → 续训 → 评估」全流程冒烟测试使用 1 个 episode 的迷你数据与极小模型维度不依赖 GPU 也可运行。六、提交 Issue 与 Pull Request6.1 使用官方模板仓库为 Issue 与 PR 准备了结构化模板务必按模板填写必填字段与示例Bug 报告遵循 .github/ISSUE_TEMPLATE/bug-report.yml 表单模板Pull Request遵循 .github/PULL_REQUEST_TEMPLATE.md 模板。6.2 PR 提交流程要点提交 PR 前请确认基于最新主干先将分支 rebase 到upstream/main避免合并冲突使用描述性分支名不要直接在main分支上开发应创建独立的功能分支本地自检本地跑完pre-commit与相关测试确保风格与功能均通过对应 CI 中的quality.yml、fast_tests.yml等 工作流遵循 PR 模板清晰描述改动动机、实现方式与验证结果。6.3 社区互审政策Community Review Policy原贡献指南特别强调一项协作机制在你自己的 PR 获得关注之前请先为至少一位其他人的未合并 PR 做代码评审。这种共享责任模式可以成倍放大社区的评审产能也让每个人的代码更快被合并。完成互审后LeRobot 团队成员会接手最终评审。此外仓库还配置了 labeler.yml、pr_labeler.yml 与 issue_labeler.yml 等自动化工作流会依据改动路径自动为 PR/Issue 打标签帮助维护者更高效地分诊。七、结语一条可复现的贡献闭环回顾整个流程LeRobot 的贡献体系是一条本地自检 CI 门禁双保险的闭环fork/clone → 源码安装 → pre-commit 风格门禁 → docstring 规范校验 → pytest 分层测试 → 模板化 Issue/PR → 社区互审。其中每一步都能在当前仓库找到落地证据——钩子清单在 .pre-commit-config.yaml质量检查脚本在 utils测试组织在 testsCI 行为在 .github/workflows。只要按照这条链路执行你的贡献就能以符合 LeRobot 工程规范的方式被快速评审、合并最终惠及整个开源机器人社区。【免费下载链接】lerobot LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考