跳转到内容

正在加载搜索…

参与贡献

以下是仓库的规则(AGENTS.md),以及它们背后的理由:

  • 一个 agent,带版本。 configs/default.toml 及其运行的代码就是 agent;AGENT_VERSION 写入每个 lock 和结果,docs/src/content/docs/changelog.md 说明每个版本改了什么、依据什么证据。变体是消融(configs/ablations/)或实验覆盖,绝不是副本;退役的 harness 放到归档 tag 中,任何代码、配置或目录都不以某个 harness 或某次迭代命名。
  • 能力是插件:skill、服务清单和 prompt 段落,通过配置开启。skill 的调用是以一个事件结束的有界执行。
  • 配置分层与其他 agent 框架类似:代码默认值、agent、模型文件、实验、命令行(配置与 identity)。
  • 由证据决定。 在评测方的观测 contract 下开发,开发 layout 和评测 layout 都使用;当成对运行显示的差异大于重复运行的离散程度时,改动才进入默认配置,同时报告每个 episode 的调用次数和费用。在相同的 layout 上,把 agent 与它所封装的学习型策略进行比较。
  • 核心保持为标准库 Python 3.11。 src/harness_policy 在模块级不导入 Isaac、CUDA、torch 或 benchmark 代码;这些留在 worker、kernel 和服务进程中。这样配置、解析、lock 和报告可以在任何机器上工作。
  • 一个环境。 RoboDojo 路径使用 harness-policy conda 环境。依赖放入 environment/ 的某一层(requirements-*.txt),通过 environment/setup.sh 在 environment/constraints.txt 约束下安装,其改动与刷新后的 environment/lock/ 一起提交。
  • quickstart 和测试中不安装、不进行付费调用。 scripts/install_plan.py 打印 checkout 计划;测试不启动模拟器,也不调用模型。
  • trace 保留一切。 原始观测、动作回执和错误都会保留;记录的回放不是新的闭环评测,mock 永远不是 benchmark 结果。
  • 运动绑定到一个 episode 和一个步。 可能已执行的运动绝不会被静默重试。
  • 比较是成对的。 环境配置、任务、seed 和预算必须一致;失败的案例保留在分母中。
  • 不提交任何生成物或机密:凭据、模拟器资源、checkpoint、环境、运行产物。

Pull request:每个 pull request 一个主题;包含多个步骤的改动是一个 pull request,每个步骤一个 commit。

Terminal window
python -m unittest discover -s tests

测试覆盖:安全层(shield)(性质测试和故障注入测试),kernel 及其隔离,每个 skill 在假机器人上的表现,agent 和每个消融在可选 skill、服务和 broker 的所有组合下的解析结果和 prompt,suite,XPolicyLab 连接器和在假宿主上的导出,以及文档(见下文)。需要 Linux user 命名空间、numpy/cv2 或 git checkout 的测试在缺少这些条件时会跳过。

本站点是采用 The Simulator 文档主题的 Astro Starlight,一个位于 docs/ 的 Deno 项目(页面在 docs/src/content/docs/,侧边栏在 docs/src/sidebar.json);docs/README.md 说明了其结构和发布方式。

Terminal window
cd docs
deno install --frozen
deno task dev # live preview at http://localhost:4321/docs/
deno task build # what CI runs: generates the reference pages, then builds dist/
  • 参考页面是生成的:每次构建前由 scripts/gen_docs_reference.py 从代码生成:CLI 来自其参数解析器,配置键来自验证器使用的字典(AGENT_KEYS、RUNTIME_KEYS、MODEL_KEYS、EXPERIMENT_KEYS、DEPLOY_KEYS、PLACEMENT_KEYS、MANIFEST_KEYS、SKILL_KEYS),skill 来自其清单和 docstring,服务来自其清单,agent 通过解析得到,Python API 来自 docstring(从源码读取,不导入任何东西)。git 忽略它写出的页面。要修改的是代码,而不是生成的页面。
  • 新的配置键需要说明:把它加到验证器旁边的字典中。只要代码读取的某个键没有文档,tests/test_docs.py 就会失败。
  • 文档中的命令、路径和链接都会被检查:页面和 README.md 中的每条 harness ... 命令都必须能被 CLI 解析,它们提到的每个仓库路径都必须存在,每个页面都必须在侧边栏中,每个 /docs/... 链接都必须指向一个页面。
  • README.md 中的表格位于 <!-- generated: ... --> 标记之间,来自同一个生成器:python scripts/gen_docs_reference.py --readme 会重写它们,表格过期时测试会失败。
  • 代码块中的一行 --8<-- "path" 会显示该仓库文件(docs/src/integrations/snippets.ts),这样示例就不会与其展示的配置脱节。
  • 图表是跟随页面主题的静态 SVG 组件(docs/src/components/),不是 Mermaid;首页的插图是 Hairline 线描图(docs/src/figures/)。

每次 push 和 pull request 都会在 CI 中构建站点(.github/workflows/docs.yml),并将其保留为可下载的 artifact。发布(由一个 Cloudflare Worker 提供 harness.lmms-lab.com)是单独的手动步骤;见 docs/README.md。