context-continuity / mirror /docs /integration-contracts.md
RedinGhost's picture
Publish curated static research mirror
6f4aa22 verified
|
Raw History Blame Contribute Delete
9.64 kB

三产品集成契约

状态:冻结用于 Context Continuity 0.2.0-beta.2。 适用对象:Intent Loop、Context Continuity、Execution Fidelity Guard 与宿主 Agent。

这份契约只有一个目的:避免三插件和宿主各自维护“最终真相”。当前发行只冻结所有权 和 wire shape,不宣称跨仓库实时桥接已经实现。

唯一有效状态的所有权

组件 拥有 不拥有
Intent Loop 规范化的当前用户语义意图、contract_ref、contract_version、实质变更判断与用户消息来源 连续性快照、Guard 决策、执行收据、宿主权限与运行状态
Context Continuity 有损转换事件、恢复阶段、开放承诺、工作对象与版本、完成/证据引用、快照与 handoff 运输 已绑定 provider 的意图改写、授权判断、Guard 策略、完整 transcript
Execution Fidelity Guard Hook 动作分类、继续/提醒/询问/阻止判断、自身事件/收据/证据和 Stop 计数 意图写入、provider 版本、连续性状态写回、Agent 循环与宿主审批
宿主 Agent / Harness 实际工具执行、生命周期投递、UI、沙箱、信任、权限审批和运行时 Goal 状态 把平台摘要升级为权威意图,或把 Guard 收据当作用户授权

语义目标与运行时 Goal 状态必须分开:Intent Loop 拥有用户意图合同,宿主拥有它实际 创建和执行的 Goal 对象及状态。

最终有效状态按 namespace 投影:

  • 存在安全 Intent Loop 绑定时,它是 intent namespace 的唯一 owner;Continuity 只 引用该合同并拥有 operational/lifecycle namespace。
  • 没有绑定时,Continuity 只能用自己的精确用户确认协议维护 standalone intent;这 是独立模式,不是第二份 Intent Loop 真相。
  • Guard 只读判断,Host 只执行与审批。
  • 平台摘要、检索拼装、模型记忆、handoff 和子 Agent 输出只是缓存或候选。

Intent Loop 到 Continuity

未来自动绑定必须同时提供:

  • 稳定且不可变的 contract_ref;
  • 仅在经用户授权的实质变更时严格递增的 contract_version;
  • provider 规范化投影的 snapshot_sha256;
  • 最小状态项及其原始 source refs;
  • 映射后状态项的规范 items_digest。

当前核心已测试版本回退、同版本碰撞和 hash 不一致,但 Codex MCP 与 DSH tools 都不 暴露 provider/token 字段。模型、用户或 Skill 不得自行提供 token,也不得调用内部 方法绕过身份边界。

截至本版本,Intent Loop 仍没有一条同时满足不可变单调 revision、规范 hash、来源 完整且模型不可伪造身份的已发布 producer 通道。因此,同时安装两个插件不会自动形成 共享真相。实时适配器只能运行在模型不可见的受信宿主进程中。

预定最小映射:

Intent Loop facet Continuity kind
outcome objective
hard_constraint hard_constraint
unknown open_question
disagreement dispute

success_signal、failure_signal、soft_constraint 与 tradeoff 保持 provider-owned reference;未经协议版本迁移不能偷偷变成新的 Continuity kind。

Continuity 到 Execution Fidelity Guard

本节与 Execution Fidelity Guard v0.2.2 契约 及独立的 DeepSeek Harness Guard adapter v0.1.0-alpha.2 对齐。

Guard 读取的用户意图合同

Intent Loop 若可用,Guard 读取 provider envelope 与恰好七个顶层字段的只读 projection:

{
  "envelope": {
    "schema_version": "1.0",
    "contract_ref": "intent:stable-task-id",
    "contract_version": 1,
    "source": "user-intent-plugin",
    "source_message_refs": [],
    "snapshot_sha256": "canonical projection 的小写 SHA-256",
    "updated_at": "2026-09-01T00:00:00.000Z"
  },
  "projection": {
    "objective": "用户要求的结果",
    "primary_object": "被修改或交付的对象",
    "delivery_surface": ["repository"],
    "scope": {
      "include": ["workspace"],
      "exclude": []
    },
    "must_and_must_not": {
      "must": [],
      "must_not": []
    },
    "authorization": {
      "allowed": [],
      "requires_user": [],
      "forbidden": []
    },
    "completion_evidence": []
  }
}

