Lumen × LangGraph × Kova
Lumen × LangGraph × Kova
目标:把一个 LangGraph Agent 的 Checkpointer 从 SqliteSaver 换成 LumenCheckpointer,部署到 Kova,观察崩溃恢复对比。
Before / After
Before — 纯 LangGraph
单机、无远程备份 · 跨进程需加锁 · 崩溃恢复毫秒级 · 无成本追踪。
After — Lumen + Kova
微秒级崩溃恢复(Kova WAL 引擎)· 原生多进程安全 · 自动 Trace + Cost · 远程持久化。
Before
python
from langgraph.checkpoint.sqlite import SqliteSaver
graph = wf.compile(checkpointer=SqliteSaver.from_conn_string("./state.db"))After
python
from lumen_ai import LumenCheckpointer, LumenTracer
from kova import KovaClient
kova = KovaClient("kova://prod-cluster")
graph = wf.compile(
checkpointer=LumenCheckpointer(kova_client=kova),
callbacks=[LumenTracer()],
)本地验证
起本地 Kova
bashdocker run -d --name kova -p 9999:9999 ghcr.io/hanmahong5-arch/kova:latest跑你的 Agent
bashpython my_agent.py模拟崩溃
bashkill -9 $(pgrep -f my_agent)重启 — 从中断点继续
bashpython my_agent.py
部署到 Kova
yaml
# agent.yaml
name: my-research-agent
entry: python my_agent.py
replicas: 3
checkpointer: lumen
wal:
retention: 7dbash
lumen deploy --target kova://prod-cluster崩溃恢复对比实验
| 指标 | SqliteSaver | Lumen + Kova |
|---|---|---|
| 恢复延迟 | 8ms(单机) | 微秒级 |
| 多副本 | 需额外加锁 | 原生 |
| 跨机房 | 手动复制 | 异步复制内置 |
| LLM 重调 | 若 SQLite 写失败则重调 | 永不重调 |
| Trace | 无 | 自动关联 |
微秒级恢复从哪来
Kova 引擎调度延迟低至 3μs(FIFO 完整管道 Criterion 基准 3.17μs、315K ops/s)。LumenCheckpointer 把 LangGraph 的 checkpoint 写入交给 Kova WAL —— 恢复走引擎级 WAL 重放而非 SQLite 文件级,因此是微秒级,远快于单机 SQLite 的毫秒级。