问题描述
目前 packages/core/src/contracts/data-engine.ts 中定义的 DriverInterface 与 packages/spec/src/contracts/data-driver.ts 的 IDataDriver 存在明显分裂。迁移和新开发的数据驱动插件(如 driver-sql、driver-memory)的实现对象和测试标准不一致,导致:
- 插件实现时不敢只实现
IDataDriver(spec),而是 fallback 到 DriverInterface(core),漏掉协议方法,实际签名不合规。
- 测试可被
as any 绕过类型不对齐,CI 测不出实现缺口。
- 文档、代码和测试三分天下,生态长期不可持续。
主要分歧
DriverInterface(core)为最小集合,仅有 connect/disconnect + CRUD + bulk(共13方法),无 supports、upsert、stream、事务、schema 管理、explain等高级能力
IDataDriver(spec)为基础协议,28方法(含批量、schema、事务、explain、health、dropTable、capabilities、findStream等)
- 两者都是"权威",但所有驱动实际只实现 core 导致协议缺口大量潜伏
推荐修复方案
- 单一权威: 明确以
spec 仓库的 IDataDriver 为唯一强制标准,彻底弃用 core/DriverInterface,所有插件以此为唯一实现合同
- 完整对齐: 用 Zod Schema + TS interface 驱动,制定签名类型约束不可落空
- 接口整合: 如果有历史兼容诉求,拆为"MinimalDriver"+"SpecDriver",但 CI 和主流插件只测试 SpecDriver
- 协议检查工具: CI强制所有插件类型匹配 IDataDriver,否则构建/测试禁止通过
- 清理 legacy fallback: 删除 driver-sql/driver-memory 里对旧协议 key 的容错逻辑 (
filters/sort/skip etc),全部只认标准 key
优先级与影响
- 优先级:P0(架构层面红线)
- 影响范围: 所有 Driver 插件实现、协议文档、核心用例、内核注册机制
- 影响版本: v3.x/v4.x
期望产出
- 技术决策:统一标准接口与实现
- 签名重构 PR
- 插件/内核/测试/文档同步更新
相关文件:
问题描述
目前
packages/core/src/contracts/data-engine.ts中定义的DriverInterface与packages/spec/src/contracts/data-driver.ts的IDataDriver存在明显分裂。迁移和新开发的数据驱动插件(如 driver-sql、driver-memory)的实现对象和测试标准不一致,导致:IDataDriver(spec),而是 fallback 到DriverInterface(core),漏掉协议方法,实际签名不合规。as any绕过类型不对齐,CI 测不出实现缺口。主要分歧
DriverInterface(core)为最小集合,仅有 connect/disconnect + CRUD + bulk(共13方法),无 supports、upsert、stream、事务、schema 管理、explain等高级能力IDataDriver(spec)为基础协议,28方法(含批量、schema、事务、explain、health、dropTable、capabilities、findStream等)推荐修复方案
spec仓库的IDataDriver为唯一强制标准,彻底弃用 core/DriverInterface,所有插件以此为唯一实现合同filters/sort/skipetc),全部只认标准 key优先级与影响
期望产出
相关文件: