这个项目能做什么
# 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
评论
0 评分人数达到10人后显示
登录后参与讨论。