OpenRath

面向多智能体、多会话工作流的状态优先 Python 运行时。

Star 数
★ 957
最近更新
1 个月前
License
BSD-3-Clause
主语言
Python

30 秒速览

运行形态
代码库 / SDK开发框架自托管服务
可在哪里用
通用 · 跨平台OpenAI API
费用
软件免费,模型调用费用自付
上手难度
中 · 需要几步配置
开始前需要
Shell / 命令行网络访问本地文件系统MCP Server
典型场景
需要让多个专业角色围绕同一任务分支协作的 Python 团队,可用 Session 谱系追踪每个分支、工具调用与工作区产出的来源。
不适合
  • 不愿部署 PostgreSQL、Redis、S3 等基础设施的小团队
  • 需要稳定生产级 HTTP 接口的用户(Agent Server 仍为 Beta)

这个 Agent 能做什么,适合哪些场景?

OpenRath 是一个以 Session 为中心的 Python 多智能体与多会话运行时,并以 PyTorch 的组合模型作为其设计类比。Session 保存有序消息块、沙箱位置、谱系、用量和待处理工作;Agent、Workflow、Tool、Memory 与 Selector 围绕它组合执行。工作流以 forward(session) -> session 为接口,可分叉、合并和压缩会话,并在运行时通过 flow.Selector 选择下一个工作流。v2.0.0 还提供生产运行层:步骤与路由可编译为不可变计划,运行状态可通过 Checkpoint、Lease、Effect Ledger 和 Interrupt 持久化与恢复。生产部署使用 PostgreSQL 作为持久化事实来源,可配合 Redis 信号加速与 S3 兼容对象存储;Agent Server 的 HTTP 接口仍标为 Beta。

应用从 Session.from_user_message(...) 创建会话,并可用 session.to("local", spec="./") 绑定工具执行位置。flow.Agent 将提示词、Provider、FlowToolCall 工具和可选 Memory 应用于 Session,模型可调用带 JSON Schema 的工具,工具在当前 Sandbox 中运行并把结果写回会话。工作流可调用 Agent、flow.Compressor、子工作流或 flow.Selector,然后返回新的 Session;会话还可 fork()、detach()、merge(...),并导出 JSONL。Memory 支持 remember_memory(...)、recall_memory(...) 和 commit_memory(...);本地后端存储在 .openrath/memory/,stdio MCP 工具也可适配为 FlowToolCall。在生产模式中,@step 与 @router 边界形成执行计划,Run、Event、Checkpoint、效果记录和人工 Interrupt 支持重试、取消、截止时间与恢复。

  1. 需要让多个专业角色围绕同一任务分支协作的 Python 团队,可用 Session 谱系追踪每个分支、工具调用与工作区产出的来源。
  2. 需要在一次工作中分叉候选方案、再合并兼容上下文的应用开发者,可在 Workflow 中使用 fork()、merge(...) 和 flow.Compressor 管理上下文。
  3. 希望模型在受控工作目录中运行文件、Shell 或代码工具的自动化工程师,可将 Session 放置到 local 或可选的 opensandbox 后端。
  4. 需要跨运行保存用户偏好或知识的应用,可为 flow.Agent 绑定 memory="local",在运行前召回并在运行后提交记忆。
  5. 需要可恢复、可审计的长期工作流的生产团队,可部署 Agent Server,并使用 PostgreSQL、Effect Ledger、Lease 和 Interrupt 管理运行状态。

如何安装或部署这个 Agent?

基础安装:

pip install openrath

可选集成:

pip install "openrath[opensandbox]"
pip install "openrath[openviking]"

多数模型示例需要 OpenAI 兼容凭据:

export OPENAI_API_KEY=sk-...
export OPENAI_BASE_URL=https://your-gateway/v1
export OPENAI_DEFAULT_MODEL=your-model-name

