Skip to content

feat(spec): Promote LLMAdapter interface to @objectstack/spec/contracts #1011

Description

@hotlong

当前 LLMAdapter 接口定义在 packages/services/service-ai/src/adapters/types.ts(service-ai 内部),而非 @objectstack/spec/contracts。这导致:

  1. 第三方 adapter 实现(OpenAI / Anthropic / Ollama)无法仅依赖 @objectstack/spec 就完成类型对齐
  2. adapter 接口与 IAIService 的方法签名 1:1 镜像,天然属于协议层定义
  3. 其他 spec contracts(IDataDriverIHttpServer)均定义在 spec 中,LLMAdapter 是唯一例外

任务

  1. 新增 packages/spec/src/contracts/llm-adapter.ts,将以下接口从 service-ai 迁移到 spec:
    • LLMAdapter interface
    • 保留 name, chat, complete, streamChat?, embed?, listModels? 签名不变
  2. 更新 packages/spec/src/contracts/index.ts,导出 LLMAdapter
  3. 更新 packages/services/service-ai/src/adapters/types.ts
    • 改为 export type { LLMAdapter } from '@objectstack/spec/contracts' re-export
    • 或直接删除本地定义,改 import 路径
  4. 更新 service-ai 所有引用 LLMAdapter 的文件 import 路径
  5. 更新 ROADMAP.md Contract Implementation Matrix,在 AI Service 行备注中补充 LLMAdapter
  6. 运行全量测试确保无回归

验收标准

  • LLMAdapter 定义在 @objectstack/spec/contracts
  • import type { LLMAdapter } from '@objectstack/spec/contracts' 可编译
  • service-ai 所有 52 个测试通过
  • spec contracts 类型测试通过
  • CHANGELOG.md 更新

Labels: enhancement, spec, ai
Priority: P2

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions