qntx/ovo

Agent behavior that compiles

什麼是 Ovo

Ovo 是一個 Rust 庫,提供可嵌入的多代理執行時核心。它讓主應用程式能夠啟動輕量級代理(稱為 turns),這些代理可以執行以 Rhai 腳本語言撰寫的隔離工作流程。執行時可配置為在程序內執行,或在沙盒化的作業系統環境中執行(macOS Seatbelt 或 Linux Landlock),並內建一組基本的策略,用於批准或拒絕動作。


為什麼你可能會在意

  • 以代理為中心的設計 – 如果你正在建構需要許多小型、獨立的 AI 或自動化代理的系統(例如,聊天機器人協調、工具呼叫流程,或 RAG 模式的代理),Ovo 為你提供了可立即使用的核心來管理它們的生命周期。
  • 安全至上 – 此庫將 策略(代理允許執行的動作)與 執行時 分離,並能強制執行作業系統層級的沙盒,降低惡意或有錯誤的代理影響主應用程式的風險。
  • 原生 Rust – 所有內容皆以安全的 Rust 寫成,因此你可獲得常見的效能與記憶體安全性保證。
  • 可插入的後端 – 你可以插入 macOS Seatbelt 沙盒、Linux Landlock 助手,或在測試時不使用沙盒執行。

核心概念

概念 描述
Turn 代理執行的最小工作單位。Turns 由核心排程,並可透過 TurnOptions 策略批准或拒絕。
TurnOptions 決定如何批准一個 turn 的設定(AutoApprove 用於測試,AlwaysDeny 用於封鎖的主機,或自訂的 UI 關卡)。
Host 執行核心的周圍環境。你可以建立 InProcessHost(純 Rust,無作業系統沙盒)或使用 SandboxBackendsandboxed_host
SandboxBackend 抽象作業系統沙盒實作的特徵。實作包括 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 是一個安全的預設值;在實際部署時,你會提供一個由使用者或策略引擎驅動的關卡,以決定是否允許 turn 繼續。

功能矩陣

功能標籤 加入的功能 沙盒支援
default (runtime + workflow) 核心核心 + Rhai 工作流程引擎;連結 ovo-sandbox 以支援 TrustedExecution(預設無沙盒)
toolkit 加入受監管的檔案系統 shell(cwd 受監管) 需要啟用 seatbelt(macOS)或 landlock(Linux)
sandbox 公開策略類型與 SandboxBackend 特徵
seatbelt 啟用 macOS /usr/bin/sandbox-exec 沙盒 僅支援 macOS
landlock 透過 ovo-landlock 助手二進位檔啟用 Linux Landlock 沙盒 僅支援 Linux(助手指令必須存在於 PATH 或透過 OVO_LANDLOCK_HELPER 指定)
full 結合 toolkit、狀態管理、觀察鉤子,以及可選的 OpenAI/Ollama 整合 – 仍需明確指定沙盒後端
--all-features 編譯所有功能(full + seatbelt + landlock 編譯時後端;Linux 仍需助手指令二進位檔

成熟度與穩定性

  • 目前系列為 0.9.x,標記為 預穩定。可能會出現不具相容性的破壞性變更,因此請將其視為快速演進的庫,而非 1.0 穩定 API。
  • 套件已發佈於 crates.io,名稱為 ovo(先前名為 machi)。
  • 文件主要位於 README 和生成的 Rust 文件中;目前尚無獨立的教學文件。

授權

Ovo 以 MITApache-2.0 雙重授權,讓你有彈性選擇最適合專案的寬鬆授權條款。


誰在維護它?

這是 QuantXhttps://qntx.org)的開源專案,一個專注於量化與 AI 驅動工作的開源工具的社群。


TL;DR

Ovo = 一個用於執行許多小型、沙盒化代理(透過 Rhai 腳本)的 Rust 庫,並明確分離策略與執行。它針對需要安全、可嵌入的多代理執行時,且熟悉 Rust 的開發者而設計。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案