架构

RelayCore 采用 Rust workspace 架构,由多个 crate 组成,各司其职。

架构总览

ADAPTER LAYER public crates PUBLIC relay-core-http REST + SSE PUBLIC relay-core-probe MCP · AI PUBLIC relay-core-tauri RelayCraft PUBLIC relay-core-cli CLI · TUI · embedded HTTP INTERNAL relay-core-api Flow · Rule · Policy · Event PUBLIC relay-core-runtime CoreState lifecycle · rule store · event bus · proxy spawn ENGINE internal crates INTERNAL relay-core-lib MITM · HTTP/HTTPS · WebSocket · TLS · rule execution interceptor chain: Script → Rule → Metrics → adapter INTERNAL relay-core-storage SQLite optional persist · flows · audit INTERNAL relay-core-script Deno/V8 (optional) feature "script"

核心 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 平行的第二条代理路径。

数据流

  1. 客户端连接到代理(例如 curl --proxy http://localhost:8080 https://example.com
  2. relay-core-lib 捕获并转发流量
  3. 拦截器链依次执行:Script → Rule → Metrics → 宿主 adapter(顺序见 runtime)
  4. 对于 HTTPS:MITM 拦截和解密
  5. 流写入 runtime 内存 LRU;若配置了 DB 则可选持久化到 relay-core-storage
  6. 通过 CoreState 事件总线发布 Flow / Audit 事件
  7. 适配器(HTTP、MCP、CLI、Tauri)经 CoreState 查询与控制

配置

路径与 CA 通过环境变量和 CLI 参数配置,详见配置。默认数据目录为 ~/.relay-core