七个 projection 字段固定为 objective、primary_object、 delivery_surface、scope、must_and_must_not、authorization 和 completion_evidence;多余字段直接校验失败。Guard 递归排序对象键、保留数组 顺序后计算 projection hash。

  • contract_ref 是一个用户意图的稳定身份。
  • contract_version 是正整数;目标、对象、交付面、范围、约束、授权或完成证据发生 经用户授权的实质变化时,Intent owner 必须递增版本。
  • 同一 (contract_ref, contract_version) 对不可变;同一投影可重序列化,内容变化 必须提高版本。
  • snapshot_sha256 只证明当前文档与投影一致。Guard 0.2.2 没有全局版本 ledger,不能证明已被擦除的历史中从未复用版本,也不能保证跨机器全局单调。
  • provider 无效时 Guard 保持未绑定和 advisory,不升级平台摘要补齐缺口。
  • 没有 Intent Loop 时,可读取同一七字段 TaskContractLite;Guard 用内容派生身份和 fallback version 1。它不是 provider-owned truth,也不能携带调用者自选的旧 envelope。

Context Continuity 不生成或修改这份 provider envelope,也不把 Guard receipt 当作 用户授权。

Wire 版本

  • provider envelope、TaskContractLite、Continuity snapshot 与 Guard decision receipt 使用 wire 1.0。
  • Guard normalized event 与 evidence record 使用 wire 2.0;其中 facts 是已 声明的开放扩展点。
  • shadow-pilot summary 使用 wire 1.1。
  • 包版本与 wire schema_version 相互独立;不兼容 shape 需要新的 major,兼容字段 增加需要记录新的 minor。

保留的 Continuity snapshot

Context Continuity 不伪装成 intent provider。它只保留另一份只读、最小交换 shape:

{
  "schema_version": "1.0",
  "contract_ref": "intent:stable-task-id",
  "contract_version": 1,
  "phase": "implementation",
  "open_commitments": ["next:verify-release"],
  "evidence_refs": ["artifact:sha256:..."],
  "captured_at": "2026-09-01T00:00:00.000Z"
}

字段规则:

  • schema_version 只接受 1.0;
  • contract_ref/version 只引用 Intent owner,不由 Continuity 递增;
  • phase 必须是非空字符串,只取当前 verified 的 operational phase,否则为 unknown;
  • open_commitments 只含 open_question/dispute 稳定 ID 和 verified next_action;stale/unverified 动作不导出为可执行承诺;
  • evidence_refs 只含当前 verified 引用,不复制正文;
  • captured_at 只表示捕获时间,不决定优先级。

本项目 producer 对两个数组额外要求 uniqueItems: true;这是 Guard v0.2.2 接收 shape 的更严格子集,不放宽 Guard 的 tagged schema。

Guard 0.2.2 不会加载该 snapshot;不存在实时 Continuity producer 或 consumer bridge。独立的非官方 DSH Guard adapter 0.1.0-alpha.2 以 DeepSeek Harness 0.1.2-alpha.2 为兼容目标,遵守相同的无写回边界,但也不加载该 snapshot。它与 本项目面向 DSH 0.1.1-rc.2 的 Continuity adapter 是两个独立插件,不能混装后 推定为自动集成。

写回和冲突规则

  • Guard 永不写回 Intent Loop 或 Context Continuity。
  • Continuity 不通过 Guard 的 deny/ask/receipt 修改用户意图。
  • Guard 收据若未来成为 evidence,只能由模型不可见的受信适配器作为候选导入,并保留 原 contract_ref/version;模型不能自行标为 verified。
  • 新用户纠正高于旧快照;standalone Continuity 仍要求完整提案的第二次精确确认。
  • provider 不可用或契约无效时保持未绑定或最后已验证引用,并标记陈旧风险;不得用 平台摘要补齐缺口。
  • 合同版本、工作对象或高风险承诺不一致且无法从可靠证据修复时,暂停相关高风险动作, 只问一个必要问题。
  • Codex Guard 的 requires_user 只有 Intent owner 发布更高合同版本,或人工审查后 修改 bare TaskContractLite、使内容派生身份变化,才能解除;聊天回答不会被 Guard 自行消费。
  • DSH native ask 只授权当前那一次 pending call;它不修改合同、不写入 Intent 或 Continuity,也不授权后续相似调用。

实时集成退出门槛

市场文案只有同时满足以下条件后才能从“协议边界已对齐”改为“自动集成”:

  1. Intent Loop 提供稳定 revision、规范 hash、完整来源和模型不可伪造的 producer。
  2. 宿主提供模型不可见的 adapter 身份与凭据边界。
  3. Continuity 对真实 provider 完成成功、回退、同版本碰撞、hash 错误和缺失测试。
  4. Guard 从真实 Continuity producer 读取 snapshot,验证 exact shape 且无写回。
  5. Codex 和 DSH 分别完成组合测试,证明只有一个有效 intent owner。
  6. 禁用任一插件时其余宿主仍可 fail-open 工作。
  7. 文档明确版本兼容、升级、删除和错误恢复路径。

在此之前,三个项目可以共享协议和测试夹具,不能共享一份由谁都能改写的状态文件。