dora dora dora

Agentic Dataflow-Oriented Robotic Architecture

100% Rust 实时机器人和 AI 应用框架。零拷贝共享内存 + Apache Arrow, 比 ROS2 快 10-17 倍。4 种通信模式,生产级容错,分布式部署。

10-17x 更快 | 4 种模式 | 4 种语言 | 零拷贝

10-17x

快于 ROS2

4

通信模式

4

编程语言

0

拷贝开销

核心能力

为什么选择 dora

10-17x

快于 ROS2

零拷贝性能

通过共享内存 IPC 和 Apache Arrow 列式格式,比 ROS2 快 10-17 倍。4KB 到 4MB 负载延迟持平,Zenoh SHM 数据平面。

4

种模式

4 种通信模式

不仅仅是发布/订阅。内置 Topic、Service(请求/回复)、Action(目标/反馈/结果)和 Streaming(会话/分段/数据块)模式。

4

种语言

多语言 SDK

用 Rust、Python、C 或 C++ 编写节点,原生 API 而非包装器。在单个数据流中自由混合语言,零互操作开销。

容错机制

按节点配置重启策略(never/on-failure/always)、指数退避、健康监控、熔断器、通过 redb 持久化协调器状态。

录制与回放

将数据流消息录制到 .dora 文件。以任意速度离线回放,支持节点替换,用于回归测试和离线调试。

集群管理

通过 SSH 进行分布式部署,支持标签调度、滚动升级和自动恢复。单一 CLI 管理本地开发和多机生产环境。

动态拓扑

通过 CLI 在运行中的数据流中添加和移除节点,无需重启。动态连接和断开节点端口,实时重配置。

全面可观测性

内置 OpenTelemetry,支持结构化日志、指标和分布式追踪。零配置追踪查看、实时 Topic 检查和资源监控 TUI。

772

源文件

智能体工程

由自主 AI 智能体驱动代码生成、审查、重构、测试和提交。772 个源文件,持续增长中。

系统架构

为规模化而设计

四层架构:CLI 通过 WebSocket 编排 Coordinator, Coordinator 管理跨机器的 Daemon,每个 Daemon 运行 Node 和 Operator。 Zenoh 提供零拷贝数据平面。

dora-cli — 构建、运行、管理

dora-coordinator — WebSocket 控制

dora-daemon — 单机管理器

dora-runtime — Operator 引擎

zenoh — 零拷贝数据平面

通信模式

四种通信方式

不仅仅是发布/订阅。dora 通过预定义的元数据键提供 Topic、Service、Action 和 Streaming 模式。 无需修改 Daemon 或 YAML 配置。

Topic

即发即忘的发布/订阅,适用于传感器数据、周期性状态和事件

Service

带 UUID 关联的请求/回复。客户端发送请求,服务端返回一个响应

Action

长时间运行的目标任务,支持周期性反馈和取消

Streaming

带会话/分段/数据块元数据和队列刷新的连续数据流,支持实时中断

分布式

随处运行,全面扩展

同机节点使用本地共享内存,跨机器通信自动切换 Zenoh 发布/订阅。 基于 SSH 的集群管理,支持标签调度和滚动升级。

6013

WebSocket 控制平面

Coordinator 通过持久 WebSocket 连接管理所有 Daemon

SSH

集群部署

通过 dora cluster up 跨机器部署 — 无需 Kubernetes

0

零拷贝 IPC

本地节点使用共享内存,跨机器使用 Zenoh SHM — 零序列化开销

可观测性

全面洞察

内置 OpenTelemetry,支持结构化日志、指标和分布式追踪。 通过 CLI 监控整个集群。

实时监控

dora top

在终端 TUI 中查看所有机器上每个节点的 CPU、内存、队列深度、网络 I/O、重启次数和健康状态。

分布式追踪

dora trace list/view

零配置追踪查看。无需部署 Jaeger 或 Zipkin 即可查看跨节点的分布式追踪。

数据检查

dora topic echo/hz/info

打印实时数据、监控发布频率、检查 Schema 和带宽 — 全部在命令行完成。

录制与回放

捕获、回放、调试

将所有数据流消息录制到 .dora 文件。以任意速度离线回放, 支持节点替换,用于回归测试。

dora record

从任何运行中的数据流捕获实时消息到 .dora 文件。支持按节点选择性录制或全图录制。

dora replay

以任意速度回放录制数据 — 0.1x 用于逐步调试,10x 用于快速回归测试。

节点替换

在回放期间替换节点,使用录制的真实输入测试新逻辑。

时间旅行调试

录制一次,永久调试

在现场捕获数据,在实验室无限回放。逐步执行精确的消息序列, 替换单个节点以使用真实数据测试新算法, 无需部署到硬件即可运行回归测试套件。

离线硬件调试

无需运行物理硬件即可调试整个传感器到执行器的流水线。从录制中回放精确的相机帧、激光雷达扫描和 IMU 数据。

CI 回归测试

录制黄金数据集,在 CI 中回放。自动检测算法变更是否产生不同输出。与 dora replay --assert 集成。

时间戳精确回放

回放时保留原始时序关系。变速播放从 0.1x 慢动作到 100x 快进。

.dora 格式 变速回放 节点替换 离线模式 回归测试 CI 集成 数据检查 时间戳回放 选择性录制 多节点捕获

容错机制

为恢复而生

按节点配置重启策略、指数退避、健康监控和持久化协调器状态。 即使单个节点故障,数据流也能持续运行。

