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,無作業系統沙盒)或使用 SandboxBackend 的 sandboxed_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 以 MIT 和 Apache-2.0 雙重授權,讓你有彈性選擇最適合專案的寬鬆授權條款。
誰在維護它?
這是 QuantX(https://qntx.org)的開源專案,一個專注於量化與 AI 驅動工作的開源工具的社群。
TL;DR
Ovo = 一個用於執行許多小型、沙盒化代理(透過 Rhai 腳本)的 Rust 庫,並明確分離策略與執行。它針對需要安全、可嵌入的多代理執行時,且熟悉 Rust 的開發者而設計。
相關
- 專案
- 專案
- 專案
- 專案
- 專案