很多团队有 DAG,但没有真正的节点契约。节点看起来能跑,系统却经常在跨节点交接时出错:字段缺失、状态歧义、重放失败。
节点契约至少包括什么
| 契约项 | 必填内容 |
|---|---|
| inputSchema | 必需字段、类型、默认值 |
| outputSchema | 标准输出与异常输出 |
| preconditions | 执行前必须满足的状态 |
| postconditions | 成功后必须写入的状态 |
| sideEffects | 外部写入与补偿方式 |
契约不是文档附件,而是 runtime 校验规则。
边界错位的三种典型表现
- 上游传“推断字段”,下游当“必填字段”。
- 节点输出写到临时变量,未进入共享状态。
- 失败分支返回文本,无法被下游 machine-readable 处理。
失败案例:重试后输出结构变化
某节点首轮输出 items[],重试后输出 result.items[]。下游节点在首轮成功、重试失败间随机抖动。修复后强制节点输出统一 schema,并把非结构化文本移到 debugNote 字段。
契约治理 Checklist
- 节点输入输出都可 schema 校验
- pre/post 条件被 runtime 强制检查
- 失败输出同样结构化
- side effect 有可验证声明
- 节点契约变更必须版本化
延伸阅读:


