Developer Guide / Code Style

代码风格与命名约定

无需制定新规则,仓库中已有的风格约定已足够明确,遵循现有规范即可。

仓库中现有的风格约定

建议直接遵循仓库已有的约定,这些规范体现在配置文件中,清晰直观。

pyproject.toml

Ruff 做 linter/formatter,line-length = 100,target = py311

hal/base_driver.py

Driver 接口用清晰动词:load_scene、execute_action、get_scene

hal/drivers/__init__.py

内置 driver 短名用 snake_case:go2_edu、xlerobot_2wheels_remote

模板与 profile

运行态协议文件全大写:ENVIRONMENT.md、EMBODIED.md、ACTION.md

命名约定

Driver 短名

snake_case,如 go2_edurekep_real。直接用在 --driver 参数和注册表里。

Python 类名

PascalCase,如 Go2DriverRekepRealDriver。模块和类名保持稳定直观。

profile 文件名

建议和 driver 短名一致:go2_edu.md、rekep_real.md。排查时一眼对应。

可预测原则

看到 --driver my_robotmy_robot.mdMyRobotDriver 能自然推断是同一套东西。

目录边界与职责划分

命名错误易于修正,但职责边界混乱则难以恢复。

位置适合放置不应放置
PhyAgentOS/agent/tools/ 高层工具封装、schema、Agent 协作入口 具体硬件 SDK 调用
hal/drivers/ 内置 driver 的最小执行适配 大段第三方 SDK 和复杂 runtime
hal/profiles/ 能力画像、支持动作、物理约束 运行时数据
插件仓库 runtime/ 真机桥接、厂商 SDK、预检、dry-run 主仓库级通用协议逻辑

Ruff 配置

[tool.ruff]
line-length = 100
target-version = "py311"

[tool.ruff.lint]
select = ["E", "F", "I", "N", "W"]
ignore = ["E501"]
I

导入顺序

N

命名风格

E/F/W

语法与常见错误

插件仓库结构建议

顶层文件

  • PhyAgentOS_plugin.toml
  • README.md / README_zh.md
  • pyproject.toml
  • tests/

目录分工

  • Python 包目录:driver.py + profiles/
  • runtime/:桥接、厂商 SDK
  • tests/:manifest、driver 路由、预检

文档与样例

内容建议
命令样例提供可直接复制的完整命令,避免省略式伪代码
配置样例提供最小可用配置,再说明可选字段
动作样例提供标准 ACTION.md JSON,避免仅作口头描述
profile 样例说明支持哪些动作、有哪些硬约束

最低质量门槛

代码无需追求完美,但应确保其他维护者能够正常运行并理解。

  • Driver / 插件能被成功加载
  • 有对应 profile,运行时能安装为 EMBODIED.md
  • 最少有一组动作或命令验证路径
  • 有基础测试或冒烟验证
  • README 能解释安装、启动、调试方式
判断标准:其他维护者能否仅凭仓库内容完成安装、理解职责边界并进行最小验证?