跳到主要内容
Rath Lab
Harness Arch开源项目

OpenRath

面向动态多智能体、多会话工作流的开源运行时。

当前版本
v2.0.0
许可证
BSD-3-Clause
语言
Python
GitHub
1.1k ★
一张四象限图,横轴是单会话到多会话,纵轴是单 Agent 到多 Agent。OpenRath 位于多 Agent 且多会话的象限。
横轴是会话语义,纵轴是 Agent 数量。

Most agent frameworks begin with an agent loop. OpenRath begins with Session.

译:多数 Agent 框架从 agent loop 开始。OpenRath 从 Session 开始。
论文

OpenRath: Session-Centered Runtime State for Agent Systems

Fukang Wen, Zhijie Wang, Ruilin Xu · cs.SE (primary) · cs.PL · 2026 年

arXiv:2606.19409

核心抽象

  • Session

    在 Agent 与 Workflow 之间传递的运行时值。可分叉、可检查、可回放。

  • Sandbox / Backend

    工具的执行环境:本地,或可选的 OpenSandbox 容器。

  • Memory

    持久知识。本地后端内置 BM25 召回,可换 OpenViking。

  • FlowToolCall

    对模型暴露 JSON schema,对运行时暴露 Python 可调用对象。

  • Workflow / Agent

    Agent 是会话变换层;Workflow 组合二者,可无限嵌套。

  • Selector

    选择下一个 Workflow,让 if / while 留在普通 Python 里。

  • Provider

    路由 OpenAI 兼容、Anthropic 或可选的 LiteLLM 客户端。

会话以图的形式在多个 Agent 之间流转:Planner、Researcher、Coder、Reviewer 各自变换同一个 Session,中间经历 fork、detach、merge、loop。
Session 是数据流的核心,Agent 是作用在 Session 上的变换层。

PyTorch 式的分层

PyTorchOpenRath作用
TensorSession流动的值
DeviceBackend放置位置
ParameterMemory持久状态
FunctionFlowToolCall可调用操作
nn.ModuleWorkflow / Agent组合结构
if / whileSelector控制流
上下两排对照图:上排是 PyTorch 的 Tensor、Function、nn.Module 与 Device、Parameter;下排是 OpenRath 的 Session、Agent、Workflow 与 Sandbox、Memory。
同样的编程直觉,换成 Agent 原生的运行时对象。

安装

  • pip install openrath核心包
  • pip install "openrath[opensandbox]"容器化沙箱
  • pip install "openrath[openviking]"OpenViking 记忆后端
  • pip install "openrath[server,postgres]"v2 生产部署

快速开始

v2 的公开 API 在 rath.* 命名空间; v1 的 openrath façade 仍然可用。

v2 —— 持久工作流,SQLite 存储
from pathlib import Path
from uuid import uuid4

from rath.definition import Workflow, step, EffectClass
from rath.runtime import LocalRuntime, RunContext, SQLiteRunStore


class DurableHello(Workflow):
    @step(entry=True, effects=EffectClass.READ_ONLY)
    def greet(self, state):
        return {**state, "message": "hello from OpenRath v2"}

    def forward(self, session):
        return self.greet(session)


store = SQLiteRunStore(Path("openrath.db"))
runtime = LocalRuntime(store)

runtime.submit(DurableHello(), session_id=uuid4(),
               context=RunContext.local(revision_id=uuid4()))
runtime.work_once(worker_id="local-worker")
v1 façade —— Session 变换
from openrath import Session, flow

user_session = Session.from_user_message(
    "Count the words in: OpenRath makes agent clusters traceable."
)
user_session = user_session.to("local", spec="./")

out = workflow(user_session)
v2.0.0

Durable, explicit multi-agent execution.

  • @step / @router

    声明可编译的执行与路由边界。

  • ExecutionPlan

    绑定到不可变 revision 的规范图。

  • Run

    持久执行状态,携带租户、会话与计划标识。

  • Event / Checkpoint

    有序的生命周期证据与可恢复的逐步状态。

  • Lease / fencing token

    防止失去所有权的旧 Worker 在归属变更后提交结果。

  • Effect ledger

    对账重试,消解语义不明确的外部副作用。

  • Embedded

    本地持久执行,SQLite 存储。

  • Agent Server

    PostgreSQL,加 action grants、受管适配器与审计输出。

v2 执行链路图:@step 与 @router 编译成不可变的 ExecutionPlan,经 Agent Server 与 Worker lease 进入 Run → Event → Checkpoint,并连到 Effect Ledger 与 Interrupt。
三层:定义并编译、持久执行、生产运维。

BSD-3-Clause · 59 forks · 论文提交于 2026 年 · Agent Server 的 HTTP 接口仍标注为 Beta