orra
AI Agent 工作流的韧性基础设施,让多 Agent 协作在 API 超时和节点故障时仍能可靠执
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI Agent 工作流的韧性基础设施,让多 Agent 协作在 API 超时和节点故障时仍能可靠执
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你一定见过这样的场景:
凌晨三点,你的 AI 客服 agent 正在处理用户的退款请求。它调用了支付 API、核验了库存系统、准备生成退款确认邮件——然后,支付 API 超时了。整个工作流就这样卡在中间,既没有完成,也没有失败,只留下一个模糊的"请求中"状态。你的值班工程师被叫醒,对着日志发呆三小时,最后手动重跑了一遍。
这几乎是所有 AI Agent 生产化的第一道坎:单个节点的失败,如何不让整条链路崩溃?
Orra 正是来解决这个问题的。它是一个 AI Agent 工作流的韧性基础设施——用智能规划引擎驱动多 agent 协作,在节点故障时不崩溃、在 API 超时时自动重试、在计划失败时还能回滚状态。它不是另一个 LangGraph 或 Mastra,而是一个横亘在 agent 框架和生产环境之间的中间协调层,让 AI 工作流从能跑通 demo 进化到能扛住生产压力。
Orra 的诞生背景非常清晰——它针对的是 LangChain、Mastra 等主流 agent 框架在生产环境中暴露的核心短板:缺乏可靠的状态管理、无法处理长流程中的部分失败、缺少对执行计划的预验证。
项目由 Orra Dev 团队开发,采用 Go 语言编写核心计划引擎(planengine),提供 Python(orra SDK)和 JavaScript(@orra.dev/sdk)双语言 SDK。开源协议为 MPL-2.0,允许企业在内部自由使用和修改。
图1:Orra 多 Agent 协调架构,展示了任务规划、状态持久化与 Webhook 通知的完整链路。
在基础模式下,开发者用 Orra SDK 包装自己的 agent,注册为服务:
from orra import OrraAgent, Task
from pydantic import BaseModel
agent = OrraAgent(
name='research-agent',
description='Researches topics using web search',
url='https://api.orra.dev',
api_key='sk-orra-...'
)
@agent.handler()
async def research(task: Task[ResearchInput]) -> ResearchOutput:
results = await run_research(task.input.topic)
return ResearchOutput(summary=results.summary)
关键点:agent 本身保持纯净,不需要引入 Orra 的概念,直接注册即可。Orra 在外部接管协调,自动发现服务、协调并行执行、分析任务意图。
进阶模式下,开发者通过 YAML 定义领域约束:
name: research-workflow
domain: content-generation
use-cases:
- action: 'Research topic {topic}'
capabilities: ['Web search', 'Knowledge synthesis']
constraints:
- 'Verify sources before synthesis'
- 'Maximum research time: 10 minutes'
这层让 Orra 引擎对执行计划做完整语义验证——不仅仅是调用链正确,还要验证每个节点是否具备所需能力、状态转换是否安全、是否满足约束条件。
Orra 计划引擎内置六大可靠性保障:
Orra 的代码结构非常清晰。核心计划引擎(planengine/)完全由 Go 编写,包含约 40 个 .go 文件,其中最关键的是:
orchestrate.go(33KB):编排引擎的核心,协调多 agent 的任务调度和状态流转taskworker.go(22KB):任务执行器,处理单个任务的生命周期compworker.go(14KB):组件执行器,管理各 agent 节点的调用cache.go(12KB)+ cacheparams.go:语义缓存层,用 embedding 模型加速计划检索grounding.go:领域约束验证逻辑,确保执行计划符合领域规则pddl.go(13KB):PDDL(Planning Domain Definition Language)解析器,用经典规划语言描述任务orchestrationview.go(22KB):工作流视图管理,提供实时状态快照websocket.go(7KB):WebSocket 服务端,支持实时状态推送SDK 层则由各语言自行实现:
sdks/python):提供 Pydantic 模型支持的 OrraAgent、Task 类型sdks/js):提供 initAgent、agent.register 链式 APIOrra 的模型层非常灵活,支持任何 OpenAI API 兼容端点。计划引擎用推理模型(如 o1-mini、deepseek-r1)做任务规划,用 embedding 模型(如 text-embedding-3-small、jina-embeddings-v2)做语义缓存。
Orra 的部署极为简洁。开发者下载 CLI 二进制后,只需三步就能启动本地计划引擎:
# 1. 下载 CLI
curl -L https://github.com/orra-dev/orra/releases/download/v0.2.6/orra-linux-amd64 \
-o /usr/local/bin/orra && chmod +x /usr/local/bin/orra
# 2. 克隆仓库
git clone https://github.com/ezodude/orra.git && cd orra/planengine
# 3. 启动计划引擎
docker compose up --build
配置通过 .env 文件管理,支持云端 OpenAI API 和本地自托管(如 vLLM、Ollama)。无需 GPU,不依赖重型 ML 框架,1GB 磁盘、2GB 内存即可运行。
Orra 目前并非完美,存在以下值得关注的局限:
无 Web UI:所有操作依赖 CLI 或 API,对非技术人员不友好。相比之下,Temporal 的 Web UI 在调试工作流时体验好很多。
v0.2.6 仍处早期阶段:很多功能(Multi-LLM 共识规划、MCP 集成、Ruby/.NET SDK)在 Coming Soon 列表中,生产使用需评估版本成熟度。
厂商锁定风险:使用 Orra 的云服务(api.orra.dev)意味着工作流编排逻辑部分依赖 Orra 的基础设施,企业自托管方案虽有但文档相对简略。
Orra 代表了一个明确的趋势:当 AI agent 的 demo 越来越多,团队开始真正头疼的是——谁来保证这些 agent 在 API 超时、数据格式变化、部分节点宕机的情况下依然可靠?
传统工作流引擎(Temporal、Inngest)擅长处理可靠性,但不理解 AI agent 的特殊性(LLM 输出不确定性、多 agent 意图协商)。而 LangGraph、Mastra 等 agent 框架擅长构建 agent 逻辑,却缺乏生产级可靠性保障。
Orra 正是卡在这个交叉点:用 Go 编写高性能计划引擎,对接任何 agent 框架,用 PDDL 风格的规划语言为 AI 工作流加上可靠性护栏。它不取代 agent 框架,而是作为基础设施层补齐短板。
目前 GitHub 244 star,9 forks,license 为 MPL-2.0(允许闭源衍生),对于希望在内部项目中深度定制 agent 协作逻辑的企业具有吸引力。随着 AI agent 生产化需求爆发,这类韧性基础设施的价值会越来越凸显。