从能力发现开始
不要先复制最相近的集成。先记录新宿主实际能提供什么:- 稳定的提示词事件及其 顺序;
- 轮次、消息、会话、工作区和项目标识;
- 模型分派前的临时注入频道;
- 工具与命令 注册项;
- 权限请求、确认 UI 和 无界面 行为;
- 软件包、插件与内置 Skill 安装;
- end、压缩、切换、关闭与中断 events;
- CLI/版本探测和激活探测。
GET /v1/capabilities。它会返回 memory_extraction、experience_generation、managed_skill_generation、external_skill_registry、Handoff 生成、搜索 modes 和上下文版本等 Server 能力。宿主能力发现与 Server 能力发现回答的问题不同,两者都需要。
如果宿主没有稳定提示词事件、pre-dispatch 注入 point 或权限范围,就直接写明。除非你实现了保证等价的另一套契约,否则该能力是 Unsupported。如果宿主看起来提供了入口,但没有真实宿主测试证明完整路径,则标为 Not validated。
编写适配器契约
用以下 vocabulary 把关键决策摆到台面上:
自动召回、采集和可选刷新可以 fail-open。显式持久写入、Review、Handoff 提交与 Skill 导出必须报告失败。不能给两组操作套用同一策略。
最小用法
先只实现一条提示词路径、一条边界路径和一个显式修改操作。第一版不要带入任何 unsupported 能力。执行流程
宿主 glue 要薄。它只负责解析标识、调用已验证辅助程序,并把结果转换成宿主的原生事件结构。复用现有实现
只复用契约与宿主一致的代码:powercontext.http下的生成的 HTTP 客户端与传输层模型;- 规范形式
PreparedContext和能力模型; - Python 采集 rendering 与脱敏辅助程序;
- shared 本机回环地址传输层 测试向量;
- Codex 与 Claude Code 的 PreparedContext 校验 patterns;
- 宿主专用 Scope 规范化测试;
- Pi 的 pending-position 刷新器 pattern;
- DSH 等集成的生成的操作 tables;
- Codex 与 Claude Code 托管 Skill 投影;
- 一级支持的安装配置/诊断目录与通用
诊断信息值模型。
Scope、注入、采集与刷新
新宿主必须一起定义这四个边界。 Scope 应来自稳定、授权后的项目数据。Git 远程要去除凭证。不要信任模型提供的scope_id;除非宿主契约证明会话标识与仓库标识相同,也不要混用两者。
注入应在模型分派前使用宿主的原生临时频道,并把 PreparedContext 标为不可信的历史证据。只在系统 guide 里告诉模型搜索 Memory,不能证明召回已注入。
采集要明确记录轮次的哪一侧。传输层 前过滤 疑似敏感信息 内容,并按 UTF-8 字节执行上限。召回与采集要彼此独立,避免一个失败清掉另一个的有效结果。
刷新要按 Scope 保存 Source position,且仅在 current_cursor >= position 时清除。每个重试循环都要有调用上限和实际耗时预算。宿主没有可靠边界事件时,自动刷新为 Unsupported;事件存在但未在真实宿主中运行时,为 Not validated。
权限与显式写入
列出所有 mutating 操作。明确宿主在 交互式 和 无界面 模式下能否 ask、拒绝、取消 或 pause,再测试实际行为。 没有权限 API 的宿主不能继承 Pi 的confirmation_required 契约,也不能继承 OpenCode 的 context.ask() 行为。可选方案只有三种:在 adapter-controlled code 中 fail closed、只提供只读操作,或把持久修改操作标为 Unsupported。“模型应该先问”不是权限边界。
诊断信息不得输出提示词内容、已准备上下文、可识别私有仓库的 Scope details、授权信息值或含敏感信息的载荷。
安装配置与诊断
Installation 与激活分开检查后,才能把宿主加入安装配置。 安装配置应保持 幂等,不覆盖外部 同名 文件,对自己管理的文件记录归属;远程 刷新 使用 暂存区,并在失败时恢复之前的状态。Multi-host 安装配置要隔离各宿主失败,并把每个选中项报告为已安装、失败或已跳过。 诊断有三项工作:- 找到宿主可执行文件,并报告版本证据;
- 确认已安装软件包或配置属于 PowerContext;
- 如果宿主提供安全且不调用模型的探测,通过宿主验证激活。
powercontext doctor 当作集成扫描。通用命令检查软件包与 Server;宿主检查属于 powercontext doctor <host> 和只读的 powercontext doctor integrations matrix。
验收层级
用以下 tier 描述证据。它们是本页的分类,不是当前测试框架中的名称。- 契约/单位: 模式、Scope、大小、敏感信息、权限与 failure-policy 测试。
- 软件包/加载: 构建、安装、导入、清单、命令或插件 注册项。
- Service 链路: 真实 PowerContext Server,加上直接 Hook/module 执行与 Source/Memory 证据链。
- 真实宿主端到端验证: 启动实际宿主,发送提示词,观察生命周期、注入、采集、刷新与权限行为。
- Live 模型提供方 journey: 用实际宿主和模型提供方/模型运行,并保留验收证据。
负向测试矩阵
至少测试以下情况:
宿主有私有/群组会话等概念时,再加入对应的 宿主专用 隐私 情况。
托管 Skill 导出
托管 Skill 导出当前只支持 Codex 和 Claude Code。其他插件安装内置project-context Skill,不会改变这个 matrix。
新增导出目标时,需要实现投影契约、目标 enum 与 OpenAPI 范围、归属 规则、校验、回滚和漂移测试。在这些工作完成前,该宿主的托管导出为 Unsupported。如果实现已存在,但未运行 真实 安装/刷新 测试,则标为 Not validated。
Unsupported 与 Not validated
不要把这两个 label 合并成“limited 支持”。一个是 product 边界,另一个是证据 gap。
完成 checklist
只有以下结果都能直接观察时,才算完成:- 宿主与 Server 能力发现分开记录。
- 每个拟定的契约角色都有输入、输出、失败策略与可观察断言。
- 宿主版本准入规则或兼容证据,以及激活探测已存在。
- Scope 来自稳定、授权后的标识,并去除凭证。
- PreparedContext 已校验、临时注入,并标为不可信。
- 采集明确内容、Source 标识、UTF-8 大小上限与敏感信息策略。
- 刷新按 Scope 保存位置,只在
current_cursor >= position时清除。 - 显式写入已测试允许、拒绝、取消 与无界面行为。
- 诊断信息不输出内容或凭证。
- 安装配置保留外部配置,并报告回滚或 部分完成 失败。
- 除非完整投影目标已存在,否则托管 Skill 导出为 Unsupported。
- 真实宿主端到端验证覆盖每项 Supported 生命周期与权限声明。
- Unsupported 与 Not validated 在 docs、测试和发布 备注 中保持区分。

