兼容层要吸收版本差异
Agent SDK 的多版本兼容,真正要兼容的不是依赖声明,而是运行时事件语义。只把 peer range 写成 ^6 || ^7,却把两代 SDK 的回调、结果和字段差异泄漏给上层,最后只是把升级成本转移给每个应用。
Cloudflare Agents 0.19.0 的 AI SDK v6/v7 兼容改动很典型:@cloudflare/think 保留稳定的调用方 API,在 SDK 边界把 v6 的 { success, output, error, durationMs, stepNumber } 与 v7 的 { toolOutput, toolExecutionMs } 归一成同一个 ToolCallResultContext;同时用兼容矩阵分别安装 ai@6 和 ai@7,做类型检查与 workers 测试。这里 stepNumber 在 v7 中不存在,不能假装补出一个“看似完整”的值,而要把信息缺失作为契约的一部分。
对 OPC 类平台,provider adapter 不应只是字段改名层,而应拥有一套 canonical event model:工具完成、流结束、usage、取消和错误先归一化,再投影给 UI、trace、重试和上层 Agent。否则一次 SDK 升级会同时污染 prompt、回放、观测和插件接口;而只测默认版本,也会让兼容性在真正的消费者环境里才暴露。
你的 Agent runtime 是否有一套独立于模型 SDK 的 canonical event contract,还是每次换 provider/SDK 都要把差异传遍业务层?