跳转到正文

DCP

Deterministic Context Pipeline 的真源、确定性重建、Provider-neutral context、tool 边界和产品采用方式。

更新于 查看 Markdown

DCP 是 Deterministic Context Pipeline。它是 kxen 的基础运行原则和一组本地数据契约:应用先持久化可验证的事实,再从这些事实确定性重建模型上下文。LLM transcript、前端缓存和某个 Provider 的 wire message 都不作为应用状态的唯一真源。

DCP 解决的是长任务中的连续性问题。进程退出、UI 重连、模型切换或工具结果延迟到达后,runtime 必须知道已经发生了什么、哪些结果可以重放、哪些副作用仍是 UNKNOWN,而不是让模型从一段不完整对话猜测。

核心数据流

flowchart LR
Facts["durable facts"] --> Projection["deterministic projection"]
Projection --> Frame["ordered ContextFrame"]
Frame --> MRM["MRM and provider codec"]
MRM --> Model["model and tools"]
Model --> Records["TurnRecord and tool outcome"]
Records --> Facts

同一份 durable input、同一 cursor 和同一 policy 必须产生相同的有序 context。模型生成、网络响应、调度时刻和外部副作用本身不可能确定;DCP 的要求是让它们在影响下一次重建前形成 durable record。

ContextFrame

ContextFrame 是一次模型请求之前的 Provider-neutral 上下文快照。它由多个 ContextSegment 组成,每段具有稳定 ID、layer、排序键、可见性和内容。当前通用 layer 包括 platform、definition、execution、memory、conversation、collaboration task、run history 和 new input。

内容使用 ProviderNeutralPart 表达 text、structured data、tool call、tool result 和 immutable artifact reference。Composer 会拒绝空段、无效 tool arguments,以及同一 stable ID 对应不同内容的碰撞,然后按 layer、order key 和 stable ID 排序,并为结果生成 content hash。

Provider codec 只位于最后的 wire boundary。这样 durable state 不需要保存某家 Provider 的 message 格式或敏感 tool call ID,切换模型时也不需要把旧 Provider transcript 当作不可修改的真源。

Turn 与工具副作用

TurnRecord 保存 request、response、tool intent、tool result、approval、input 和 checkpoint 等 Provider-neutral 记录。瞬态 stream delta 可以驱动界面,但不能替代 durable turn。

有副作用的 tool operation 使用严格边界:

Intent -> Started -> OutcomeKnown -> Settled
                  \-> OutcomeUnknown

Started 必须在执行副作用前持久化。可证明的结果先写为 OutcomeKnown,再进入后续上下文和 settlement。若进程已经跨过副作用边界,却无法证明外部操作是否完成,结果保持 UNKNOWN,runtime 进入 input_required 或 Recovery,而不是自动重放或伪造成普通失败。Owner 的恢复决定必须绑定精确 operation identity。

Definition、policy 与 identity

DCP 把可变输入和不可变执行身份分开。Definition 描述稳定职责,runtime policy 决定当前环境允许的 capability 和预算,两者的有效交集及 content hash 固定到具体 Session 或 Run。恢复时发生 definition、policy、Workspace identity 或 branch drift 会 fail closed。

这条原则不要求所有产品对象使用同一种 definition schema。DCPAgentkxen-agent 使用的 kxen.ai/v1alpha1 YAML kind;Bot revision 和 Kanban 列 Agent 有自己的产品契约,不应被称为 DCPAgent。

当前采用范围

产品面 DCP 采用方式
Bots 直接使用 ContextFrameProviderNeutralPartTurnRecord 和 tool boundary journal 重建 BotRun。
kxen-agent 固定 DCPAgent lock、Workspace binding 和 DCPRun,持久化 tool journal、settlement、resume 与 bundle。
普通 Session Agent 持久化每轮消息和 tool result,使用 compaction、checkpoint 与恢复门禁;Session store 保留自身格式。
Kanban 从 append-only card events 做纯投影和确定性 prompt 渲染;列 Agent definition 不是 DCPAgent YAML。
Goal、Workflow、Team 位于执行编排层,复用 durable Session、MRM、Safety 和终态原则,不构成另一套 DCP 网络协议。

采用 DCP 不表示每个模块必须共享一个数据库文件或一个 Rust struct。共同约束是 durable truth、确定性重建、Provider-neutral record、明确副作用边界和可证明终态。

与其他能力的关系

  • MRM 负责模型、账号、并发、RPM、预算和 fallback;DCP 负责进入调用的可重建 context 与调用后的 durable record。
  • Context Engineering 负责选择、限制、检索和压缩工作集;DCP 提供确定性组合和持久边界。
  • Orchestration 决定任务如何拆分、并行和持续;DCP 不规定 Goal、Workflow、Team 或 Bot 的产品层级。
  • Safety 和 Approval 决定操作是否允许;DCP 记录 intent、decision 和 outcome,但不自行授予权限。
  • DCPAgent definition 把 DCP 原则应用到独立 autonomous CLI 的可审计执行定义。

明确边界

DCP 不是 HTTP、WebSocket、MCP 或 A2A transport,也不是强制所有外部系统实现某种 adapter interface。GitHub、GitLab、Issue、PR、branch、comment、Webhook 和 queue 不进入 DCP 核心数据模型。需要这些能力时,runtime 可以使用 MCP、普通 CLI、内置 tool 或宿主调用;DCP 只要求它们进入执行边界后拥有清晰的输入、权限、operation identity 和 durable outcome。

DCP 也不保证 LLM 输出相同,不把 UNKNOWN 自动解释为失败,不允许用重新生成的 transcript 覆盖已持久化事实。

导航

输入关键词以搜索…

↑↓ 移动↵ 打开Esc 关闭