重启策略

按节点选择 neveron-failurealways。在 YAML 中配置最大重试次数和时间窗口。

协调器持久化

通过 redb 持久化状态。重启协调器后,所有 Daemon 自动重连并恢复先前状态。

优雅降级

单个节点故障被隔离。其余数据流在故障节点恢复期间继续正常处理。

性能表现

在关键处极致高效

亚毫秒延迟,共享内存,零拷贝 Arrow 缓冲,四种通信模式。 继承 dora 的全部性能,同时提供完整的编排能力。

维度 dora 1.0 dora 0.x ROS2
延迟 (SHM) ~500us p50 ~500us p50 1-10ms
拷贝开销 零 (Arrow) 零 (Arrow) CDR 序列化
通信模式 4 1 (Topic) 4
容错机制 内置 基础
录制/回放 内置 rosbag
集群管理 内置 手动
动态拓扑 支持 不支持 部分支持
可观测性 OpenTelemetry 基础日志 ROS2 日志
编程语言 Rust/Py/C/C++ Rust/Py/C/C++ C++/Py

对比

dora vs dora vs ROS2

dora 基于 dora 的零拷贝数据平面构建,新增了生产部署所需的编排、 容错和可观测性能力。

维度 dora 1.0 dora 0.x ROS2
定义 数据流框架 数据流框架 机器人中间件
延迟 (SHM) ~500us p50 ~500us p50 1-10ms
通信模式 4 (Topic/Service/Action/Stream) 1 (Topic) 4
容错机制 内置重启策略 基础
录制/回放 内置 (.dora) rosbag
集群管理 SSH + 标签 手动
动态拓扑 支持 不支持 部分支持
可观测性 OpenTelemetry 基础日志 ROS2 日志
编程语言 Rust/Py/C/C++ Rust/Py/C/C++ C++/Py
零拷贝 Arrow + Zenoh SHM Arrow + Zenoh SHM CDR 序列化

应用场景

为真实工作负载而生

01

自主机器人

感知、规划和控制节点通过零拷贝共享内存连接。无需重写现有节点即可添加新传感器或执行器。

零拷贝 SHM 热插拔节点 多语言
02

AI 流水线

将摄像头、目标检测、LLM 推理和动作节点串联为单一数据流。Python 用于 AI 模型,Rust 用于实时控制。

YOLO + LLM GPU 调度 Arrow 缓冲
03

语音助手

流式 ASR、LLM 生成和 TTS,通过队列刷新实现实时中断。Action 模式支持长时间对话。

Streaming 模式 队列刷新 亚秒延迟
04

分布式仿真

在集群上运行仿真节点。以任意速度录制和回放场景,无需物理硬件即可进行回归测试。

录制/回放 集群部署 变速回放
05

工业自动化

PLC 接口、传感器融合和控制逻辑,配合容错机制。指数退避和健康监控保障生产线持续运行。

容错机制 健康检查 滚动升级
06

研究与原型开发

用 YAML 定义数据流,自由混合语言,快速迭代。录制一次真实数据,离线回放用于算法开发。

YAML 数据流 离线回放 快速迭代

快速开始

5 分钟开始

安装 CLI,定义 YAML 数据流,开始处理数据。

# 安装 dora CLI
cargo install dora-cli

# 启动数据流
dora start dataflow.yml

# 查看状态
dora list

# 查看日志
dora logs

常见问题

FAQ

dora 1.0 有哪些新功能?

+

dora 1.0 是一次重大发布,在 dora 的零拷贝内核之上新增了 Service(请求/回复)、Action(目标/反馈/结果)和 Streaming 通信模式、基于 WebSocket 的协调器、容错机制(自动重启和状态持久化)、录制/回放、集群管理、动态拓扑和全面的可观测性。dora 0.x 仅支持 Topic 发布/订阅和 TCP 协调器。

dora 和 ROS2 有什么区别?

+

dora 通过零拷贝共享内存和 Apache Arrow 比 ROS2 Python 快 10-17 倍。使用简单的 YAML 定义数据流而非代码生成,支持 Rust/Python/C/C++ 且无需 IDL 文件,并提供内置的集群管理、录制/回放和完整生命周期的单一 CLI。

支持哪些编程语言?

+

dora 为 Rust、Python(通过 PyO3)、C 和 C++(通过 CXX bridge)提供原生 API。所有语言共享相同的 Apache Arrow 数据格式,零序列化开销,可在单个数据流中自由混合语言。

支持哪些通信模式?

+

dora 支持四种模式:Topic(即发即忘的发布/订阅)、Service(带 UUID 关联的请求/回复)、Action(带周期性反馈和取消支持的长时间运行目标)和 Streaming(带会话/分段/数据块元数据和队列刷新的连续数据)。

dora 1.0 可以用于生产环境吗?

+

可以。dora 1.0 包含容错机制(可配置重启策略)、通过 redb 持久化协调器状态、用于调试的录制/回放、OpenTelemetry 可观测性、带集群管理的分布式部署,以及在所有平台上进行格式化、代码检查、测试和端到端检查的全面 CI。

能从 dora 0.x 升级到 1.0 吗?

+

现有的基于 Topic 的数据流基本向后兼容。核心的发布/订阅模型相同,YAML 数据流定义遵循相同的结构。你可以逐步采用新功能如 Service、Action 和容错机制,无需重写现有节点。

5 分钟构建你的第一个数据流

安装 CLI,用 YAML 定义节点,开始处理数据。