成熟度与安装状态
doctor 属于安装配置/激活验收层级。它不能替代真实启动宿主、发送提示词、观察注入、采集与权限行为。最小适配器契约
把事件模型表当作时序图来读。准备事件决定哪一段用户输入成为查询;注入事件决定召回内容能存活多久;边界事件决定何时刷新已采集的 Source。宿主如果没有对应时机,就应把该行为标为不支持,而不是用过期状态模拟。
五种不同的事件模型
不能把一种宿主的停止事件、对话记录、消息修改操作或权限 UI 假设复制到另一种。
Scope 与注入
Scope 选择数据分区。它不是凭证,也不是授权信息决定。需要隔离时,应从已认证的租户/项目映射派生 Scope。 解析器的优先顺序链路要写清楚。Git/工作区标识的规范化不能带凭证,公开值必须有界,诊断信息不能泄漏 原始 Scope。还要加入跨 Scope 测试,确认相同提示词不会共享临时状态。 PreparedContext 是不可信的历史证据。先验证精确的 v1 模式与 UTF-8content_bytes,再通过当前宿主的临时频道注入。当前系统/用户指令始终优先,召回的 文本 也不能授予工具权限。
OpenCode 的 过期轮次 处理最直观,因为准备与 注入 发生在不同事件。缓存键必须精确匹配最新版本用户轮次。ID 准入规则可以阻止 注入错误轮次,但 并发 乱序准备仍可能让较新的注入丢失;该竞态为 Not validated。每种宿主都要保证一个提示词的上下文不会进入后续提示词。
自动安全契约
自动召回、采集与可选刷新属于辅助路径。预期内的 Server 调用、校验、大小与截止时间失败通常采用 fail-open:省略本次 PowerContext 上下文,并保留宿主原任务或下游结果。
Claude Code、DSH、OpenCode 与 Pi 会分别保护规则召回和采集。Codex 对预期失败也这样处理,但意外召回异常可能跳过本次采集。这个较弱的边界必须保留在文档里。
五种实现都会解析精确的
powercontext.prepared-context.v1 结构、验证 UTF-8 字节数、把通用响应体限制在 1 MiB,并在传输层代码拒绝重定向。不过测试深度不同。Codex 有慢响应体截止时间回归测试,OpenCode 的直接响应大小测试最完整。并非每种宿主都有等价的响应体超限或完整共享预算测试,因此统一行为是 Not validated。
DSH 是传输层例外:当前配置没有执行另外四种集成使用的安全基础 URL 与 Bearer 请求头校验。不能从共同契约推导出 DSH 也有相同的 HTTPS 或本机回环地址保证。
诊断信息必须排除提示词、原始 Scope、PreparedContext、Source 内容、响应体与授权信息令牌。
采集不等于 Memory
- Codex 与 Claude Code 捕获 submitted 提示词,使用 200,000-character 上限,没有自动 secret-pattern 过滤器。
- DSH 用全部批次 文本 召回,但只捕获源自用户的内容块;疑似敏感信息的 文本 不采集。
- OpenCode 捕获符合条件的提示词,并执行疑似敏感信息的与 UTF-8 字节过滤器。
- Pi 执行敏感信息与 UTF-8 字节过滤器,然后立即刷新或记录待处理位置。
- DSH、OpenCode 和 Pi 的敏感信息过滤器只影响 持久化,不阻止召回传输。
- 五种宿主都不会捕获最终助手响应,也不会自动记录 Task Outcome。
刷新 coordination
刷新器需要目标 Source 位置、有界调用计数或截止时间,以及current_cursor >= position 之类的完成检查。在比较前清除待处理状态会丢工作;无限重试则会阻塞宿主。
Codex、Claude Code、DSH 与 OpenCode 支持可选立即刷新。Pi 还会按 Scope 保留最大待处理位置,并在 agent_end、session_before_compact、session_before_switch 与 session_shutdown 重试。Pi 的 压缩 重试与 immediate-failure 保留策略有已提交测试;其他生命周期边界与 关闭阶段 截止时间的验证深度不同。
DSH 与 OpenCode 没有 Pi 的待处理刷新器。它们的立即刷新路径也没有相同深度的完成/失败测试,不能写成 boundary-flush 支持。
显式修改操作与权限
显式操作不继承自动 fail-open。Memory 写入、Handoff 提交、Review 决定、Task Outcome 或 Skill 导出都必须返回成功或可见失败。
Candidate 批准/拒绝/修订不应成为 silent 模型工具。DSH 与 OpenCode 会刻意把批准排除在模型范围外。MCP 工具 visibility 不是授权信息,允许尝试操作也不证明操作成功。
内置 Skill 与托管导出
五种集成都会随包提供或注册内置宿主 guidance。它可以告诉宿主何时使用 MCP/原生工具,但不能证明托管 Skill 导出。 托管导出会生成带来源信息和漂移检查的 versioned 投影。Codex 与 Claude Code 为 Supported;DSH、OpenCode 和 Pi 为 Unsupported。导出后的托管 Skill 在真实 Codex 或 Claude Code 会话中的加载/执行仍是 Not validated。安装配置与诊断契约
一级支持的安装程序 应做到:- 准入规则已知宿主版本,并如实标记兼容证据;
- 幂等安装,同时保留外部配置;
- 记录归属,拒绝同名外部文件;
- 回滚,或报告清楚的 partial-failure 状态;
- 区分已安装、activated、Server-ready 与真实宿主端到端验证;
- 提供有界
doctor,并另设真实宿主激活探测。
opencode serve 并验证激活 随机标识。这些检查都不能证明实时召回/采集/权限链路。
负向实验
声称适配器完成前,执行这些检查:- Server 停止:原宿主任务继续。
- 错误 认证:401/403 与空结果 Memory 保持可区分。
- 未知模式:不注入。
- Oversize 与截止时间:有界退出。
- 重定向:授权信息不被转发。
- 召回/采集 split:两个方向都测试,包括意外 Codex 召回失败。
- 过期轮次:mismatched、已删除 或乱序标识不能注入错误上下文。
- No UI 或权限 denied:不执行持久修改操作。
- 刷新 lag:有界重试,不虚报完成。
- 诊断信息:不含内容、Scope 或凭证。
复用当前实现
仓库已有可复用部分,但它们不是一个 SDK:- 传输层策略与本机回环地址/重定向 测试向量;
- Codex 与 Claude Code PreparedContext parser;
- 各宿主 Scope 规范化测试;
- Pi 待处理 Source 刷新器;
- DSH 生成的操作 table;
- Codex 与 Claude Code Skill 投影;
cli/hosts.py内的安装配置与诊断目录。
HostAdapter class。
当前不支持或未验证
完成检查
只有以下结果都能直接观察时,才算完成:- 事件、标识、注入频道与过期状态规则符合所选宿主。
- Scope 来自稳定的授权标识,并有跨 Scope 负向测试。
- PreparedContext 保持有界、临时且不可信。
- 召回、采集、刷新、Candidate 抽取与 Memory 提交仍是独立观察。
- 自动 fail-open 声明与实际异常边界一致。
- 显式修改操作失败与权限拒绝保持可见。
- 重定向、模式、大小、截止时间、过期轮次、无界面与 flush-lag 测试覆盖所有承诺行为。
- 诊断信息不含提示词、Scope、上下文、Source 内容、响应体或令牌。
- 安装配置保留外部文件,并区分已安装、启用状态、Server-ready 与端到端验证。
doctor没有被写成真实宿主端到端验证。- 内置 Skill 没有被写成托管 Skill 导出。
- Unsupported 与 Not validated 保持分开。
单元级契约测试、服务链路、安装配置/诊断、真实宿主端到端验证与 负向/安全性五层都有 observable 证据后,才能把第六种宿主加入一级支持的目录。