也可在 ~/.openrath/config.json 配置 Provider,环境变量优先。生产配置可安装 pip install "openrath[server,postgres]",再运行 openrath-migrate。

如何使用这个 Agent?

配置凭据后,可先运行最小示例:

python example/01_hello_agent.py

其基本调用方式是创建 flow.Agent,构造 Session.from_user_message(...),再执行 agent(session)。若需要工作流组合,定义 flow.Workflow 子类并实现 def forward(self, session: Session) -> Session:。生产模式示例使用:

runtime = LocalRuntime(store, effect_ledger=ledger, production_mode=True)
server = AgentServer(store, runtime, auth=auth, audit_sink=audit)

这个 Agent 有哪些优点和局限?

优点
  • 以 Session 作为统一流动状态,原生记录消息块、沙箱位置、谱系和用量,适合需要分支与来源追踪的工作流。
  • Agent 与 Workflow 都围绕 Session -> Session 组合,支持嵌套工作流、普通 Python 的 if/while 控制流和 LLM 路由。
  • 工具声明与 Python 运行行为由 FlowToolCall 放在同一抽象中,同时支持内置工具、自定义工具和 stdio MCP 工具。
  • v2.0.0 具备明确的持久化运行设计,包括不可变计划、Checkpoint、Lease、围栏、Effect Ledger 和人工 Interrupt。
  • 本地 Memory 无额外依赖,提供 BM25 召回;Provider 可变化而无需改写 Session 和 Workflow 代码。
局限
  • 多数模型示例依赖 OpenAI 兼容环境变量或用户配置的 Provider,文档未给出无需模型服务的完整 Agent 执行路径。
  • 生产部署需要 PostgreSQL;Redis 与 S3 兼容存储承担额外运行职责,增加基础设施和运维范围。
  • Agent Server HTTP 接口仍为 Beta,且 v1 JSONL 导入仅是历史记录,不能恢复为活动 Run。
  • 需要可强制执行截止时间时,同步步骤不能声明抢占式超时,必须改用异步步骤或隔离执行器。
  • 本地 Sandbox 会针对绑定的主机工作区运行文件、命令和代码工具,采用它需要评估该执行边界。

这个 Agent 与同类方案有什么区别?

OpenRath 用 PyTorch 的概念进行设计映射:Session 对应 Tensor、Sandbox/Backend 对应 Device、Memory 对应 Parameter、Tool 对应 Function、Agent 对应 nn.Linear、Workflow 对应 nn.Module。它也将本地 Sandbox 与可选 OpenSandbox、本地 Memory 与可选 OpenViking 作为可替换后端。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
OpenRath 当前 47 · 缺口较多 代码库 / SDK免费 + 模型费 ★ 957 1 个月前 Python OpenAI API
FlowCraft 77 · 表现良好 命令行工具免费 + 模型费 ★ 410 4 天前 Go OpenAI API · Claude API
LightAgent 60 · 存在缺口 代码库 / SDK免费 + 模型费 ★ 1.2k 9 天前 Python OpenAI API
LlamaAgents 66 · 存在缺口 代码库 / SDK免费 + 模型费 ★ 464 今天 Python —

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
47/ 100 五分制 2.4 / 5
信任安全 10/29
可靠稳定 8/14
适用触发 10/18
规范维护 9/18
有效结果 7/13
证据核验 3/8
查看各维度的扣分理由
信任安全10 / 29 · 1.7/5

证据显示:README 描述了生产模式下的权限控制(如 token 携带显式 action grants、租户/项目作用域、策略检查、secret 引用、信任标签、审计),但未提供具体实现细节或配置示例。用户确认机制(如 NEEDS_REVIEW 中断)在 README 中提及,但未说明如何触发或配置。数据流透明度方面,Session 和 lineage 概念提供了追踪能力,但未展示实际的数据流图或日志。敏感数据处理仅提及 secret 引用,未说明加密或脱敏。依赖安全方面,pyproject.toml 列出了依赖但未提供漏洞扫描或锁定文件(uv.lock 存在但未审查)。外部影响方面,Effect Ledger 和 idempotency keys 提及,但未展示具体实现。回滚方面,checkpoints 和 resumable queues 提及,但未说明回滚机制。来源归属方面,README 和 LICENSE 提供了版权信息,但 publisher 未验证。扣分原因:多数安全特性仅声明而无实现证据,且 publisher 身份未知。

