Spaces:
Running
Running
File size: 9,635 Bytes
6f4aa22 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 | # 三产品集成契约
状态:冻结用于 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 契约](https://github.com/rrrrrredy/execution-fidelity-guard/blob/v0.2.2/docs/integration-contract.md)
及独立的
[DeepSeek Harness Guard adapter v0.1.0-alpha.2](https://github.com/rrrrrredy/dsh-execution-fidelity-guard/releases/tag/v0.1.0-alpha.2)
对齐。
### Guard 读取的用户意图合同
Intent Loop 若可用,Guard 读取 provider envelope 与恰好七个顶层字段的只读
projection:
```json
{
"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:
```json
{
"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. 文档明确版本兼容、升级、删除和错误恢复路径。
在此之前,三个项目可以共享协议和测试夹具,不能共享一份由谁都能改写的状态文件。
|