Pre-alpha 文档
持久执行依赖记录,而非进程内存。
StateKnot 将逻辑工作、物理所有权、外部效果与权威 Graph State 明确分离。
持久执行、可恢复与持久化
本文将 Durable Execution 称为“持久执行”:进程中断后,运行时可以根据已经提交的 日志、检查点和调用记录恢复工作,而不必把整个流程从头执行。
- 持久执行(Durable Execution)
- 一套结合状态保存、重放校验和故障恢复的执行机制,不只是把数据写入数据库。
- 可恢复(Recoverable)
- 强调中断后根据已保存的证据继续处理的能力,例如可恢复 Agent 或可恢复 Graph。 是否可以重试外部调用,仍取决于调用记录和明确的重试契约。
- 持久化(Persistence)与持久性(Durability)
- “持久化”指保存日志、状态、凭据等数据;“持久性”指已提交数据在约定故障范围内 不丢失的保证,取决于存储配置和恢复验证。仅有持久化存储不等于流程能够正确恢复。
Rust API 保留原名,例如 DurableGraphDriver 和
DurableAgentLoop,便于对照源码。这里的术语不扩大已实现能力,
也不代表框架已经完成生产验收;当前边界见实现状态。
为什么需要这些边界
Agent 工作会跨越数据库、模型供应商、工具、人工处理和远端 Agent。进程崩溃无法证明一个外部请求是否执行,内存中的 Future 也不能授权替代 Worker。因此 StateKnot 会持久化下一步决策所需的证据,同时不虚构所有副作用都是 Exactly-once。
证据链
-
Journal
Append-only Canonical Fact 用于证明哪些事实已经权威生效,以及它们在 Run 内的精确顺序。
-
Checkpoint
不可变 Graph/State 快照绑定精确 Journal Head 与父 Checkpoint。
-
Lease 与 Fence
数据库时钟 Lease 授予临时所有权;每次 Worker 写入都重复校验单调递增的 Fencing Epoch。
-
Invocation Ledger
Model/Tool Intent、物理 Attempt、终态证据与未知外部效果不会随进程丢失。
-
Pending Result
一个逻辑 Node Result 在 Barrier 前提交;即使兄弟节点或 Worker 崩溃,它仍可被复用。
-
Barrier
完整且 Canonical 排序的 Result Set 会原子地生成后继 Checkpoint,并消费相应 Pending Result。
逻辑身份不等于 Worker 身份
一个 Node Activation 属于精确的 Tenant、Run、Graph Namespace、Superstep 与
Node。物理 AttemptId 及其 Worker FencingEpoch 记录谁尝试执行该逻辑工作。恢复过程可以替换物理
Attempt,但不会改变 Result 顺序或暗中创建新的逻辑 Invocation。
数据库事务中绝不执行外部工作
StateKnot 先提交 Intent 或 Attempt Start,关闭事务,再调度 Model、Tool、A2A 或人工工作。返回的证据在后续事务中提交。这既避免长期持有数据库锁,也让每个崩溃边界明确可审计。
数据库变更 Exactly-once 并不等于现实世界副作用 Exactly-once。Tool 在支持时使用 Idempotency Key;无法证明完成状态时保留明确的 Unknown Outcome。
当前恢复逻辑能够做出的决策
Recovery 现在会从 Tenant-scoped 不可变 Registry 重新加载精确 Compiled Graph,重新编译 Canonical Bytes,验证 Checkpoint Binding,再在同一个有效 Fence 下校验 Pending Result 和完整 Attempt History,并将每个 Ready Node 分类为 Completed、Dispatchable、Deferred、In-flight、Failed 或 Exhausted;Node 代码启动前必须先提交 Durable Attempt Start。当所有未完成节点均为 Deferred 时,Store 会把 Lease 原子释放到数据库时间驱动的索引化唤醒中,直接 Claim 也不能提前执行。
可恢复 Driver 现已冻结可执行 Schema、Reducer 与 Node,独立重放每个已提交的非初始 Checkpoint,在 Node 代码运行期间续租,提交 Continue Barrier,并返回类型化 Wait/Terminal/Failure Handoff。接入 Worker Deployment 前请阅读Runtime 集成契约与Agent Loop 契约。