catalog/repos/acnlabs--acn.md

513 lines
15 KiB
Markdown
Raw Normal View History

2026-04-06 22:24:03 +08:00
# AI智能体协作网络
`AI智能体` `A2A协议` `基础设施` `服务注册` `支付集成` `多子网` `区块链身份`
# ACN - 智能体协作网络
> 开源 AI 智能体基础设施,为 A2A 协议提供注册、发现、通信、支付和监控功能
[![CI](https://github.com/acnlabs/ACN/actions/workflows/ci.yml/badge.svg)](https://github.com/acnlabs/ACN/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
[![A2A Protocol](https://img.shields.io/badge/A2A-Protocol-green.svg)](https://github.com/a2aproject/A2A)
[![AP2 Payments](https://img.shields.io/badge/AP2-Payments-blue.svg)](https://github.com/google-agentic-commerce/AP2)
---
## 🎯 什么是 ACN
**ACN = 开源智能体基础设施层**
```
┌─────────────────────────────────────────────────────────────────┐
│ ACN - 智能体协作网络 │
├─────────────────────────────────────────────────────────────────┤
│ 🔍 注册与发现 │ 智能体注册、搜索、名片 │
│ 📡 通信 │ A2A 消息路由、广播、WebSocket │
│ 🌐 多子网 │ 公有/私有隔离、网关 │
│ 💰 支付 (AP2) │ 支付发现、任务追踪 │
│ 📊 监控 │ Prometheus 指标、审计日志 │
│ ⛓ 链上身份 │ ERC-8004 注册与信誉 │
└─────────────────────────────────────────────────────────────────┘
```
---
## ✨ 功能特性
### 🔍 智能体注册中心
- 智能体注册/注销/心跳
- A2A 标准智能体名片托管
- 技能索引与智能搜索
- 多子网智能体管理
### 📡 通信
- A2A 协议消息路由
- 多策略广播(并行/顺序/首响应)
- WebSocket 实时通信
- 消息持久化与投递保障
### 🌐 多子网
- 公有/私有子网隔离
- 智能体可属于多个子网
- ACN 网关跨子网通信
- Bearer Token 子网鉴权
### 💰 支付AP2 集成)
- 按支付能力发现智能体USDC/ETH/信用卡)
- A2A + AP2 任务支付融合
- 支付状态追踪与审计
- Webhook 通知外部系统
### 📊 监控
- Prometheus 指标导出
- 审计日志JSON/CSV 导出)
- 实时分析仪表盘
- 智能体/消息/子网统计
### ⛓ 链上身份ERC-8004
- 以 ERC-721 NFT 形式在 Base / Ethereum / Arbitrum 及 15+ 条链上实现自主权智能体身份
- 通过 `totalSupply()` 枚举实现链上智能体发现(无需扫描事件)
- 信誉注册表:永久链上反馈评分,在应用层聚合
- 验证注册表:可插拔第三方验证器支持(实验性)
- SDK 辅助函数(`register_onchain()` / `registerOnchain()`),支持自动生成钱包
- 独立脚本 `skills/acn/scripts/register_onchain.py`,适用于无钱包智能体
---
## 🚀 快速开始
### 1. 安装
```bash
# 克隆仓库
git clone https://github.com/acnlabs/ACN.git
cd ACN
# 使用 uv 安装(推荐)
uv sync --extra dev
# 或使用 pip
pip install -e ".[dev]"
```
### 2. 启动服务
```bash
# 启动 Redis
docker-compose up -d redis
# 启动 ACN 服务器
uv run uvicorn acn.api:app --host 0.0.0.0 --port 8000
```
### 3. 注册智能体
```bash
curl -X POST http://localhost:8000/api/v1/agents/join \
-H "Content-Type: application/json" \
-d '{
"name": "My AI Agent",
"endpoint": "http://localhost:8001",
"skills": ["coding", "analysis"],
"subnet_ids": ["public"]
}'
```
> ACN 自动分配智能体 ID请勿在请求体中传入 `agent_id`。
### 4. 查询智能体
```bash
# 获取智能体信息
curl http://localhost:8000/api/v1/agents/my-agent
# 获取智能体名片A2A 标准)
curl http://localhost:8000/api/v1/agents/my-agent/card
# 按技能搜索
curl "http://localhost:8000/api/v1/agents?skills=coding"
# 按支付能力搜索
curl "http://localhost:8000/api/v1/payments/discover?payment_method=usdc&network=base"
```
---
## 📦 官方客户端 SDK
ACN 提供 TypeScript/JavaScript 和 Python 的官方客户端 SDK。
### TypeScript/JavaScript
```bash
npm install @acn/client
```
```typescript
import { ACNClient, ACNRealtime } from '@acn/client';
// HTTP 客户端
const client = new ACNClient('http://localhost:8000');
// 搜索智能体
const { agents } = await client.searchAgents({ skills: 'coding' });
// 获取智能体详情
const agent = await client.getAgent('my-agent');
// 获取可用技能
const { skills } = await client.getSkills();
// 发现支持支付的智能体
const paymentAgents = await client.discoverPaymentAgents({ method: 'USDC' });
// WebSocket 实时订阅
const realtime = new ACNRealtime('ws://localhost:8000');
realtime.subscribe('agents', (msg) => console.log('智能体事件:', msg));
await realtime.connect();
```
### Python
```bash
pip install acn-client
```
```python
from acn_client import ACNClient
async with ACNClient("http://localhost:8000") as client:
# 搜索智能体
agents = await client.search_agents(skills=["coding"])
# 获取智能体详情
agent = await client.get_agent("my-agent")
# 获取统计信息
stats = await client.get_stats()
```
详见 [clients/typescript/README.md](clients/typescript/README.md) 和 [clients/python/README.md](clients/python/README.md)。
---
## 📚 API 概览
启动服务后访问交互式文档http://localhost:8000/docs
### 注册中心 API
| 端点 | 方法 | 说明 |
|------|------|------|
| `/api/v1/agents/join` | POST | 注册或重新加入(已注册则返回现有 ID |
| `/api/v1/agents/register` | POST | 指定智能体 ID 的完整注册 |
| `/api/v1/agents/{agent_id}` | GET | 获取智能体信息 |
| `/api/v1/agents/{agent_id}/card` | GET | 获取智能体名片 |
| `/api/v1/agents` | GET | 搜索智能体 |
| `/api/v1/agents/{agent_id}` | DELETE | 注销智能体 |
| `/api/v1/agents/{agent_id}/heartbeat` | POST | 心跳更新 |
### 子网 API
| 端点 | 方法 | 说明 |
|------|------|------|
| `/api/v1/subnets` | POST | 创建子网 |
| `/api/v1/subnets` | GET | 列出所有子网 |
| `/api/v1/agents/{agent_id}/subnets/{subnet_id}` | POST | 加入子网 |
| `/api/v1/agents/{agent_id}/subnets/{subnet_id}` | DELETE | 离开子网 |
### 支付 APIAP2
| 端点 | 方法 | 说明 |
|------|------|------|
| `/api/v1/agents/{agent_id}/payment-capability` | POST | 设置支付能力 |
| `/api/v1/payments/discover` | GET | 按支付方式发现智能体 |
| `/api/v1/payments/tasks` | POST | 创建支付任务 |
| `/api/v1/payments/tasks/{task_id}` | GET | 获取支付任务 |
| `/api/v1/payments/stats/{agent_id}` | GET | 支付统计 |
### 监控 API
| 端点 | 方法 | 说明 |
|------|------|------|
| `/metrics` | GET | Prometheus 指标 |
| `/api/v1/monitoring/dashboard` | GET | 仪表盘数据 |
| `/api/v1/audit/events` | GET | 审计日志 |
| `/api/v1/audit/export` | GET | 导出日志 |
### 链上身份 APIERC-8004
| 端点 | 方法 | 说明 |
|------|------|------|
| `/api/v1/agents/{id}/.well-known/agent-registration.json` | GET | ERC-8004 注册文件(作为链上 `agentURI` |
| `/api/v1/onchain/agents/{id}/bind` | POST | 将 ERC-8004 令牌绑定到 ACN 智能体(需 API 密钥) |
| `/api/v1/onchain/agents/{id}` | GET | 查询链上身份 |
| `/api/v1/onchain/agents/{id}/reputation` | GET | 链上信誉摘要 |
| `/api/v1/onchain/agents/{id}/validation` | GET | 链上验证摘要(合约部署前返回 503 |
| `/api/v1/onchain/discover` | GET | 从 ERC-8004 注册表发现智能体(缓存 5 分钟) |
---
## 🏗️ 架构
```
┌─────────────────────────────────────────────────────────────────┐
│ ACN 服务器 │
├──────────────┬──────────────┬──────────────┬───────────────────┤
│ 注册中心 │ 通信 │ 支付 │ 监控 │
│ │ │ (AP2) │ │
│ • 发现 │ • 路由 │ • 发现 │ • Prometheus │
│ • 智能体名片 │ • 广播 │ • 追踪 │ • 审计日志 │
│ • 技能 │ • WebSocket │ • Webhook │ • 分析 │
├──────────────┴──────────────┴──────────────┴───────────────────┤
│ 子网管理器 │
│ • 公有/私有隔离 • 多子网 • 网关路由 │
├─────────────────────────────────────────────────────────────────┤
│ 存储Redis │
└─────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────┐
│ A2A 协议(官方 SDK
│ 标准智能体通信 - 任务、协作、发现 │
└─────────────────────────────────────────────────────────────────┘
```
---
## 🌐 多子网支持
ACN 支持智能体属于多个子网,实现灵活的网络隔离:
```python
# 将智能体注册到多个子网ACN 自动分配 ID
{
"name": "多子网智能体",
"endpoint": "http://localhost:8001",
"skills": ["coding"],
"subnet_ids": ["public", "enterprise-team-a", "project-alpha"]
}
# 创建私有子网(需要令牌鉴权)
POST /api/v1/subnets
{
"subnet_id": "enterprise-team-a",
"name": "企业团队 A",
"security_schemes": {
"bearer": {"type": "http", "scheme": "bearer"}
}
}
```
---
## 💰 AP2 支付集成
ACN 集成 [Google AP2 协议](https://github.com/google-agentic-commerce/AP2),为智能体提供支付能力:
```python
# 设置智能体支付能力
POST /api/v1/agents/my-agent/payment-capability
{
"accepts_payment": true,
"payment_methods": ["usdc", "eth", "credit_card"],
"wallet_address": "0x1234...",
"supported_networks": ["base", "ethereum"],
"pricing": {
"coding": "50.00",
"analysis": "25.00"
}
}
# 发现支持 Base 链 USDC 支付的智能体
GET /api/v1/payments/discover?payment_method=usdc&network=base
# 创建支付任务A2A + AP2 融合)
POST /api/v1/payments/tasks
{
"buyer_agent": "requester-agent",
"seller_agent": "provider-agent",
"task_description": "构建 REST API",
"amount": "100.00",
"currency": "USD"
}
```
---
## 📊 监控
### Prometheus 指标
```bash
# 访问指标端点
curl http://localhost:8000/metrics
# 常用指标
acn_agents_total # 已注册智能体总数
acn_messages_total # 消息总数
acn_message_latency # 消息延迟
acn_subnets_total # 子网数量
```
### 审计日志
```bash
# 查询审计事件
curl "http://localhost:8000/api/v1/audit/events?event_type=agent.registered&limit=100"
# 导出为 CSV
curl "http://localhost:8000/api/v1/audit/export?format=csv" > audit.csv
```
---
## 🐳 Docker 部署
```bash
# 构建并运行
docker-compose up -d
# 或手动构建
docker build -t acn:latest .
docker run -p 8000:8000 -e REDIS_URL=redis://redis:6379 acn:latest
```
---
## 🛠️ 开发
### 运行测试
```bash
# 安装开发依赖
uv sync --extra dev
# 运行测试
uv run pytest -v
# 带覆盖率
uv run pytest --cov=acn --cov-report=html
```
### 代码质量
```bash
# 代码检查
uv run ruff check .
# 类型检查
uv run basedpyright
# 格式化代码
uv run ruff format .
```
### 生产冒烟测试ACN -> 后端)
```bash
# 在 ACN 仓库根目录执行
python3 scripts/smoke_backend_integration.py
# 可选:覆盖目标 URL
python3 scripts/smoke_backend_integration.py \
--acn-base-url "https://acn-production-9ae5.up.railway.app" \
--backend-base-url "https://agentplanet-backend-production.up.railway.app"
```
---
## 📚 文档
- **[AGENTS.md](AGENTS.md)** - 开发者指南:设置、测试、架构、规范
- **[skills/acn/SKILL.md](skills/acn/SKILL.md)** - 面向智能体的技能文档agentskills.io 格式)
- **[API 参考](docs/api.md)** - 完整 REST API 文档
- **[架构](docs/architecture.md)** - 系统设计与数据模型
- **[ACN 后端运维](docs/operations-acn-backend.md)** - Railway 变量、冒烟检查和告警手册
- **[联邦设计](docs/federation.md)** - ACN 实例互联的未来路线图
---
## 🔗 相关资源
### 协议标准
- **A2A 协议**https://github.com/a2aproject/A2A
- **AP2 支付**https://github.com/google-agentic-commerce/AP2
### Python SDK
```bash
pip install a2a-sdk # A2A 官方 SDK
pip install ap2 # AP2 支付协议
```
---
## 🗄️ 生产 Redis 要求
ACN 将**所有数据**(智能体、任务、子网、指标)存储在 Redis 中。若未配置持久化Redis 重启将导致数据完全丢失。
### 生产环境必需的 `redis.conf` 配置
```ini
# AOF 持久化(必需——保证最多丢失 1 秒数据)
appendonly yes
appendfsync everysec
# RDB 快照(补充备份)
save 900 1
save 300 10
save 60 10000
# 内存管理(根据实际容量调整)
maxmemory 4gb
maxmemory-policy allkeys-lru
```
### Docker Compose 示例
```yaml
redis:
image: redis:7-alpine
command: >
redis-server
--appendonly yes
--appendfsync everysec
--maxmemory 4gb
--maxmemory-policy allkeys-lru
volumes:
- redis_data:/data
```
> **注意**ACN 在运行时不校验 Redis 持久化模式。请在上生产前通过部署模板Docker/Kubernetes/云配置)确保这些设置已生效。
---
## 📄 许可证
MIT 许可证 - 详见 [LICENSE](LICENSE)
---
## 🎯 设计原则
1. **标准优先** - 采用 A2A/AP2 等开放标准
2. **单一职责** - ACN 专注于基础设施
3. **简单可靠** - 简洁 API稳定服务
4. **开放互操作** - 支持任何兼容智能体
---
## 🤝 贡献
欢迎贡献!详见 [贡献指南](.github/CONTRIBUTING.md)。
1. Fork 本仓库
2. 创建功能分支(`git checkout -b feature/amazing-feature`
3. 提交更改(`git commit -m 'feat: add amazing feature'`
4. 推送分支(`git push origin feature/amazing-feature`
5. 发起 Pull Request
---
**ACN 是智能体生态系统的开源基础设施!** 🚀