架构
RelayCore 采用 Rust workspace 架构,由多个 crate 组成,各司其职。
架构总览
核心 Crate
relay-core-api (内部)
共享类型契约(Flow、Rule、Policy、Event)。各 crate 通过它交换数据,用户应依赖 runtime 的 re-export。
relay-core-runtime (公开)
主要 API crate。提供 CoreState 用于状态编排、代理生命周期管理、规则评估和事件分发。
relay-core-http (公开)
REST + SSE 适配器。通过 HTTP 和 JSON API 以及 Server-Sent Events 实时更新暴露 CoreState。
relay-core-probe (GA)
MCP 适配器(npm:@relay-core/mcp)。独立进程 relay-core-probe 内嵌代理并通过 MCP 暴露工具。
relay-core-cli (GA)
独立 CLI 与 TUI。relay-core-cli run 会同时启动代理、内嵌 REST+SSE(--api-port)和控制 API。
relay-core-lib (内部)
流量引擎:HTTP/HTTPS 代理、WebSocket、MITM/TLS、规则执行。runtime 将 Script / Rule 等拦截器组装进 lib 的拦截链。
relay-core-storage (内部)
SQLite 持久化。处理带有 LRU 缓存的流存储和审计日志。
relay-core-script (内部)
Deno/V8 脚本引擎(可选 feature)。由 runtime 注入 lib 拦截器链,不是与 lib 平行的第二条代理路径。
数据流
- 客户端连接到代理(例如
curl --proxy http://localhost:8080 https://example.com) relay-core-lib捕获并转发流量- 拦截器链依次执行:Script → Rule → Metrics → 宿主 adapter(顺序见 runtime)
- 对于 HTTPS:MITM 拦截和解密
- 流写入 runtime 内存 LRU;若配置了 DB 则可选持久化到
relay-core-storage - 通过 CoreState 事件总线发布 Flow / Audit 事件
- 适配器(HTTP、MCP、CLI、Tauri)经 CoreState 查询与控制
配置
路径与 CA 通过环境变量和 CLI 参数配置,详见配置。默认数据目录为 ~/.relay-core。