1 - 什么是 Eventboat?
Go 单二进制 DAG 事件路由器,为 AI Agent 端到端操作而设计。
Eventboat 通过有向无环图(DAG)路由事件——从源(Kafka、HTTP、cron、SQL、文件) 到汇(Kafka、HTTP、文件),保证 at-least-once 投递、死信可查可回放。
它是 Agent 原生的:所有能力都可通过 MCP(Model Context Protocol)、CLI 和语言服务器 访问——AI Agent 可以自主编写、验证、部署和运维事件管道。
有什么不同
| 维度 | 方案 |
|---|---|
| 谓词 | CEL(K8s 标准)——零自研 DSL,训练语料巨大 |
| 转换 | Starlark(Python 方言,沙箱,确定性) |
| 验证 | 四道机器关卡:verify、test、explain、operate |
| 可靠性 | 七条不变量测试,spool/settle/checkpoint 引擎(SQLite) |
| 作业 | cron 调度、补偿窗口、类型化参数、回补 |
| 扩展 | CEL → Starlark → WASM → gRPC 进程外插件 |
| 互操作 | CESQL 方言(CloudEvents),官方 TCK 100% |
一句话
Eventboat 让 AI Agent 构建和运行不丢消息的事件管道——因为机器在上线前验证每一步。
2 - 架构
Eventboat 引擎的工作方式:三层管道模型、spool+settle+checkpoint 可靠性、四道验证关卡。
三层模型
- Config 层:YAML 解析、严格 schema 校验、变量替换
- Static IR:校验后的 DAG + 预编译 CEL 程序 + Starlark 程序 + schema
- Runtime:spool + settle + checkpoint 引擎,只消费 IR
可靠性模型
- Spool:每条消息先落 SQLite 再进 DAG(不变量 1)
- Settle:消息的全部分支到达终态即 settle
- Checkpoint:只推进已 settle 的连续前缀(不变量 2)
- 崩溃恢复:kill -9 → 重启 → 从 checkpoint 重放,绝不丢(不变量 3)
- 死信:重试耗尽 → 死信库(可查询 + 可回放)
七条不变量测试
每条都有专属测试,CI 必须通过:
- spool 先于可见
- settle 先于 checkpoint
- kill -9 重放覆盖全部未 settle
- 死信写失败阻塞 settle
required: false边不阻塞兄弟分支- 重复投递保持 message ID 稳定
- 水位不超过已 settle 最大值
四道机器关卡
| 关卡 | 命令 | 做什么 |
|---|---|---|
| verify | eventboat verify | Schema、拓扑、CEL+Starlark 编译、lint — 静态零副作用 |
| test | eventboat test | 对真实引擎跑合约测试 — fixture 进、断言出 |
| explain | eventboat explain --message sample.json | 确定性路径推演(真实 CEL 求值 + Starlark dry-run) |
| operate | eventboat mcp | MCP 服务器:15 个工具覆盖完整 Agent 生命周期 |