Unreal Agent
来自 Unreal Labs 的异步优先 agent harness。
- harness/ — 库本体。
- cmd/ — 使用该库的可执行文件。
- benchmarks/ — 基准测试运行器。
术语表
- 输入:带有调用方提供的全局唯一 ID 的事件,该 ID 在重复投递时保持稳定。
- 收件箱:会话范围内的内存去重机制,用于处理外部输入、控制输入和崩溃恢复输入。
- 会话:仅追加的持久化历史记录,支持分叉。
- LLM 回合:由协调器管理的一次逻辑 LLM 请求的完整序列。
- 工具:由 schema 描述并绑定到翻译器的能力。
- 工具调用:模型发起的使用工具的请求。
- 工具翻译器:校验工具调用并将其转换为一个或多个操作。它在协调器的事件循环上同步运行,不得执行 I/O 或阻塞循环。
- 工具调用状态:转换结果:校验错误或对已提交操作的引用。操作执行状态单独跟踪;翻译器将其格式化为面向模型的结果。
- 操作:由工具翻译器生成的、用于异步执行的可序列化工作描述。建议实现使用现有的 primitives。
组件
| 组件 | 职责 |
|---|---|
| 会话收件箱 | 易失性、会话范围的输入幂等性。 |
| 协调器 | 持久化已接受的输入,运行 LLM 回合,通过注册表解析工具翻译器,并分发已提交的操作。 |
| 会话存储 | 持久化规范的会话历史和操作状态;支持恢复与分叉;将工具调用状态与操作原子性地记录。 |
| 上下文构建器 | 在内存中有状态地组装模型输入。返回模型输入以及被省略、截断或压缩内容的记录。不执行 I/O,也不依赖持久化。 |
| LLM 适配器 | 将准备好的模型输入发送给提供商并返回规范化的完整响应。负责认证、取消和提供商错误。 |
| 工具注册表 | 持有固定的 Bash、ViewImage 和 skill-use 定义及其翻译器;暴露主机所选的集合。 |
| 工具翻译器 | 校验工具调用并生成其状态和操作。将记录的调用状态和准备好的操作输出格式化为模型结果。不执行 I/O。 |
| 操作管理器 | 用于持久化操作的 Actor 运行时。本地实现可替换。 |
扩展 harness
Harness 组件是可组合的,并鼓励对其接口进行替代实现。
我们打算保持以下不变量:
- 会话存储条目是可序列化的,且存储格式带有版本号。
- 我们将尽力保持会话的向后兼容性。不支持的会话版本在恢复时始终会引发明确的错误。
- 操作带有版本号且始终可序列化。
例如,代理操作管理器可以将序列化的操作发送给运行在远程沙箱内进程中的本地操作管理器,从而使工具能够在那里执行。