可靠稳定8 / 14 · 2.9/5

证据显示:README 和 pyproject.toml 中的 API 描述一致,测试文件 test_public_surface.py 验证了公共 API 的同步性,表明内部一致性良好。依赖在 pyproject.toml 中明确列出,且 CI 配置了构建和 lint 工作流,但未提供依赖可用性测试。失败消息方面,README 提到 NEEDS_REVIEW 状态,但未提供错误处理示例。扣分原因:失败消息的具体格式和错误处理策略未展示。

适用触发10 / 18 · 2.8/5

证据显示:README 明确描述了多种使用场景(单代理、多代理、多会话等),并提供了示例代码和示例目录,表明受众和场景覆盖良好。能力边界方面,README 区分了 FlowToolCall 和 BackendTool,并说明了沙箱和内存后端的可插拔性。触发精度方面,Selector 和 workflow 的触发条件描述较清晰,但未提供详细的触发规则。环境适配方面,支持本地、OpenSandbox、OpenViking 等后端,并提供了环境变量配置。扣分原因:触发精度和部分环境配置细节不足。

规范维护9 / 18 · 2.5/5

证据显示:README 结构清晰,提供了安装、示例、文档链接,信息架构良好。安装说明详细,包括 pip 安装和可选依赖。命名稳定性方面,README 提到 v2.0.0 是生产版本,但未提供命名约定或 API 稳定性说明。示例和 FAQ 方面,提供了 12 个示例,但未提供 FAQ。已知限制方面,README 提到 Agent Server HTTP 表面仍为 Beta,但未列出其他限制。许可证为 BSD-3-Clause,符合要求。版本和变更日志方面,README 提到 v2.0.0 但未提供 CHANGELOG。维护责任方面,README 提供了 GitHub 链接,但未明确维护者。扣分原因:缺少 FAQ、CHANGELOG 和明确的维护者信息。

有效结果7 / 13 · 2.7/5

证据显示:README 提供了多个示例,输出为 Session 对象,易于使用。边际价值方面,OpenRath 提供了多代理多会话的独特范式,可能具有较高价值。成本效益方面,README 提到上下文复用和 token 消耗减少,但未提供基准测试。扣分原因:成本效益缺乏数据支持。

证据核验3 / 8 · 1.9/5

证据显示:README 中的声明(如生产特性)未提供具体实现或测试证据。跨来源验证方面,README 引用了 arXiv 论文和文档网站,但未提供其他独立来源。事实与推断分离方面,README 将设计理念和功能描述混合,未明确区分。扣分原因:声明缺乏可追溯性,且未提供独立验证。

风险与缓解建议
  • Publisher 身份未验证,需谨慎对待其来源。
  • 安全特性(如权限控制、审计)在 README 中声明但未提供实现细节,需进一步审查代码。
  • 依赖安全未提供漏洞扫描或锁定文件审查,建议检查 uv.lock 和依赖版本。
  • 缺少 FAQ、CHANGELOG 和明确的维护者信息,可能影响长期维护。
证据充分度:低 评估于 2026年8月9日 审查版本 82819467b001 评估后仓库已有新提交,评分可能未覆盖最新改动
查看完整评分方法 →

最近版本

