内容
<p align="center">
<img src="images/ordo-logo.png" alt="Ordo Logo" width="180" />
</p>
<h1 align="center">Ordo</h1>
<p align="center">
<strong>人工智能代理的确定性决策层 — 大型语言模型(LLM)提出建议,您的规则决定结果。</strong>
</p>
<p align="center">
一个使用Rust编写的、编译时即时(JIT)编译的规则引擎,适用于亚毫秒级的应用场景。给您的AI代理设置可测试的防护措施。
</p>
<p align="center">
<a href="https://ordo-engine.github.io/Ordo/"><img src="https://img.shields.io/badge/演示-游乐场-brightgreen" alt="游乐场" /></a>
<img src="https://img.shields.io/badge/Rust-1.83%2B-orange?logo=rust" alt="Rust" />
<img src="https://img.shields.io/badge/许可证-MIT-blue" alt="许可证" />
<a href="https://www.npmjs.com/package/@ordo-engine/cli"><img src="https://img.shields.io/npm/v/@ordo-engine/cli?label=npm&color=cb3837" alt="npm" /></a>
<a href="https://discord.gg/Y529FkArhh"><img src="https://img.shields.io/badge/加入-Discord-7289da?logo=discord&logoColor=white" alt="Discord" /></a>
</p>
<p align="center">
<img src="images/guard-demo.gif" alt="ordo guard blocking a destructive agent command — deny, ask, allow — with a reason" width="760" />
</p>
---
大型语言模型(LLM)具有不确定性:相同的询问可能会得到两个不同的答案。对于撰写文本来说,这没问题,但当代理触及金钱、数据或系统时,这可能会带来危险。Ordo是决定代理行为的层 — **允许 / 拒绝 / 请求** — 基于可版本控制、可测试和可审计的规则。代理提出行动建议;Ordo决定结果。
## 5分钟内为您的编码代理设置防护
当前最需要解决的问题是:为编码代理设置确定性的防护措施。`ordo guard`运行每个Claude Code工具调用,通过本地规则进行决策。
```bash
npx @ordo-engine/cli guard init # 初始化策略 + 连接Claude Code钩子
```
现在您的代理受到限制。当它尝试执行破坏性操作时,Ordo会阻止它 — 并提供原因:
```text
$ (代理尝试) rm -rf ./build
⛔ 被策略拒绝:策略[policy@1.0.0 · DENY]阻止了破坏性shell命令
```
策略是一个普通的Ordo项目,位于`.ordo-guard/` — 因此您的防护措施具有测试套件:
```bash
ordo guard test # ✔ 阻止rm -rf ✔ 在git push之前请求 ✔ 允许只读git …
ordo guard log # 每个决策,带有时间戳和审计日志
```
编辑`.ordo-guard/rulesets/policy.json`中的普通表达式(`tool == 'Bash' && command contains 'terraform destroy'`),添加测试并发布。 → **[防护文档](https://ordo-engine.github.io/Ordo/docs/en/platform/guard)**
---
## 同一引擎,不同决策场景
防护措施是一种引擎的使用方式。相同的规则 — 亚毫秒级、JIT编译 — 可以作为嵌入式调用、HTTP/gRPC服务或通过WASM在浏览器中运行,并且一个完整的**平台 + 可视化工作室**允许业务团队在无需接触代码的情况下编写和治理规则。
**引擎** — 亚毫秒级规则执行,JIT编译(Cranelift),可在任何地方运行(HTTP · gRPC · WASM · CLI)。
**工作室** — 可视化流程编辑器、决策表编辑器、跟踪测试、版本历史。
**平台** — 组织工作空间、项目中心、服务器集群、发布中心、测试和治理。
<p align="center">
<img src="images/screenshots/first_page.png" alt="Ordo Platform Dashboard" width="100%" />
</p>
---
## 为什么选择Ordo?
| | **Ordo** | OPA | Drools | json-rules-engine |
|---|---|---|---|---|
| JIT编译 | ✅ Cranelift | ❌ | ❌ | ❌ |
| 可测试的代理防护 | ✅ `ordo guard` | ⚠️ 仅限策略 | ❌ | ❌ |
| 编写模型 | 可视化流程 + 决策表 | Rego策略代码 | DRL / DMN + Business Central | JSON规则DSL |
| 内置Web工作台 | ✅ 工作室 | 游乐场 / API | ✅ Business Central | ❌ |
| 浏览器 / Wasm目标 | ✅ 原生 | ✅ 策略到Wasm | ❌ | ✅ 浏览器JS |
| 部署 | 单个二进制或托管平台 | 二进制、边车或服务 | JVM应用、KIE服务器、Business Central | Node/浏览器JS库 |
比较关注一流的文档编写和部署能力,而不是跨项目基准测试声明。
---
## 更多运行方式
### 以文件形式编写规则(本地、离线)
```bash
npx @ordo-engine/cli init my-rules && cd my-rules
ordo validate && ordo test # 亚秒级,无需网络
ordo trace loan-approval --input '{"amount":5000}'
```
### 尝试工作室(可视化,5分钟)
```bash
docker compose up # 平台 + 引擎 + 工作室
# 打开 http://localhost:5173
```
或使用托管的 **[实时游乐场](https://ordo-engine.github.io/Ordo/)** — 无需安装。
### 引擎作为服务
```bash
docker run -d -p 8080:8080 ghcr.io/pama-lee/ordo:latest
# 创建规则
curl -X POST http://localhost:8080/api/v1/rulesets \
-H "Content-Type: application/json" \
-d @examples/discount.json
# 执行
curl -X POST http://localhost:8080/api/v1/rulesets/discount/execute \
-d '{"input": {"user": {"vip": true}}}'
# → {"code": "VIP", "message": "20% 折扣"}
```
### 嵌入编辑器
```bash
npm install @ordo-engine/editor-vue # Vue 3
npm install @ordo-engine/editor-react # React
```
### 从您的应用调用
```bash
go get github.com/pama-lee/ordo-go # Go
pip install ordo-sdk # Python
# Java(Maven):com.ordoengine:ordo-sdk-java
```
---
## 平台功能
### 规则编写
- **流程编辑器** — 带有实时WASM执行的拖拽式决策树
- **决策表** — 类似电子表格的多条件规则
- **模板** — 发布预建的规则集(例如`ecommerce-coupon`),团队可在单击内克隆
### 平台工作空间
- **组织和项目中心** — 从一个仪表板管理组织、项目、成员、角色和项目工作空间
- **服务器集群** — 注册连接的Ordo服务器,按环境分组,并按实例定位发布滚动
- **发布中心** — 创建发布请求,跟踪分阶段滚动、批准、重试和回滚历史
### 治理
- **事实目录** — 注册每个输入字段,包含类型、来源、延迟和空策略
- **决策合约** — 按规则集输入/输出模式;自动生成测试框架
- **版本历史** — 每个规则集的完整快照日志;一键回滚
- **测试和诊断** — 运行平台本地草稿测试,检查预期/实际差异,回放执行路径,并审查决策表命中
### 引擎
- **1.63 µs** 解释器 · **50–80 ns** JIT(Cranelift)· **54k QPS** HTTP单线程
- 多租户,WAL崩溃恢复,热加载,NATS JetStream同步
- 数据过滤器API — 将规则逻辑推送到SQL / MongoDB `$match` / JSON谓词
- 编译的`.ordo`二进制格式,带有ED25519签名进行规则保护
---
## 项目结构
```
ordo/
├── crates/
│ ├── ordo-core/ # 规则引擎 + JIT编译器
│ ├── ordo-server/ # HTTP/gRPC API服务器
│ ├── ordo-platform/ # 组织/项目/模板/测试管理层
│ ├── ordo-cli/ # CLI — 防护、初始化、验证、测试、跟踪、MCP
│ ├── ordo-wasm/ # WebAssembly绑定
│ ├── ordo-proto/ # gRPC定义
│ └── ordo-derive/ # TypedContext派生宏
├── ordo-editor/
│ ├── packages/ # @ordo-engine/editor-{core,vue,react,wasm}
│ └── apps/
│ ├── studio/ # 平台工作室(Vue 3 + TDesign)
│ ├── playground/ # 实时演示
│ └── docs/ # VitePress文档
├── sdk/ # 官方Go / Python / Java客户端SDK
└── scripts/ # sync-version.sh, 基准测试
```
---
## 许可证
MIT — 请参阅 [LICENSE](LICENSE)。
<p align="center"><sub>Rust构建 · <a href="https://discord.gg/Y529FkArhh">Discord</a> · <a href="https://ordo-engine.github.io/Ordo/">文档</a></sub></p>