kaminocorp/cream
GitHub: kaminocorp/cream
面向 AI 智能体的统一支付控制平面,抽象多支付提供商并强制执行策略与审计要求。
Stars: 1 | Forks: 0

# C.R.E.A.M.
### 面向 AI 智能体的开源支付控制平面。
**Cream 是一个基于 Rust 的支付控制平面,包含策略引擎、带熔断器的多提供商路由,以及仅追加式审计账本 — 同时提供 REST 和 MCP 接口 — 旨在让 AI 智能体在运营者定义的防护范围内自主消费。**
[架构设计](#architecture) | [工作原理](#how-a-payment-flows) | [技术栈](#tech-stack) | [快速开始](#getting-started) | [路线图](#roadmap) | [贡献指南](#contributing) | [许可证](#license)
## 什么是 Cream?
Cream 位于 AI 智能体和支付提供商(Stripe、Airwallex、 Coinbase 等)之间,负责管理每一笔交易。把它想象成一个专门用于资金的 API 网关。
智能体从不直接与 Stripe 通信。它与 Cream 通信,由 Cream 决定**是否**允许该支付、**由哪个**提供商处理,以及**为什么** — 然后将所有内容Immutable地记录下来。
**核心问题:** AI 智能体正在获得真正的经济自主权,但管理、审计和执行其支付的基础设施尚不存在。没有单一的提供商能覆盖所有支付渠道、地区和智能体框架。 Cream 填补了这一空白。
### 核心功能
- **统一 API** — 一个接口支持卡支付、跨境转账和稳定币微支付。智能体无需知道哪个提供商执行了交易。
- **策略引擎** — 在任何资金流动前按优先级顺序评估的声明式规则。金额上限、速度限制、类别限制、地理控制、重复检测 — 12 种内置规则类型。
- **结构化说明** — 每个支付请求必须包含机器可读的结构化理由。没有说明,就没有支付。这为每笔交易创建了智能体编写的审计追踪。
- **智能路由** — 根据成本、延迟、健康状况和通道自动选择最优提供商。熔断器将流量从降级的提供商转移。故障转移是自动的。
- **人工介入** — 策略规则可以要求对任何交易类别进行人工审批。运营者可以通过仪表板或 Slack 通知批准或拒绝。
- **Immutable 审计账本** — 每笔支付的每个步骤(请求、说明、策略决策、路由选择、提供商响应)都写入仅追加日志。数据库在物理上阻止更新和删除。
- **原生 MCP** — AI 智能体开箱即用地通过 Model Context Protocol 连接。Claude、GPT-4、LangChain、LangGraph — 任何支持 MCP 的工具都能与 Cream 配合工作。
## 架构设计
Cream 的后端是一个 Rust workspace,包含 6 个 crate,呈严格的依赖有向无环图分层:
```
+----------+
| models | Pure types. Zero business logic.
+----+-----+
|
+---------------+---------------+----------------+
| | | |
+----v----+ +-----v-----+ +-----v-----+ +-----v-----+
| audit | | policy | | providers | | router |
+---------+ +-----------+ +-----------+ +-----------+
| | | |
+---------------+-------+-------+----------------+
|
+----v----+
| api | Axum HTTP server. Wires everything together.
+---------+
+------------------+
| mcp-server (TS) | TypeScript sidecar. Calls the REST API.
+------------------+
```
| Crate | 职责 |
|-------|------|
| **`models`** | 支付状态机、类型化 ID、货币枚举、策略规则类型。其他所有 crate 都导入这个。 |
| **`policy`** | 规则评估引擎。12 种内置规则类型。无状态 — 接收上下文,返回裁决。无数据库依赖。 |
| **`providers`** | `PaymentProvider` trait + 工厂注册表。添加新提供商 = 实现 trait + 注册。核心逻辑零改动。 |
| **`router`** | 提供商评分、Redis 熔断器、跨提供商幂等性保护。 |
| **`audit`** | 仅追加写入路径和Immutable账本的查询接口。 |
| **`api`** | Axum HTTP 服务器。12 个 REST 端点、认证中间件、速率限制、支付生命周期编排器。 |
**MCP 服务器**是一个独立的 TypeScript 项目,使用官方 `@modelcontextprotocol/sdk`。它将 MCP 工具调用转换为 REST API 调用 — 零业务逻辑。
## 支付流程
每笔支付都遵循 8 步确定性管道:
```
[Agent] --> POST /v1/payments (with justification)
|
[1] Schema validation
[2] Agent identity resolution + policy profile loaded
[3] Justification evaluation (structural + category checks)
[4] Policy engine (rules evaluated in priority order)
|
BLOCK / ESCALATE / APPROVE
|
[5] Routing engine (score providers, check circuit breakers)
[6] Provider execution (dispatch + automatic failover)
[7] Settlement confirmation
[8] Audit write (immutable, append-only)
|
[Agent] <-- { payment_id, status, provider }
```
**延迟目标:** 已批准自主交易的端到端延迟低于 300ms。
## 技术栈
| 层级 | 技术选型 | 原因 |
|-------|-----------|-----|
| **核心后端** | Rust (Axum) | 性能、编译时正确性、开源社区认可 |
| **数据库** | PostgreSQL (SQLx) | 编译时检查查询、仅追加式审计强制执行 |
| **缓存/锁** | Redis | 速率限制、熔断器、跨提供商幂等锁 |
| **MCP 服务器** | TypeScript | 官方 `@modelcontextprotocol/sdk` 实现最大生态系统兼容性 |
| **仪表板** | Next.js 15 + shadcn/ui | App Router、React Server Components、完善的运营者 UI |
| **任务运行器** | justfile | 现代、跨平台命令运行器 |
| **基础设施** | Docker Compose | 一键式本地开发环境 |
### 设计原则
- **单租户设计。** 每个运营者一个部署。干净、可分叉、可自托管。
- **Trait 边界无处不在。** 认证、审计、提供商、可观测性 — 全部在 trait 后面。在不触碰核心逻辑的情况下插入你自己的实现。
- **金钱使用 `rust_decimal`,绝不用浮点数。** 数据库中使用 `NUMERIC(19,4)`。支付路径中绝无浮点数。
- **跨提供商幂等性。** Redis 分布式锁防止即使在提供商故障转移期间也不会重复扣款。
## 快速开始
### 前置条件
- Rust(stable)
- Node.js 20+
- Docker & Docker Compose
- [just](https://github.com/casey/just)(任务运行器)
### 本地开发
```
# 克隆仓库
git clone https://github.com/crimson-sun/cream.git
cd cream
# 启动 Postgres + Redis
just up
# 运行数据库迁移
just migrate
# 构建后端
just build
# 运行 API 服务器
just run-api
# 在另一个终端中,启动 MCP 服务器
just run-mcp
# 在另一个终端中,启动前端
just fe-dev
```
### 可用命令
```
just # List all commands
just up # Start Docker services (Postgres + Redis)
just down # Stop Docker services
just build # Build all Rust crates
just check # Type-check without building
just test # Run unit tests
just test-integration # Run integration tests (requires Docker services)
just clippy # Lint with Clippy
just fmt # Format code
just run-api # Start the API server
just run-mcp # Start the MCP server
just fe-dev # Start the frontend dev server
just fe-build # Build the frontend
```
## API 概览
### REST 端点
| 方法 | 端点 | 描述 |
|--------|----------|-------------|
| `POST` | `/v1/payments` | 发起带有说明的支付 |
| `GET` | `/v1/payments/{id}` | 获取支付状态和审计记录 |
| `POST` | `/v1/payments/{id}/approve` | 批准升级的支付 |
| `POST` | `/v1/payments/{id}/reject` | 拒绝升级的支付 |
| `POST` | `/v1/cards` | 发行限定范围的虚拟卡 |
| `PATCH` | `/v1/cards/{id}` | 更新卡控制 |
| `DELETE` | `/v1/cards/{id}` | 撤销卡 |
| `GET` | `/v1/audit` | 查询审计日志 |
| `GET` | `/v1/agents/{id}/policy` | 获取智能体的策略配置 |
| `PUT` | `/v1/agents/{id}/policy` | 更新智能体的策略配置 |
| `GET` | `/v1/providers/health` | 提供商健康状态 |
| `POST` | `/v1/webhooks` | 注册 webhook 端点 |
### MCP 工具
通过 MCP 连接的智能体可以使用:
- `initiate_payment` — 发起带有结构化说明的支付
- `get_payment_status` — 检查支付状态
- `create_virtual_card` — 发行限定范围的虚拟卡
- `get_my_policy` — 获取当前策略规则
- `get_audit_history` — 查询历史交易
- `check_provider_health` — 检查提供商可用性
## 路线图
### 阶段 1:脚手架(当前)
- [x] 项目文档和架构设计
- [ ] Monorepo 骨架、Docker Compose、justfile、CI
- [ ] 核心领域模型(支付状态机、类型化 ID、策略类型)
- [ ] 数据库 schema 和迁移(9 张表、仅追加式审计)
- [ ] 策略引擎(12 种内置规则类型)
- [ ] Provider trait + 模拟提供商
- [ ] 路由引擎(评分、熔断器、幂等性)
- [ ] API 服务器(12 个端点、认证、速率限制、编排器)
- [ ] MCP 服务器(TypeScript、6 个工具)
- [ ] 前端骨架(8 个仪表板页面)
- [ ] CI 流水线(GitHub Actions)
### 阶段 2:提供商集成
- [ ] Stripe Issuing + PaymentIntents
- [ ] Airwallex Issuing + Payouts
- [ ] Coinbase x402 + AgentKit
### 阶段 3:生产就绪前端
- [ ] 实时交易推送
- [ ] 包含批准/拒绝流程的升级队列
- [ ] 策略编辑器(可视化构建器)
- [ ] 审计日志浏览器(支持说明搜索)
- [ ] 提供商健康仪表板
- [ ] 智能体管理 UI
### 阶段 4:运维成熟度
- [ ] Webhook 投递 + Slack 升级集成
- [ ] 运营者入职流程
- [ ] 安全加固(凭证轮换、mTLS)
- [ ] 可观测性存根(接入你自己的平台)
- [ ] API 文档(OpenAPI 规范)
- [ ] 负载测试和 E2E 测试套件
### 未来:亚太区扩展
- [ ] PayNow(新加坡)
- [ ] GrabPay(东南亚)
- [ ] UPI / Razorpay(印度)
### 未来:协议层
- [ ] Stripe ACP(智能体商务协议)
- [ ] Google AP2(智能体支付协议)
- [ ] Visa 智能体可信协议(TAP)
## 项目结构
```
cream/
├── backend/
│ ├── Cargo.toml # Rust workspace
│ ├── crates/
│ │ ├── api/ # Axum HTTP server
│ │ ├── audit/ # Append-only audit ledger
│ │ ├── models/ # Domain types and state machines
│ │ ├── policy/ # Policy evaluation engine
│ │ ├── providers/ # Payment provider trait + implementations
│ │ └── router/ # Provider routing and circuit breakers
│ ├── mcp-server/ # TypeScript MCP server
│ └── migrations/ # PostgreSQL migrations
├── frontend/ # Next.js 15 dashboard
├── assets/ # Logo and brand assets
├── docs/
│ ├── tldr.md # 5-minute architecture overview
│ ├── background.md # AI agent payments landscape research
│ ├── vision.md # Full product specification
│ └── executing/
│ ├── implementation-plan.md # Detailed scaffold blueprint
│ └── next-phases.md # Post-scaffold roadmap
├── docker-compose.yml # Postgres + Redis
├── justfile # Task runner commands
└── LICENSE # Apache 2.0
```
## 贡献指南
Cream 是开源的,我们欢迎贡献。项目处于早期开发阶段 — 有很多工作要做。
**适合新手的领域:**
- 策略引擎规则实现
- 提供商集成(为你喜欢的 PSP 实现 `PaymentProvider` trait)
- 前端仪表板组件
- 文档和示例
架构设计考虑了贡献者体验。每个主要系统(认证、审计、提供商、可观测性)都在 trait 边界后面 — 你可以添加新实现而不触碰核心逻辑。
请参阅 `docs/executing/implementation-plan.md` 获取完整的技术蓝图。
## 许可证
Cream 根据 [Apache License 2.0](LICENSE) 获得许可。
**由 [Crimson Sun](https://github.com/crimson-sun) 构建**
*C.R.E.A.M. — Cash Rules Everything Around Me*
标签:AI代理, API网关, MCP协议, REST API, Rust, 交易监控, 加密货币, 可视化界面, 合规, 多提供商路由, 审计日志, 微支付, 搜索引擎查询, 支付控制平面, 支付系统, 支付集成, 测试用例, 熔断器, 稳定币, 策略引擎, 结构化审计, 网络安全挑战, 网络流量审计, 自动化支付, 请求拦截, 资金控制, 通知系统, 金融科技, 风控系统