来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。

  1. v2.0.0 OpenRath v2.0.0
    发布说明摘录
    OpenRath v2.0.0 OpenRath 2.0.0 将框架从进程内 Agent 工作流扩展为可部署的持久化多 Agent Runtime 与 Agent Server。本版本引入可恢复执行、受治理的副作用、人工中断、安全与租户边界,以及面向 PostgreSQL、Redis、S3 和 OpenTelemetry 的生产部署能力。 ![OpenRath v2 持久化运行时](https://raw.githubusercontent.com/Rath-Team/OpenRath/v2.0.0/assets/readme/diagrams/v2-durable-runtime.png) 核心特性 持久化 Runtime - 显式编译模型 — @step、@router 编译为规范化执行计划与不可变 revision。 - 可恢复 Run — Events、Checkpoints、Interrupts、取消、截止时间、重试、租约 fencing 与队列恢复形成完整生命周期。 - 受控副作用 — Effect Ledger 保存结果和幂等键;无法安全判定的非幂等操作进入 NEEDS_REVIEW,避免盲目重放。 …
    在 GitHub 查看 ↗
  2. v1.3.0
    发布说明摘录
    OpenRath v1.3.0 在 v1.2.2 的 LiteLLM 接入与运行时健壮性之上,v1.3.0 把重心放在基础层加固与 Workflow 静态编译上。持久化写入、配置/凭据分离、环境变量解析、Provider 重绑定与 Workflow.compile() 构成一条连贯的「先 inspect、再 validate、再运行」路径;OpenSandbox 适配层与 CI 也去掉了对 --reruns 的依赖,用更长超时与有针对性的重试消除 flaky。没有 intentional 破坏性改动:内联 api_key 仍可加载并在下次保存时迁移到 credentials.json,compile() 为纯 opt-in。 核心特性 持久化与布局(atomic writes + manifest + GC) - rath.persistence.atomic — atomic_write_text / atomic_write_json:临时文件 + os.replace、路径级锁、Windows sharing-violation 重试;修复 Windows 并发保存 config 时的 PermissionError。 …
    在 GitHub 查看 ↗
  3. v1.2.2
    发布说明摘录
    OpenRath v1.2.2 延续 v1.2.1 的动态工作流之后,v1.2.2 把重心放在接入面与运行时健壮性上。核心新特性是 litellm provider:通过一个薄适配器把 OpenRath 接到 100+ 模型供应商(Gemini、Bedrock、Azure、Ollama、Groq……),不必再在内置 Provider / chat_client_for 之外手工接线。围绕它,本版补齐了 Session 的常用取值与序列协议,并集中修复了一批并发竞态、内存增长与持久化 round-trip 的问题。没有破坏性改动,可从 v1.2.1 直接升级。 核心特性 LiteLLM provider(一个适配器接入 100+ 模型) 新增 provider_kind="litellm",经 [LiteLLM](https://github.com/BerriAI/litellm) 路由到上百家供应商。RathLiteLLMChatClient 复用 OpenRath 既有的 OpenAI 归一化与 kwargs 构造逻辑(LiteLLM 返回 OpenAI 兼容响应),因此适配层很薄,并且不改动既有 provider 分派,也不引入新的运行时依赖: …
    在 GitHub 查看 ↗

常见问题

OpenRath 是否只能使用 OpenAI?
不是。示例使用 OpenAI 兼容环境变量,但文档说明可通过修改 Provider 更换模型供应商,同时保持 Session 和 Workflow 代码稳定。
能否不接模型服务就先试用?
可以运行不需要密钥的示例,例如会话谱系、stdio MCP、Memory 和编译示例;README 的示例表明确标注了哪些脚本需要密钥。
生产运行如何避免重复执行副作用?
Effect Ledger 记录结果和幂等键;不明确的非幂等副作用会进入 NEEDS_REVIEW,而非被盲目重放。
生产模式需要什么权限?
运行时身份不需要 DDL 权限。Agent Server token 需要显式 action grant,对象访问受 tenant/project 范围约束,并有策略检查、秘密引用、信任标签和审计边界。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents