内容
<p align="center">
<img src="assets/aingle.svg" alt="AIngle(TM)" width="280"/>
</p>
<p align="center">
<strong>智能应用的语义基础设施</strong>
</p>
<p align="center">
<em>使企业能够构建安全、可扩展和智能的分布式系统</em>
</p>
<p align="center">
<a href="https://github.com/ApiliumCode/aingle/actions/workflows/ci.yml"><img src="https://github.com/ApiliumCode/aingle/actions/workflows/ci.yml/badge.svg" alt="构建状态"></a>
<a href="./LICENSE"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg" alt="许可证"></a>
<a href="https://www.rust-lang.org/"><img src="https://img.shields.io/badge/rust-1.83%2B-orange.svg" alt="Rust"></a>
<a href="https://github.com/ApiliumCode/mayros"><img src="https://img.shields.io/badge/Powers-Mayros%20AI-blueviolet?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAyQzYuNDggMiAyIDYuNDggMiAyIDEwcjQuNDggMTAgMTAgMTBzLTEwIDQuNDgtMTAgMTAgLTEwIDQuNDggMTAgMTAgMTAzIDAgc2IxLjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY2IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0x.M34IDMgMy0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMy0xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMgMyA0IDAgc2M1LjY6IDAgMyAxLjM0IDMgMy10xLjM0IDMgMy10xLjM0IDMg我的
<p align="center">
<a href="#enterprise-solutions">解决方案</a> •
<a href="#key-capabilities">核心能力</a> •
<a href="#getting-started">快速入门</a> •
<a href="https://apilium.com">官网</a>
</p>
---
## 为什么选择 AIngle?
现代企业面临着严峻的挑战:**传统系统无法满足 IoT、实时合规和智能自动化的需求**。传统数据库太慢。区块链太复杂。单独的解决方案会造成信息孤岛。
**AIngle 与众不同**。
基于**语义有向无环图(Directed Acyclic Graph)**构建,AIngle 将分布式账本、图数据库和边缘计算的优势结合成一个统一的平台。
### 结果如何?
| 传统方法 | 使用 AIngle |
|-----------|-------------|
| 需要数周检测合规性违规 | **实时检测** |
| 员工离职导致知识丢失 | **知识被捕获并可搜索** |
| IoT 设备无法运行复杂逻辑 | **边缘智能全覆盖** |
| 数据、逻辑和隐私的独立系统 | **统一平台** |
---
## 企业解决方案
### 🔍 深度上下文 - 保留机构知识
**问题:** 当资深开发者离职时,他们带走了关键知识。新团队成员能看到**是什么**代码做了什么,但不知道**为什么**做出了这些决定。这造成了技术债务和重复错误。
**解决方案:** 深度上下文直接在开发过程中捕获架构决策、设计原理和语义关系。
**商业影响:**
- ✅ **新员工 onboarding 速度提升 50%**
- ✅ **减少因决策不明而产生技术债务**
- ✅ **审计就绪的决策历史**
- ✅ **可搜索的知识库,随代码库一起成长**
```
"为什么我们选择微服务架构?"
→ 深度上下文返回原始决策、考虑过的替代方案和 2 年前的业务背景。
```
[探索深度上下文 →](examples/deep_context/)
---
### 🏦 语义合规 - 实时 AML/KYC
**问题:** 金融机构每年审查客户。如果一个实体今天出现在制裁名单上,可能需要数周才能检测到。手动流程会造成合规漏洞和监管风险。
**解决方案:** AIngle 的语义合规实时监控制裁名单,使用图分析检测隐藏关系,并使用模糊匹配捕捉名称变体。
**商业影响:**
- ✅ **制裁名单变化时立即检测**
- ✅ **通过图分析发现隐藏网络**
- ✅ **减少假阳性,提升语义匹配准确性**
- ✅ **不可篡改的审计轨迹,用于监管证明**
```
传统方式:年度审查 → 365 天暴露窗口
AIngle:实时同步 → 分钟级检测
```
[探索语义合规 →](examples/semantic_compliance/)
---
### 📡 边缘智能 - 物联网无妥协
**问题:** 物联网设备资源有限,需要做出智能决策。云端交互增加延迟。连接性不保证。您需要安全、协调和智能行为。
**解决方案:** AIngle Minimal 在内存不足 1MB 的设备上运行,提供完整的 DAG 功能、对等网络 gossip 和嵌入式边缘智能。
**商业影响:**
- ✅ **亚秒级决策,无云依赖**
- ✅ **设备端自动异常检测**
- ✅ **设备间 mesh 组网**
- ✅ **零基础设施成本的设备间通信**
**支持协议:** CoAP • mDNS • Gossip • DTLS
[探索物联网能力 →](docs/tutorials/iot-sensor-network.md)
---
## 核心能力
<table>
<tr>
<td width="50%">
### 🧠 语义图引擎
原生图数据库,支持 SPARQL 查询。建模复杂关系,进行模式匹配和遍历连接 - 所有操作无需外部依赖。
</td>
<td width="50%">
### 🔐 零知识隐私
证明事实而无需透露数据。使用 Schnorr 签名、Pedersen 承诺和 Bulletproofs。适用于身份验证和机密交易。
</td>
</tr>
<tr>
<td width="50%">
### ⚡ Kaneru
统一多智能体执行系统。强化学习(Q-Learning, SARSA, TD)用于自主决策。从异常检测到资源优化。
</td>
<td width="50%">
### 🌐 统一 API 层
一个接口,三种协议。REST 用于简化,GraphQL 用于灵活性,SPARQL 用于语义查询。 Cortex API 适应您的需求。
</td>
</tr>
<tr>
<td width="50%">
### 📜 智能合约
基于 Rust 的 DSL 编译到 WASM。类型安全,沙盒执行,结果确定性。在任何地方部署业务逻辑。
</td>
<td width="50%">
### 📊 实时可视化
交互式 D3.js 仪表盘。实时观察您的 DAG。过滤、搜索、导出和分析系统行为。
</td>
</tr>
</table>
---
## Grounded Retrieval & Provenance
AIngle 包含一个检索层,将文档集合转化为**具有引用和出处证明的背景**,用于问答,增强了**基于事实的生成**:下游语言模型仅获得可追溯至可靠记录的材料,而不依赖自身记忆。
流程分为三个阶段:
1. **摄入(`aingle_ingest`)**。纯粹的确定性提取器将文档 `(path, content)` 映射到**具有出处的三元组**和**文本块**。结构(标题、章节、链接)被保留为语义三元组,而文本块成为检索的单元。由于摄入是确定性的,因此相同的输入始终产生相同的三元组和文本块 - 可重复性是必要的。
2. **出处锚定**。每个摄入单元通过 `provenance_anchor` - 该操作的签名哈希(参见 `dag-sign` 功能)- 与追加的 DAG 操作绑定。这使得检索到的块不仅**可发现**,而且**可验证**:您可以指出它来自的确切、防篡改的记录。
3. **基于语义的检索(`service::ground`)**。问题被嵌入并与摄入的文本块进行匹配;服务返回一个 `GroundedContext`,其中包含引用的文本块(及其 `provenance_anchor`)和一个**可信度**分类:
| 可信度 | 含义 |
|----------|---------|
| `grounded` | 强相似性和足够的佐证 - 答案有充分的来源支持。 |
| `weak` | 有相关材料,但低于佐证阈值 - 需要谨慎回答。 |
| `ungrounded` | 没有足够相似的来源 - 资料不支持答案。 |
可信度信号源自最佳匹配加上最低数量的佐证块,因此调用者(或使用该上下文的 LLM)可以明确表示何时来源**不支持**答案,而不是凭空捏造。
这些功能通过三个工具暴露给 MCP 服务器客户端(见 [MCP 服务器](#mcp-server) 部分):
| 工具 | 目的 |
|------|---------|
| `aingle_ingest` | 摄入文档 `(path, content)` → 具有出处证明的三元组 + 文本块。 |
| `aingle_ground` | 用引用的出处背景和可信度信号回答问题。 |
| `aingle_sources` | 列出已摄入的来源。 |
由于检索结果将出处锚点带入签名的 DAG 历史记录,**可信的答案是可审计的**:每个引用的段落都解析为账本中的可验证操作。
---
## 集群
AIngle 通过 Raft 共识算法支持多节点集群,以实现高可用性和水平扩展。所有节点都复制写入;读取可以从任何节点提供,具有可选的仲裁一致性。
### 快速开始(3 节点集群)
```bash
# 节点 1 - 启动引导节点
aingle-cortex --port 8081 \
--cluster --cluster-node-id 1 \
--cluster-secret "your-secret-at-least-16-chars" \
--cluster-wal-dir ./data/node1/wal \
--db-path ./data/node1/graph.sled
# 节点 2 - 通过节点 1 加入
aingle-cortex --port 8082 \
--cluster --cluster-node-id 2 \
--cluster-peers 127.0.0.1:8081 \
--cluster-secret "your-secret-at-least-16-chars" \
--cluster-wal-dir ./data/node2/wal \
--db-path ./data/node2/graph.sled
# 节点 3 - 通过节点 1 加入
aingle-cortex --port 8083 \
--cluster --cluster-node-id 3 \
--cluster-peers 127.0.0.1:8081 \
--cluster-secret "your-secret-at-least-16-chars" \
--cluster-wal-dir ./data/node3/wal \
--db-path ./data/node3/graph.sled
```
### 使用 TLS 加密
```bash
# 自动生成自签名证书(开发环境)
aingle-cortex --port 8081 --cluster --cluster-node-id 1 \
--cluster-secret "your-secret" --cluster-tls
# 使用自定义证书(生产环境)
aingle-cortex --port 8081 --cluster --cluster-node-id 1 \
--cluster-secret "your-secret" --cluster-tls \
--cluster-tls-cert /path/to/cert.pem \
--cluster-tls-key /path/to/key.pem
```
### 集群端点
| 端点 | 方法 | 描述 |
|----------|--------|-------------|
| `/api/v1/cluster/status` | GET | 节点角色、领导者 ID、当前任期 |
| `/api/v1/cluster/members` | GET | 所有集群成员及其状态 |
| `/api/v1/cluster/join` | POST | 添加新节点到集群 |
| `/api/v1/cluster/leave` | POST | 优雅地移除节点 |
| `/api/v1/cluster/wal/stats` | GET | WAL 分段计数和磁盘使用情况 |
| `/api/v1/cluster/wal/verify` | POST | 验证 WAL 完整性(校验和) |
### 功能
- **Raft 共识** - 自动领导者选举、日志复制和成员变更
- **流式快照** - 512KB 分段传输,每个分段确认以处理大型数据集
- **预写日志** - 崩溃安全耐久性,具有分段轮换和完整性验证
- **TLS 加密** - 节点间通信可选 TLS(自签名或自定义证书)
- **恒定时间身份验证** - 使用时间安全比较验证集群秘密
- **仲裁读取** - 读取操作的强一致性选项
---
## 架构
```
┌────────────────────────────────────────────────────────────────────────┐
│ 应用层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ Zomes │ │ 合约 │ │ Kaneru │ │ DAG 可视化 │ │
│ │ (WASM) │ │ (Rust DSL) │ │ (强化学习) │ │ (D3.js) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └───────────┘ │
├────────────────────────────────────────────────────────────────────────┤
│ API 层 │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │ Cortex API (REST • GraphQL • SPARQL) │ │
│ └────────────────────────────────────────────────────────────────┘ │
├────────────────────────────────────────────────────────────────────────┤
│ 核心服务 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ 语义图 │ │ 逻辑 │ │ ZK 证明 │ │ 合约运行时 │ │
│ │ 引擎 │ │ 引擎 │ │ (隐私) │ │ │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └───────────┘ │
├────────────────────────────────────────────────────────────────────────┤
│ 共识层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ Raft │ │ WAL │ │ 流式快照 │ │ TLS │ │
│ │ (openraft) │ │ (耐久性) │ │ │ │ (mTLS) │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └───────────┘ │
├────────────────────────────────────────────────────────────────────────┤
│ 网络层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌───────────┐ │
│ │ Kitsune P2P │ │ CoAP │ │ Gossip │ │ mDNS │ │
│ │ (QUIC) │ │ (物联网) │ │ (优化) │ │ 发现 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ └───────────┘ │
└────────────────────────────────────────────────────────────────────────┘
```
---
## 快速入门
### 快速开始
```bash
# 克隆
git clone https://github.com/ApiliumCode/aingle.git
cd aingle
# 构建
cargo build --workspace --release
# 构建集群支持
cargo build -p aingle_cortex --features cluster --release
# 测试
cargo test --workspace
# 文档
cargo doc --workspace --no-deps --open
```
### 依赖
- **Rust** 1.83 或更高
- **libsodium-dev** (密码学)
- **libssl-dev** (TLS)
- **pkg-config**
### 运行示例
```bash
# 深度上下文 - 语义 Git
cd examples/deep_context
cargo run --release -- --help
# 语义合规 - AML/KYC
cd examples/semantic_compliance
cargo run --release -- --help
```
---
## 文档
| 指南 | 描述 |
|-------|-------------|
| [快速入门](docs/tutorials/getting-started.md) | 构建您的第一个 AIngle 应用 |
| [物联网网络](docs/tutorials/iot-sensor-network.md) | 部署带有边缘智能的传感器 |
| [Kanu](docs/tutorials/ai-powered-app.md) | 添加自主决策 |
| [语义查询](docs/tutorials/semantic-queries.md) | 掌握 GraphQL 和 SPARQL |
| [隐私 (ZK)](docs/tutorials/privacy-with-zk.md) | 实现零知识证明 |
| [可视化](docs/tutorials/dag-visualization.md) | 实时监控您的系统 |
**完整 API 参考:**
```bash
cargo doc --workspace --no-deps --open
```
---
## 平台组件
### 核心
| 组件 | 目的 |
|-----------|---------|
| `aingle` | 主要控制器和运行时 |
| `aingle_minimal` | 超轻量级物联网节点(<1MB) |
| `kitsune_p2p` | P2P 网络(QUIC) |
| `aingle_sqlite` | 持久化存储 |
### 智能
| 组件 | 目的 |
|-----------|---------|
| `kaneru` | Kaneru 多智能体执行框架 |
| `aingle_logic` | 类 Prolog 推理引擎 |
| `aingle_graph` | 语义图数据库 |
### 集群和共识
| 组件 | 目的 |
|-----------|---------|
| `aingle_raft` | Raft 共识(领导者选举、日志复制、流式快照) |
| `aingle_wal` | 崩溃安全耐久性的预写日志 |
### 安全和隐私
| 组件 | 目的 |
|-----------|---------|
| `aingle_zk` | 零知识证明 |
| `aingle_contracts` | 智能合约运行时 |
| `aingle_cortex` | API 网关,具有身份验证 |
---
## SDKs
官方 SDK,用于将 AIngle 集成到您的应用程序中:
| 语言 | 包 | 仓库 |
|----------|---------|------------|
| **JavaScript/TypeScript** | `@apilium/aingle-sdk` | [aingle-sdk-js](https://github.com/ApiliumCode/aingle-sdk-js) |
| **Python** | `aingle-sdk` | [aingle-sdk-python](https://github.com/ApiliumCode/aingle-sdk-python) |
| **Go** | `github.com/ApiliumCode/aingle-sdk-go` | [aingle-sdk-go](https://github.com/ApiliumCode/aingle-sdk-go) |
| **Swift** | `AIngleSDK` | [aingle-sdk-swift](https://github.com/ApiliumCode/aingle-sdk-swift) |
| **Kotlin** | `com.apilium:aingle-sdk` | [aingle-sdk-kotlin](https://github.com/ApiliumCode/aingle-sdk-kotlin) |
### 快速示例(JavaScript)
```javascript
import { AIngleClient } from '@apilium/aingle-sdk';
const client = new AIngleClient('http://localhost:19090');
// 创建一个条目
const hash = await client.createEntry({ sensor: 'temp', value: 23.5 });
// 订阅实时更新
client.subscribe((entry) => {
console.log('New entry:', entry.hash);
});
```
### 运行 SDK 支持
```bash
# 启动节点并启用 REST API
aingle-minimal run --rest-port 19080
```
---
## MCP 服务器
Cortex 通过 Model Context Protocol(stdio)将 AIngle 语义图暴露给 MCP 客户端,如 Claude Code 和 Claude Desktop,让代理通过工具调用查询、写入和验证图数据。
### 构建
```bash
cargo build -p aingle_cortex --features "mcp dag" --release
```
### 客户端配置
添加到 `claude_desktop_config.json`(Claude Desktop)或 `.mcp.json`(Claude Code):
```json
{
"mcpServers": {
"aingle": {
"command": "aingle-cortex",
"args": ["--mcp", "--db", "./data/graph.sled"]
}
### 可用工具
- `aingle_ping` — 存活检查
- `aingle_query_pattern` — 通过三元组模式查询语义图
- `aingle_graph_stats` — 图统计
- `aingle_create_triple` — 插入三元组(写入)
- `aingle_verify_proof` — 验证零知识证明(返回 `valid: false` 表示无效证明)
- `aingle_dag_history` — 主体的有签名DAG溯源历史(需要 `dag` 功能)
> 标准输出保留用于JSON-RPC流;日志写入标准错误流。
### 远程(HTTP)连接器
使用HTTP传输构建并正常运行cortex;MCP端点在 `/mcp` 处提供服务:
```bash
cargo build -p aingle_cortex --features "mcp dag mcp-http" --release
AINGLE_MCP_HTTP_TOKEN=your-secret AINGLE_PUBLIC_HOST=your.domain \
aingle-cortex --db ./data/graph.sled
# MCP 可在 http://localhost:19090/mcp 处访问
# 客户端发送:Authorization: Bearer your-secret
```
- `/mcp` 路由**仅在**设置了 bearer token( `--mcp-http-token` / `AINGLE_MCP_HTTP_TOKEN` )或传递 `--mcp-http-allow-anonymous` 时挂载 - 它不会被意外暴露。
- `AINGLE_PUBLIC_HOST` (逗号分隔)必须列出远程部署的公共主机名(否则rmcp拒绝非环回 `Host` 头)。
- `--mcp-http-allow-anonymous` 在没有身份验证的情况下提供 `/mcp` 服务(仅限测试)。
> 注意:claude.ai 的连接器 UI 无法附加静态 bearer 头;来自 claude.ai 的安全远程使用需要 OAuth(计划中)。使用 bearer token 通过 `curl`/MCP Inspector 验证部署的端点。
#### OAuth(安全远程访问)
使用 `--features "mcp dag mcp-http mcp-oauth"` 构建并设置发行者;然后cortex充当 `/mcp` 的 OAuth 2.0 资源服务器(例如用于 claude.ai 远程连接器):
```bash
AINGLE_OAUTH_ISSUER=https://auth.example/realms/aingle \
AINGLE_OAUTH_RESOURCE=https://mcp.example/mcp \
aingle-cortex --db ./data/graph.sled
```
- 提供 `GET /.well-known/oauth-protected-resource` (RFC 9728);对 `/mcp` 的请求如果没有有效的 token,则会得到 `401` + `WWW-Authenticate: Bearer resource_metadata="…"`,这样客户端可以发现授权服务器。
- `/mcp` 接受由发行者签名的 Bearer **JWT** - 通过其 JWKS 验证,算法固定为 RS256,且 `iss` 、 `aud` (必须等于资源)和 `exp` 均为必填。
- 第一阶段静态 bearer( `AINGLE_MCP_HTTP_TOKEN` )仍然与 OAuth 一起接受(方便 `curl` 使用)。这种双重凭证行为是故意的;泄露的静态 token 会绕过 JWT 检查,因此仅在适当的地方使用。
- 对于非 Keycloak 发行者,请显式设置 `AINGLE_OAUTH_JWKS_URL` (默认派生 Keycloak 证书路径)。授权服务器(登录、PKCE、客户端注册)是外部的 - 请参见私有部署存储库。
---
## 贡献
我们欢迎社区的贡献。
1. 分叉存储库
2. 创建功能分支
3. 为新功能编写测试
4. 确保所有测试通过: `cargo test --workspace`
5. 格式化代码: `cargo fmt --all`
6. 提交拉取请求
有关详细信息,请参见我们的[贡献指南](CONTRIBUTING.md)。
---
## 许可证
**双重许可:Apache-2.0 + 商业**
版权所有 © 2019-2026 Apilium Technologies OÜ
AIngle 可在两个许可证下使用:
- **Apache License 2.0** — 免费用于个人使用、教育、研究、评估和年收入低于 100 万美元的组织。参见 [LICENSE-APACHE](LICENSE-APACHE)。
- **商业许可证** — 商业集成、SaaS 产品和年收入超过 100 万美元的组织需要此许可证。参见 [LICENSE-COMMERCIAL](LICENSE-COMMERCIAL)。
商业许可: [partners@apilium.com](mailto:partners@apilium.com)
---
<p align="center">
<strong>准备好改变您的企业吗?</strong>
</p>
<p align="center">
<a href="https://apilium.com"><strong>访问 apilium.com</strong></a>
•
<a href="mailto:hello@apilium.com">联系我们</a>
•
<a href="https://github.com/ApiliumCode/aingle">GitHub</a>
</p>
<p align="center">
<sub>Apilium Technologies OÜ • 爱沙尼亚,塔林</sub>
</p>
---
<sub>
**商标**:AIngle、AIngle Cortex、Ineru 和 Kaneru 是 Apilium Technologies OÜ 的商标。有关详细信息,请参见 [NOTICE](./NOTICE)。
**许可证**:双重许可,遵循 [Apache-2.0](./LICENSE-APACHE) 和 [商业](./LICENSE-COMMERCIAL)。有关受保护技术的信息,请参见 [PATENTS](./PATENTS)。
</sub>
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器