关于 wendy-contributing
wendy-contributing 是面向 WendyOS 贡献者的开发技能,涵盖 Yocto 镜像构建、Agent 架构和端到端测试,适用于文档所列的边缘设备目标。
主要功能
- 01使用 Yocto 构建 WendyOS 镜像
- 02了解 wendy-agent 架构
- 03运行并排查端到端测试
- 04查阅系统与设备参考资料
适用场景
- 01为 Jetson、Raspberry Pi 或 ARM64 VM 构建镜像
- 02针对开发 VM 运行端到端测试
- 03排查容器运行时或设备发现问题
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ wendylabsinc/ claude-skills --skill wendy-contributing安装后在 Claude Code 中输入/wendy-contributing确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/raspberry-pi.mdsystem-internals.mdyocto-meta-layers.md详细介绍
WendyOS 贡献指南
本技能涵盖 WendyOS 本身的内部开发与贡献,包括构建 OS 镜像、了解 Agent 架构以及运行 E2E 测试。
概述
WendyOS 是一款基于 Yocto 构建、用于边缘计算的嵌入式 Linux 操作系统。它支持:
- NVIDIA Jetson 设备(生产环境,支持 OTA 更新)
- Raspberry Pi 4/5(边缘设备)
- ARM64 虚拟机(开发)
Agent 架构
wendy-agent 是一个容器守护进程(类似于 dockerd/containerd):
- 通过端口 50051 上的 gRPC 管理容器生命周期
- 镜像通过
wendy run推送,而不是从 Docker Hub 拉取 - 没有等同于
docker pull的命令——应用从源代码部署
构建 WendyOS(Yocto)
WendyOS 镜像使用 Yocto 构建。共有三个 meta 层:
| 层 | 目标平台 | 镜像 |
|---|---|---|
meta-wendyos-jetson | NVIDIA Jetson | edgeos-image |
meta-wendyos-virtual | ARM64 虚拟机 | edgeos-vm-image |
meta-wendyos-rpi | Raspberry Pi 4/5 | edgeos-rpi-image |
快速构建(任意层):
cd meta-wendyos-<target>
./bootstrap.sh
source ./repos/poky/oe-init-build-env build
bitbake <image-name>
在 macOS 上,请使用 Docker 构建环境:
cd docker && ./docker-util.sh shell
详细的 Yocto 配置请参阅 references/yocto-meta-layers.md。
E2E 测试
wendy-agent 仓库在 E2ETests/ 中包含一套 E2E 测试。
运行 E2E 测试
# Start the VM
cd meta-wendyos-virtual
./scripts/setup-dev-vm.sh create && ./scripts/setup-dev-vm.sh start
# Deploy a test app first (required for container tests)
cd wendy-agent/Examples/HelloWorld
wendy run --json --device localhost:50051 # --json for non-interactive output
# Run E2E tests with fast path (CRITICAL for performance)
cd wendy-agent/E2ETests
E2E_USE_EXISTING_VM=true E2E_VM_PATH=/path/to/meta-wendyos-virtual swift test
重要:如果虚拟机已经运行,务必设置 E2E_USE_EXISTING_VM=true。这样会跳过 shell 脚本检查,并将测试时间从每项约 5 秒缩短至约 0.01 秒。
提示:在所有 wendy 命令中使用 --json 标志,即可快速获取 JSON 响应,无需交互式轮询。
测试性能提示
- 在测试套件上使用
.serializedtrait,以避免虚拟机竞争条件 - 设置
E2E_USE_EXISTING_VM=true,跳过冗余的虚拟机状态检查 - mDNS 发现测试每项约需 5 秒(协议本身所致)
- 容器状态更改测试可能较慢——快速运行时请禁用
- 对预期失败(例如虚拟机中的 WiFi)不要使用
Issue.record()——它会被计为失败
CI 限制
GitHub 托管的运行器不支持嵌套虚拟化。请使用自托管运行器,或在本地运行 E2E 测试。
测试套件
| 套件 | 测试数 | 用时 | 备注 |
|---|---|---|---|
| 设备连接 | 7 | ~0.07s | gRPC 连通性 |
| 容器部署 | 6 | ~0.06s | 容器生命周期 |
| WiFi 操作 | 4 | ~0.04s | 在虚拟机中优雅处理失败 |
| 硬件能力 | 4 | ~0.07s | 设备枚举 |
| 设备发现 | 4 | ~21s | mDNS(设计上较慢) |
系统内部
有关调试、容器运行时详情(containerd/nerdctl)、mDNS 发现、设备身份和常见问题,请参阅 references/system-internals.md。
有关 Raspberry Pi 专用配置(串口控制台、刷写、分区布局),请参阅 references/raspberry-pi.md。
参考文件
根据具体主题按需加载以下文件:
references/yocto-meta-layers.md- Yocto 层结构、构建配置、分区布局、Docker 构建环境和常见问题references/system-internals.md- containerd 运行时、containerd-registry、设备身份、mDNS 配置、Lima 虚拟机开发、离线镜像打包references/raspberry-pi.md- RPi 机器配置、串口控制台、刷写镜像、分区布局