OpenRath
面向多智能体、多会话工作流的状态优先 Python 运行时。
- Star 数
- ★ 957
- 最近更新
- 1 个月前
- License
- BSD-3-Clause
- 主语言
- Python
- FA 评分
- 47/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台OpenAI API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 需要让多个专业角色围绕同一任务分支协作的 Python 团队,可用 Session 谱系追踪每个分支、工具调用与工作区产出的来源。
- 不适合
- 不愿部署 PostgreSQL、Redis、S3 等基础设施的小团队
- 需要稳定生产级 HTTP 接口的用户(Agent Server 仍为 Beta)
- 源码审查
- 47/100 · 缺口较多
这个 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 支持重试、取消、截止时间与恢复。
- 需要让多个专业角色围绕同一任务分支协作的 Python 团队,可用 Session 谱系追踪每个分支、工具调用与工作区产出的来源。
- 需要在一次工作中分叉候选方案、再合并兼容上下文的应用开发者,可在 Workflow 中使用
fork()、merge(...)和flow.Compressor管理上下文。 - 希望模型在受控工作目录中运行文件、Shell 或代码工具的自动化工程师,可将 Session 放置到
local或可选的opensandbox后端。 - 需要跨运行保存用户偏好或知识的应用,可为
flow.Agent绑定memory="local",在运行前召回并在运行后提交记忆。 - 需要可恢复、可审计的长期工作流的生产团队,可部署 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?
查看各维度的扣分理由
证据显示: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 身份未知。
证据显示:README 和 pyproject.toml 中的 API 描述一致,测试文件 test_public_surface.py 验证了公共 API 的同步性,表明内部一致性良好。依赖在 pyproject.toml 中明确列出,且 CI 配置了构建和 lint 工作流,但未提供依赖可用性测试。失败消息方面,README 提到 NEEDS_REVIEW 状态,但未提供错误处理示例。扣分原因:失败消息的具体格式和错误处理策略未展示。
证据显示:README 明确描述了多种使用场景(单代理、多代理、多会话等),并提供了示例代码和示例目录,表明受众和场景覆盖良好。能力边界方面,README 区分了 FlowToolCall 和 BackendTool,并说明了沙箱和内存后端的可插拔性。触发精度方面,Selector 和 workflow 的触发条件描述较清晰,但未提供详细的触发规则。环境适配方面,支持本地、OpenSandbox、OpenViking 等后端,并提供了环境变量配置。扣分原因:触发精度和部分环境配置细节不足。
证据显示: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 和明确的维护者信息。
证据显示:README 提供了多个示例,输出为 Session 对象,易于使用。边际价值方面,OpenRath 提供了多代理多会话的独特范式,可能具有较高价值。成本效益方面,README 提到上下文复用和 token 消耗减少,但未提供基准测试。扣分原因:成本效益缺乏数据支持。
证据显示:README 中的声明(如生产特性)未提供具体实现或测试证据。跨来源验证方面,README 引用了 arXiv 论文和文档网站,但未提供其他独立来源。事实与推断分离方面,README 将设计理念和功能描述混合,未明确区分。扣分原因:声明缺乏可追溯性,且未提供独立验证。
- Publisher 身份未验证,需谨慎对待其来源。
- 安全特性(如权限控制、审计)在 README 中声明但未提供实现细节,需进一步审查代码。
- 依赖安全未提供漏洞扫描或锁定文件审查,建议检查 uv.lock 和依赖版本。
- 缺少 FAQ、CHANGELOG 和明确的维护者信息,可能影响长期维护。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
v2.0.0 OpenRath v2.0.0
发布说明摘录
OpenRath v2.0.0 OpenRath 2.0.0 将框架从进程内 Agent 工作流扩展为可部署的持久化多 Agent Runtime 与 Agent Server。本版本引入可恢复执行、受治理的副作用、人工中断、安全与租户边界,以及面向 PostgreSQL、Redis、S3 和 OpenTelemetry 的生产部署能力。  核心特性 持久化 Runtime - 显式编译模型 — @step、@router 编译为规范化执行计划与不可变 revision。 - 可恢复 Run — Events、Checkpoints、Interrupts、取消、截止时间、重试、租约 fencing 与队列恢复形成完整生命周期。 - 受控副作用 — Effect Ledger 保存结果和幂等键;无法安全判定的非幂等操作进入 NEEDS_REVIEW,避免盲目重放。 …在 GitHub 查看 ↗ -
发布说明摘录
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 查看 ↗ -
发布说明摘录
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?
Provider 更换模型供应商,同时保持 Session 和 Workflow 代码稳定。能否不接模型服务就先试用?
生产运行如何避免重复执行副作用?
NEEDS_REVIEW,而非被盲目重放。