概述

Provider 插件为 OpenClaw 添加模型提供商(LLM)。一个最小的文本 Provider 需要 id、label、auth 和 catalog。Provider 插件还可以注册语音、实时转录、实时语音、媒体理解、图像/视频/音乐生成、Web 抓取和 Web 搜索能力(混合能力插件)。

核心 API

注册 Provider

api.registerProvider({
  id: "acme-ai",
  label: "Acme AI",
  docsPath: "/providers/acme-ai",
  envVars: ["ACME_AI_API_KEY"],
  auth: [createProviderApiKeyAuthMethod({ ... })],
  catalog: {
    order: "simple",  // simple | profile | paired | late
    run: async (ctx) => {
      const apiKey = ctx.resolveProviderApiKey("acme-ai").apiKey;
      if (!apiKey) return null;
      return {
        provider: {
          baseUrl: "https://api.acme-ai.com/v1",
          apiKey,
          api: "openai-completions",
          models: [{ id: "acme-large", name: "Acme Large", reasoning: true, ... }],
        },
      };
    },
  },
  resolveDynamicModel: (ctx) => ({ id: ctx.modelId, provider: "acme-ai", ... }),
});

完整 Provider 钩子(按调用顺序)

#钩子用途
1catalog模型目录或基础 URL 默认值
10resolveDynamicModel接受任意上游模型 ID
11prepareDynamicModel解析前的异步元数据获取
18createStreamFn完全自定义 StreamFn 传输
19wrapStreamFn自定义请求头/正文包装器
25matchesContextOverflowErrorProvider 拥有的溢出检测
26classifyFailoverReasonProvider 拥有的速率限制/过载分类
30resolveThinkingProfile模型特定的 /think 选项集
35prepareRuntimeAuth推理前的令牌交换
38createEmbeddingProviderProvider 拥有的嵌入适配器
39buildReplayPolicy自定义转录重放/压缩策略

共享家族构建器

import { buildProviderReplayFamilyHooks } from "openclaw/plugin-sdk/provider-model-shared";
import { buildProviderStreamFamilyHooks } from "openclaw/plugin-sdk/provider-stream";
import { buildProviderToolCompatFamilyHooks } from "openclaw/plugin-sdk/provider-tools";
 
const GOOGLE_FAMILY_HOOKS = {
  ...buildProviderReplayFamilyHooks({ family: "google-gemini" }),
  ...buildProviderStreamFamilyHooks("google-thinking"),
  ...buildProviderToolCompatFamilyHooks("gemini"),
};

可用 Replay 家族: openai-compatible、anthropic-by-model、google-gemini、passthrough-gemini、hybrid-anthropic-openai

额外能力注册

api.registerSpeechProvider({ id, label, isConfigured, synthesize });
api.registerRealtimeTranscriptionProvider({ id, label, isConfigured, createSession });
api.registerRealtimeVoiceProvider({ id, label, capabilities, isConfigured, createBridge });
api.registerMediaUnderstandingProvider({ id, capabilities, describeImage, transcribeAudio });
api.registerImageGenerationProvider({ id, label, generate });
api.registerVideoGenerationProvider({ id, label, capabilities, generateVideo });
api.registerWebFetchProvider({ id, label, createTool });
api.registerWebSearchProvider({ id, label, search });

使用示例

// 单 Provider 简化入口
import { defineSingleProviderPluginEntry } from "openclaw/plugin-sdk/provider-entry";
 
export default defineSingleProviderPluginEntry({
  id: "acme-ai",
  name: "Acme AI",
  description: "Acme AI model provider",
  provider: {
    label: "Acme AI",
    auth: [{ methodId: "api-key", envVar: "ACME_AI_API_KEY", ... }],
    catalog: {
      buildProvider: () => ({ api: "openai-completions", baseUrl: "...", models: [...] }),
      buildStaticProvider: () => ({ api: "openai-completions", baseUrl: "...", models: [...] }),
    },
  },
});

相关页面

  • concepts/plugin-sdk-overview — SDK 注册 API
  • concepts/plugin-sdk-runtime — api.runtime 辅助工具
  • concepts/plugin-sdk-agent-harness — 原生 Agent 守护进程用这个
  • model-providers — 内置 Provider 列表