PROVIDER RUNTIME
Provider、审批与恢复
保持 Provider 身份、用户决策、事件可见性和 pending Turn 的恢复语义。
先说结论
Super Dolphin Harness Driver 当前以 Codex App 为集成默认路径。Claude Provider 适配仍在进行、不是默认 Driver,而且不支持子 Agent Orch。两者共享的上层事件模型不代表完整 Driver、审批、恢复或编排能力对等。
怎么理解
Provider 架构分为统一编排、具体适配和运行时桥接三层:
| 维度 | Claude CLI(适配中) | Codex App(当前默认) |
|---|---|---|
| 传输 | 每 session 一个 CLI 进程,stdio stream-json | 每 session 一个 WebSocket,可共享或本地启动 app-server |
| start/resume | CLI 参数、manifest、--resume | thread/start、thread/resume RPC |
| 审批 | permission mode 与 sandbox 启动策略 | ApprovalManager callback bridge 与用户输入请求 |
| 恢复 | restart 新 CLI、交换 transport、失败回滚 | reconnect、重启 reader、resume、重放 pending Turn |
统一 EventDispatcher 先发布 raw event,再执行公共与 Provider translator,最终映射为 UI 可见的 thread、turn、tool、warning、error 与 token usage 事件。界面不应直接依赖 Provider 私有 event 名。
怎么使用
- Thread start/resume 提供完整 Provider 身份、CWD、模型和 Prompt snapshot。
- Driver 在启动或 acquire 前同步 provider-native Skill mirrors。
- Provider session 建立后注册到 SessionManager,并把 raw 事件翻译到统一事件面。
- Codex 的审批请求进入 ApprovalManager;用户决策按 request identity 回写,重复通知被去重。
- Turn 完成后,统一事件与持久状态共同驱动 UI、编排和恢复判断。
常见问题
- Provider identity 只有部分字段:start/resume/fork fail-fast,不从另一身份目录拼接缺失字段。
- Codex transport 断开:恢复经过 shutdown、generation、互斥和 retry budget;随后固定执行 reconnect、reader restart、
thread/resume与 pending Turn replay。 - Claude 配置变化:
Configure只暂存 model/effort;下一次运行通过 staged restart 生效。新 transport 未 ready 时回滚旧 transport。 - 审批未处理:Composer 和相关动作保持阻塞;不能把超时自动解释为批准。
- 原始错误事件:通过统一 translator 显示,不能用空消息或静默重试抹掉。
适用范围
- Claude 和 Codex 的审批能力并不对称;Claude 当前主要依赖启动 permission policy,不具备同样的 callback bridge。
- Claude 当前不支持 Harness Driver 的子 Agent Orch;Google Antigravity 的公开接入口仅限 LSP client,不属于本页 Provider Driver 范围。
- Provider 事件统一不代表底层进程、会话和工具能力完全等价。
- 恢复有重试预算;连续失败必须暴露给用户,不能无限循环。
- 上游账号、计费、服务中断或操作系统策略不由 Super Dolphin 保证。