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,无操作系统沙箱)或使用 SandboxBackendsandboxed_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 采用双重许可:MITApache-2.0,让你可以根据项目需求灵活选择最宽松的许可证。


谁在维护它?

它是 QuantXhttps://qntx.org)的开源项目,一个专注于量化和 AI 驱动工作的开源工具的社区。


TL;DR

Ovo = 一个 Rust 库,用于运行许多小型、沙箱化的代理(通过 Rhai 脚本),并在策略与执行之间保持清晰分离。它面向需要安全、可嵌入的多代理运行时且熟悉 Rust 的开发者。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目