这个项目能做什么

# Omnia:轻量级 WebAssembly 运行时 Omnia 是一个用于 WebAssembly(WASI)组件的轻量级、安全运行时。它为 [wasmtime](https://github.com/bytecodealliance/wasmtime) 提供了一个简洁、易用的封装,使您能够轻松地将基于主机的服务(如 HTTP、消息传递、键值存储和模型补全)集成到 WASI 应用程序中。 虽然 Omnia 可以独立使用,但它主要设计为 **Augentic 的 Agent Skills** 的运行时。它确保代理生成的代码在安全、沙箱化的环境中运行,同时仍能受控地访问必要的基础设施。 ## 为什么选择 Omnia? - **默认安全**:所有访客代码都在严格的 WebAssembly 沙箱中运行。能力(网络、文件系统、模型访问)被显式授予。 - **开箱即用**:内置对常见 WASI 接口的支持——HTTP、键值存储、消息传递、SQL、Blob 和文档存储、机密、身份、WebSocket、可观测性和模型补全——每个接口都配有零配置的默认后端。 - **开发者友好**:类型化的显式访客 API 和 `runtime!` 主机宏使边界保持可见,无需重复的传输胶水代码。 - **可插拔架构**:无需更改或重新编译访客代码即可切换后端实现(例如,从内存存储切换到 Redis)。生产后端位于姊妹仓库 [`omnia-backends`](https://github.com/augentic/omnia-backends) 中。 - **多访客部署**:一个运行时可以托管多个访客,支持声明式路由、工作区挂载和主机中介的访客间链接,全部由 TOML 清单驱动。 ## 快速开始 构建一个访客并使用示例主机运行时运行它: ```bash cargo build --example http-wasm --target wasm32-wasip2 RUST_LOG=info cargo run --example http -- run ./target/wasm32-wasip2/debug/examples/http_wasm.wasm ``` 主机运行时只需一次宏调用——每个条目将一个 WASI 接口与实现它的后端配对: ```rust,ignore use omnia_wasi_http::{HttpDefault, WasiHttp}; use omnia_wasi_keyvalue::{KeyValueDefault, WasiKeyValue}; use omnia_wasi_otel::{OtelDefault, WasiOtel}; omnia::runtime!({ hosts: { WasiHttp: HttpDefault, WasiOtel: OtelDefault, WasiKeyValue: KeyValueDefault, } }); ``` ## 文档 **[从文档索引开始](docs/README.md)**——提供从首次运行到完整部署的渐进式路径: - [入门指南](docs/getting-started.md) — 首次构建和运行,约 10 分钟 - 操作指南 — [编写访客](docs/guides/writing-guests.md)、[组合运行时](docs/guides/composing-a-runtime.md)、[多访客部署](docs/guides/multi-guest-deployments.md)、能力深入探讨([SQL](docs/guides/sql.md)、[文档](docs/guides/document-store.md)、[消息传递](docs/guides/messaging.md)、[模型/MCP](docs/guides/model-completions.md))、[生产后端](docs/guides/production-backends.md)、[部署](docs/guides/deployment.md)、[调优](docs/guides/performance-tuning.md) - [架构](docs/Architecture.md)、[安全模型](docs/security-model.md) 和 [术语表](docs/glossary.md) - 参考 — [WASI 接口](docs/reference/wasi-interfaces.md)、[模型接口](docs/reference/model.md)、[CLI](docs/reference/cli.md)、[配置](docs/reference/configuration.md) - [故障排除](docs/troubleshooting.md) [`examples/`](examples/README.md) 目录包含每个接口的完整可工作的访客 + 运行时配对示例。 ## Crates | Crate | 描述 | | ----------------------------------------------- | ------------------------------------------------------------------------------------------ | | [`omnia`](crates/omnia) | 组合根——组装、生命周期、可选 crate 组合和 `runtime!` | | [`omnia-core`](crates/omnia-core) | 实时运行时 SDK——wasmtime 引擎、注册表、分发、存储和遥测 | | [`omnia-plugin`](crates/omnia-plugin) | `omnia:plugins/loader` 能力——加载器主机、获取策略和插件存储;由 omnia 的 `plugin` 特性选择 | | [`omnia-cli`](crates/omnia-cli) | 叶子 `run` 语法——clap 加 argv 优先级;由 omnia 的 `cli` 特性选择 | | [`omnia-sdk`](crates/omnia-sdk) | 访客 SDK——`Handler`/`Client`/`Context`、HTTP/消息传递路由器和命令门面、错误、能力和 MCP 支持 | | [`omnia-guest-macros`](crates/guest-macros) | 访客的 `#[instrument]` 可观测性属性 | | [`omnia-host-macros`](crates/host-macros) | 用于主机运行时生成的 `runtime!` 过程宏 | | [`omnia-wasi-blobstore`](crates/wasi-blobstore) | wasi:blobstore 主机和访客绑定 | | [`omnia-wasi-config`](crates/wasi-config) | wasi:config 主机和访客绑定 | | [`omnia-wasi-docstore`](crates/wasi-docstore) | 文档存储主机和访客绑定 | | [`omnia-wasi-http`](crates/wasi-http) | wasi:http 主机和访客绑定 | | [`omnia-wasi-identity`](crates/wasi-identity) | 身份/OAuth 主机和访客绑定 | | [`omnia-wasi-keyvalue`](crates/wasi-keyvalue) | wasi:keyvalue 主机和访客绑定 | | [`omnia-wasi-messaging`](crates/wasi-messaging) | 消息传递主机和访客绑定 | | [`omnia-wasi-model`](crates/wasi-model) | omnia:model 补全主机和访客绑定 | | [`omnia-wasi-otel`](crates/wasi-otel) | OpenTelemetry 主机和访客绑定 | | [`omnia-wasi-sql`](crates/wasi-sql) | wasi:sql 主机和访客绑定 | | [`omnia-wasi-vault`](crates/wasi-vault) | 机密保险库主机和访客绑定 | | [`omnia-wasi-websocket`](crates/wasi-websocket) | WebSocket 主机和访客绑定 | ## 许可证 MIT OR Apache-2.0