Command Palette
Search for a command to run...
OpenRath:面向 Agent 系统的会话中心运行时状态
OpenRath:面向 Agent 系统的会话中心运行时状态
Fukang Wen Zhijie Wang Ruilin Xu
摘要
现代 agent 系统通常面临运行时状态碎片化的问题:对话记录、工具执行结果、记忆事件、工作区部署、分支溯源与重放证据被分别记录,导致难以检查或复现。OpenRath 通过一种类似 PyTorch 的编程模型来解决多 agent、多会话系统中的这一问题。该类比关注的是核心一等运行时抽象的作用,而非张量计算。其核心抽象是 Session,即在 agents 与 workflows 之间传递的运行时值。Session 具备可分支、可检查、可重放、感知后端以及可组合的特性。它记录对话片段、沙箱部署、血缘元数据、token 使用量、待处理任务以及工具证据,同时定义记忆交互在运行时记录中的接入点。由于该状态由程序执行中使用的同一值承载,fork、merge 与 replay 成为显式的运行时操作,而非从外部轨迹中重建的状态。OpenRath 进一步定义了 Sandbox、Tool、Agent、Memory、Workflow 与 Selector,其中 Selector 将控制流转化为由运行时路由的决策。本报告阐述了该编程模型、架构、已审计的里程碑以及证据协议。其主张仅限于受控的运行时属性,而广泛的定量比较、在线提供者的质量、可选后端的可用性以及记忆质量则留待后续评估。核心论点是,Session 为 agent 系统提供了一种用于可审计组合的一等运行时值。
一句话总结
作者提出了 OpenRath,这是一种类 PyTorch 的编程模型,它将分散的 agent 运行时状态集中到一个一等 Session 抽象中,将对话片段、工具证据和血缘元数据嵌入可组合的运行时值中,从而实现显式的分支、合并与重放;同时,其当前声明仅限于受控的运行时属性,有待更广泛的定量评估。
核心贡献
- OpenRath 引入了一种以 Session 为核心的编程模型。Session 是一种一等运行时值,它将对话片段、工具输出、沙箱部署位置以及血缘元数据整合为一个单一的可组合对象,并在 agent 执行过程中流转。
- 该框架通过将分支、合并和重放视为 Session 上的显式运行时操作,取代了外部轨迹重建。专用的 Selector 组件基于该运行时状态路由控制流,确保内存交互和工具调用保持可审计,而无需依赖控制器侧的约定。
- 系统将 token 使用情况、待处理任务以及内存操作记录为 Session 上的显式运行时事件,而非将其隐藏于提示词或外部日志中。该架构支持结构化的证据协议与经过审计的里程碑系统,从而实现确定性重放与系统化调试。
引言
随着多 agent 系统从孤立演示向复杂、长时间运行的工作流过渡,保持对工具、内存及执行分支中运行时状态的清晰视图,已成为调试、审计与系统评估的关键。现有框架和运行时层通常孤立地处理编排、追踪或内存管理,往往将中间状态埋藏于控制器代码或框架特定的对象中。这种碎片化掩盖了执行路径,使得重建决策、审计溯源或可靠地重放运行变得困难。作者通过引入 OpenRath 填补了这一空白,该框架提出将 Session 作为一等运行时状态对象。这一连接层将对话历史、工具效应和内存操作保留在单一的可分支且可检查的结构中,实现了跨 agent 与工作流的无缝状态传输,而无需强制现有基础设施采用不兼容的表示形式。
数据集
• 数据集构成与来源: 作者使用了一套精心整理的现有 agent 基准测试与模拟环境集合,涵盖交互式任务、软件工程、终端操作以及 Web 或桌面工作流。
• 子集详情与筛选: 评估套件包括用于交互式设置的 AgentBench 与 τ-bench,用于软件工程的 SWE-bench 及其配套的 SWE-agent 与人工筛选的 SWE-bench Verified 子集,用于终端任务的 TerminalBench 与 TerminalWorld,以及广泛的 Web 与具身环境,如 WebArena、VisualWebArena、WorkArena、OSWorld、WebShop、Mind2Web、ALFWWorld、ScienceWorld、GAIA 与 TheAgentCompany。特定子集应用了针对性约束,例如 τ-bench 中的数据库状态验证以及 SWE-bench Verified 划分中的人工策展。
• 数据使用与处理: 该集合并非用作训练语料,而是作为交互式评估框架。作者利用这些环境在真实场景中衡量 agent 结果,同时优先考虑轨迹的可检查性与可重放性。该方法将可复现的执行路径视为可靠性能评分的基础要求。
• 其他处理详情: 作者未应用传统的训练集划分、混合比例或裁剪策略。相反,该流水线专注于运行时状态追踪与轨迹验证,以确保评估期间 agent 行为的透明性与可验证性。
方法
作者将 OpenRath 介绍为一种编程模型,旨在解决现代 agent 系统中运行时状态碎片化的问题。该框架未将对话记录、工具日志、内存更新与分支溯源视为独立的旁路通道,而是将这些效应提升为单一的一等运行时值,即 Session。请参阅下方的框架图,直观对比传统循环分散状态与所提出的 Session 边界。
该设计确保 Session 具备可分支、可检查、可重放及后端感知的特性。它携带对话片段、沙箱部署位置元数据、血缘记录、token 使用情况、待处理任务以及工具证据。通过将此类状态附加于程序执行所用的值上,分支、合并与重放等操作成为显式的运行时步骤,而非从外部轨迹重建的状态。
为构建 agent 程序,作者采用了一种受 PyTorch 启发的编程模型。该类比侧重于可组合计算的架构接口,而非张量数学。在此范式下,一个中心值流经暴露统一转换契约的可复用模块。该框架定义了一组紧凑的运行时对象词汇表,每个对象边界清晰,但保持相同的输入输出形状。
在此映射下,Session 充当流转值,类似于张量。Agent 模块充当可复用转换单元,类似于神经网络层,遵循前向映射契约。Workflow 充当组合容器,Sandbox 处理显式部署,Memory 管理持久化的 agent 绑定状态,Tool 定义可执行函数。控制流由 Selector 对象动态路由,该对象读取当前 Session 以决定下一步,确保分支与循环保持为可检查的运行时决策,而非硬编码逻辑。
运行时架构规定了 Session 在穿越 agent、工具、沙箱与存储工件时如何保持可检查性。OpenRath 未为每个阶段引入独立的运行时对象,而是采用简洁的生命周期。Session 从用户或 agent 上下文初始化,必要时部署至执行后端,由 agent 或工作流转换,为并行工作而分支,经审核后合并,并最终持久化以供后续重放。
分支操作复制状态,同时保留父子关系。合并操作连接兼容的 Session 并记录双端父节点,兼容性检查延伸至沙箱句柄,以确保部署一致性。该方法将部署视为运行时图不可分割的一部分。
作为 agent 运行时栈中的跨层对象,Session 连接了专用层,同时不吸收其职责。该框架通过将多 agent API、图运行时、追踪 SDK、工具协议及真实环境评估工具集的效应暴露于单一 Session 对象内,实现与它们的集成。
这一生态角色使 OpenRath 能够与现有基础设施共存。图状态为调度器记录执行检查点,追踪跨度为观察者记录观测事件,而 Session 则作为供 agent 程序自身写入的实时值。证据直接附加于该值上,使得分支、合并、交接与重放操作能够作用于普通程序值。
工具执行遵循分层路径,将运行时状态与执行后端分离。模型与 FlowToolCall 模式交互,而 Session 循环结合内置工具与用户工具,按名称解析调用。参数针对 Session 进行验证,有效载荷则通过活跃沙箱分发至后端。副作用、标准输出、工件与错误作为工具结果块返回,而非消散于控制器流程中。内存交互同样受到边界约束,检索与提交操作被暴露为更新 Session 记录的可见运行时事件。
在多 agent 与多 Session 设计中,该框架保持一致的边界。Agent 充当可复用层,工作流充当可复用组合,而流转的运行时值仍为 Session。这防止了在从单 agent 脚本扩展至嵌套 agent 团队时引入隐藏的消息总线或仅限控制器的追踪。工程契约确保交接、路由与组合完全依赖于读取与返回 Session 状态,从而在复杂的多 agent 工作流中保留确定性血缘导出、本地沙箱数据包与工作流转录。
实验
评估利用确定性证据为一系列有限声明提供了 Session 中心化运行时对象的支持,为技术报告确立了清晰的范围边界。这些定性发现将已实现的运行时语义与可选集成、未经验证的功能(如广泛的基准优势或本地内存验证)以及未解决的安全风险区分开来。该框架要求在任何边界扩展之前提供严谨的支撑证据,确保所有声明均与文档工件保持严格一致。