Skip to content

统一适配层设计

如果你要同时支持多个 provider,建议不要让业务层直接面对每家的原始响应结构。

推荐中间结构

ts
export interface NormalizedToolCall {
  provider: 'openai' | 'anthropic' | 'gemini'
  id: string
  name: string
  input: Record<string, unknown>
  raw: unknown
}

export interface NormalizedToolResult {
  id: string
  name: string
  output: unknown
  isError?: boolean
}

为什么值得做

好处有三个:

  1. 业务执行层更稳定
  2. 新增 provider 时只改 adapter
  3. 日志和调试口径更统一

一条很实用的原则

provider 差异留在边界层,业务逻辑只吃统一结构。

这样后面你再加流式、并行、重试、监控,复杂度会低很多。

聚焦 OpenClaw、tool_calls、function calling 与 agent 实战。