qntx/ovo
Agent behavior that compiles
什么是 Ovo?
Ovo 是一个 Rust 库,提供一个可嵌入的、多代理运行时内核。它让宿主应用程序能够生成轻量级代理(称为 回合),这些代理可以运行用 Rhai 脚本语言编写的隔离工作流。运行时可配置为在进程内或在沙箱化的操作系统环境中运行(macOS Seatbelt 或 Linux Landlock),并包含一组内置策略,用于批准或拒绝操作。
你可能关心的原因
- 以代理为中心的设计 – 如果你在构建需要大量小型、独立的 AI 或自动化代理的系统(例如,聊天机器人编排、工具调用流水线,或 RAG 风格的代理),Ovo 为你提供了一个现成的内核来管理它们的生命周期。
- 安全优先 – 该库将 策略(代理被允许执行的操作)与 运行时 分离,并能强制执行操作系统级别的沙箱,从而降低恶意或有缺陷的代理对宿主造成影响的风险。
- 原生 Rust – 所有内容均用安全的 Rust 编写,因此你可以获得常规的性能和内存安全性保证。
- 可插拔后端 – 你可以插入 macOS Seatbelt 沙箱、Linux Landlock 辅助程序,或在测试时不使用沙箱运行。
核心概念
| 概念 | 描述 |
|---|---|
| 回合 | 代理执行的最小工作单元。回合由内核调度,并可通过 TurnOptions 策略进行批准/拒绝。 |
| TurnOptions | 决定回合如何被批准的配置(AutoApprove 用于测试,AlwaysDeny 用于受限主机,或自定义的 UI 门控)。 |
| 宿主 | 运行内核的周围环境。你可以创建一个 InProcessHost(纯 Rust,无操作系统沙箱)或使用 SandboxBackend 的 sandboxed_host。 |
| SandboxBackend | 抽象操作系统沙箱实现的 trait。实现包括 SeatbeltBackend(macOS)和 LandlockBackend(Linux)。 |
| Rhai 工作流 | 代理使用 Rhai 编写,Rhai 是一种轻量级嵌入式脚本语言。工作流是 日志记录 的,意味着操作可以被重放或检查。 |
快速入门(代码片段)
use std::sync::Arc;
use ovo::{AlwaysDeny, TurnOptions, sandboxed_host};
// 选择一个沙箱后端(示例:Linux 使用 Landlock 辅助程序)
let backend = Arc::new(ovo::LandlockBackend::with_helper()?);
// 创建一个沙箱宿主,将在受限制的目录中运行代理
let host = sandboxed_host(sampler, backend, jail_path)?;
// TurnOptions 控制宿主如何请求用户批准操作。
let opts = TurnOptions::for_host(Arc::new(AlwaysDeny)); // 生产环境请替换为 UI 门控
sampler– 为代理提供随机性的对象(例如,PRNG)。jail_path– 将用作文件系统沙箱的目录。AlwaysDeny是一个安全的默认值;在实际部署中,你会提供一个由 UI 驱动的门控,询问人类或策略引擎是否允许该回合继续。
功能矩阵
| 特性标志 | 添加的内容 | 沙箱支持 |
|---|---|---|
default (runtime + workflow) |
核心内核 + Rhai 工作流引擎;链接 ovo-sandbox 以实现 TrustedExecution(默认无沙箱) |
– |
| toolkit | 添加受限制的文件系统 shell(cwd 受限) |
需要启用 seatbelt(macOS)或 landlock(Linux) |
| sandbox | 暴露策略类型和 SandboxBackend trait |
– |
| seatbelt | 启用 macOS /usr/bin/sandbox-exec 沙箱 |
仅 macOS |
| landlock | 通过 ovo-landlock 辅助二进制文件启用 Linux Landlock 沙箱 |
仅 Linux(辅助程序必须在 PATH 中或通过 OVO_LANDLOCK_HELPER 指定) |
| full | 包含工具包、状态管理、观察钩子,以及可选的 OpenAI/Ollama 集成 | 否 – 仍需显式指定沙箱后端 |
| --all-features | 编译所有内容(full + seatbelt + landlock) |
编译时后端;Linux 仍需辅助二进制文件 |
成熟度与稳定性
- 当前系列为 0.9.x,标记为 预稳定。可能出现破坏性变更而无兼容层,因此应将其视为快速迭代的库,而非 1.0 稳定 API。
- 该 crate 已发布于 crates.io,名称为
ovo(此前名为machi)。 - 文档主要位于 README 和生成的 Rust 文档中;目前尚无独立教程。
许可证
Ovo 采用双重许可:MIT 和 Apache-2.0,让你可以根据项目需求灵活选择最宽松的许可证。
谁在维护它?
它是 QuantX(https://qntx.org)的开源项目,一个专注于量化和 AI 驱动工作的开源工具的社区。
TL;DR
Ovo = 一个 Rust 库,用于运行许多小型、沙箱化的代理(通过 Rhai 脚本),并在策略与执行之间保持清晰分离。它面向需要安全、可嵌入的多代理运行时且熟悉 Rust 的开发者。
相关
- 项目
- 项目
- 项目
- 项目
- 项目