Skip to main content
建置供應商外掛,為 OpenClaw 新增模型供應商(LLM):模型 目錄、API 金鑰驗證,以及動態模型解析。
第一次接觸 OpenClaw 外掛嗎?請先閱讀入門指南, 以瞭解套件結構和資訊清單設定。
供應商外掛會將模型新增至 OpenClaw 的一般推論迴圈。如果模型 必須透過原生代理程式常駐程式執行,且該常駐程式負責執行緒、壓縮 或工具事件,請將供應商與代理程式 控制框架搭配使用,而不要將常駐程式通訊協定 的詳細資訊放入核心。

操作說明

1

套件與資訊清單

步驟 1:套件與資訊清單

setup.providers[].envVars 可讓 OpenClaw 在不載入外掛執行階段的情況下偵測認證資訊。 當某個供應商變體應重複使用另一個供應商 ID 的驗證時,請新增 providerAuthAliasesmodelSupport 為選用設定,可讓 OpenClaw 在執行階段掛鉤尚不存在前,從 acme-large 之類的模型簡寫 ID 自動載入你的供應商外掛。ClawHub 發布需要 package.json 中的 openclaw.compatopenclaw.buildopenclaw.compat.pluginApiopenclaw.build.openclawVersion 是兩個必填欄位;省略 minGatewayVersion 時會改用 openclaw.install.minHostVersion)。
2

註冊供應商

最基本的文字供應商需要 idlabelauthcatalogcatalog 是供應商擁有的執行階段/設定掛鉤;它可以呼叫即時 廠商 API,並傳回 models.providers 項目。
index.ts
registerModelCatalogProvider 是較新的控制平面目錄介面, 用於清單/說明/選擇器 UI,涵蓋 textvoiceimage_generationvideo_generationmusic_generation 資料列。請將廠商端點 呼叫及回應對應保留在外掛中;OpenClaw 負責共用資料列 形狀、來源標籤和說明呈現。這樣就完成一個可運作的供應商。使用者現在可以執行 openclaw onboard --acme-ai-api-key <key>,並選取 acme-ai/acme-large 作為模型。

即時模型探索

如果你的供應商提供與 OpenAI 相容的 /models API,請讓 單一供應商輔助程式加入共用探索:
liveModelDiscovery: true 是公開的外掛 SDK 契約,具有以下 行為:對於非 Bearer 或非標準的清單端點,請傳遞選項,而不是 true
請勿將 endpointUrl 當作無條件使用的替代主機。其 requireBaseUrl 檢查是認證資訊隔離邊界,適用於模型清單 主機不同於推論主機的供應商。如果供應商需要自訂模型語意,而不是保守的 OpenAI 相容投射,請將該投射保留在外掛中,並使用 openclaw/plugin-sdk/provider-catalog-live-runtime 處理共用擷取 生命週期。此輔助程式提供受保護的 HTTP 擷取、供應商驗證標頭、 結構化 HTTP 錯誤、TTL 快取和靜態備援行為,且不會 將供應商政策放入 OpenClaw 核心。當即時 API 只會告訴你目前有哪些 供應商擁有的靜態目錄資料列可用時,請使用 buildLiveModelProviderConfig
index.ts
當供應商 API 傳回更豐富的中繼資料,且外掛需要自行將資料列投射為 OpenClaw 模型定義時,請使用 getCachedLiveProviderModelRows
index.ts
run 應維持受驗證機制控管,且沒有可用的認證資訊時應傳回 null。請保留離線 staticRun 或靜態備援,讓設定、文件、測試和選擇器介面不需依賴即時網路存取。請使用適合模型清單時效性的 TTL,避免在請求期間輪詢檔案系統,並且僅在上游回應不是 OpenAI 相容的 { data: [{ id, object }] } 形態時,才傳入供應商專屬的 readRows / readModelId如果上游供應商使用與 OpenClaw 不同的控制權杖,請新增小型雙向文字轉換,而不是取代串流路徑:
input 會在傳輸前重寫最終系統提示和文字訊息內容。output 會在 OpenClaw 剖析自身的控制標記或傳遞至頻道前,重寫助理文字增量與最終文字。對於僅註冊一個採用 API 金鑰驗證的文字供應商,以及單一目錄支援執行階段的內建供應商,請優先使用範圍較窄的 defineSingleProviderPluginEntry(...) 輔助函式:
buildProvider 是 OpenClaw 能解析實際供應商驗證資訊時使用的即時目錄路徑。它可執行供應商專屬的探索。buildStaticProvider 僅能用於設定驗證前可安全顯示的離線資料列;它不得要求認證資訊或發出網路請求。OpenClaw 的 models list --all 顯示目前僅會針對內建供應商外掛執行靜態目錄,並使用空白設定、空白環境,且不提供代理程式/工作區路徑。如果你的驗證流程也需要在上線引導期間修補 models.providers.*、別名和代理程式預設模型,請使用 openclaw/plugin-sdk/provider-onboard 中的預設輔助函式。範圍最窄的輔助函式為 createDefaultModelPresetAppliers(...)createDefaultModelsPresetAppliers(...)createModelCatalogPresetAppliers(...)當供應商的原生端點在一般 openai-completions 傳輸上支援串流使用量區塊時,請優先使用 openclaw/plugin-sdk/provider-catalog-shared 中的共用目錄輔助函式,而不是將供應商 ID 檢查寫死。supportsNativeStreamingUsageCompat(...)applyProviderNativeStreamingUsageCompat(...) 會從端點能力對應表偵測支援情況,因此即使外掛使用自訂供應商 ID,原生 Moonshot/DashScope 風格端點仍可選擇啟用。上述即時探索範例涵蓋 /models 風格的供應商 API。請將該探索保留在 catalog.run 內並限制於可用驗證資訊,且讓 staticRun 不使用網路,以便產生離線目錄。
3

新增動態模型解析

如果你的供應商接受任意模型 ID(例如 Proxy 或路由器),請新增 resolveDynamicModel
如果解析需要網路呼叫,請使用 prepareDynamicModel 進行非同步預熱;完成後,resolveDynamicModel 會再次執行。
4

新增執行階段掛鉤(視需要)

大多數供應商只需要 catalog + resolveDynamicModel。請依供應商需求逐步新增掛鉤。共用輔助建構器目前涵蓋最常見的重播/工具相容性系列,因此外掛通常不需要逐一手動連接每個掛鉤:
目前可用的重播系列:目前可用的串流系列:
每個系列建構器都由同一套件匯出的較低階公開輔助函式組成;當供應商需要偏離常見模式時,可以使用這些函式:
  • openclaw/plugin-sdk/provider-model-shared - ProviderReplayFamilybuildProviderReplayFamilyHooks(...),以及原始重播建構器(buildOpenAICompatibleReplayPolicybuildAnthropicReplayPolicyForModelbuildGoogleGeminiReplayPolicybuildHybridAnthropicOrOpenAIReplayPolicy)。另會匯出 Gemini 重播輔助函式(sanitizeGoogleGeminiReplayHistoryresolveTaggedReasoningOutputMode)與端點/模型輔助函式(resolveProviderEndpointnormalizeProviderIdnormalizeGooglePreviewModelId)。
  • openclaw/plugin-sdk/provider-stream - ProviderStreamFamilybuildProviderStreamFamilyHooks(...)composeProviderStreamWrappers(...),以及共用的 OpenAI/Codex 包裝函式(createOpenAIAttributionHeadersWrappercreateOpenAIFastModeWrappercreateOpenAIServiceTierWrappercreateOpenAIResponsesContextManagementWrappercreateCodexNativeWebSearchWrapper)、與 OpenAI 相容的 DeepSeek V4 包裝函式(createDeepSeekV4OpenAICompatibleThinkingWrapper)、Anthropic Messages 思考預填清理(createAnthropicThinkingPrefillPayloadWrapper)、純文字工具呼叫相容性(createPlainTextToolCallCompatWrapper),以及共用的代理/供應商包裝函式(createOpenRouterWrappercreateToolStreamWrappercreateMinimaxFastModeWrapper)。
  • openclaw/plugin-sdk/provider-stream-shared - 適用於供應商熱門路徑的輕量承載資料與事件包裝函式,包括 createOpenAICompatibleCompletionsThinkingOffWrappercreatePayloadPatchStreamWrappercreatePlainTextToolCallCompatWrappernormalizeOpenAICompatibleReasoningPayload(...)setQwenChatTemplateThinking(...)
  • openclaw/plugin-sdk/provider-tools - ProviderToolCompatFamilybuildProviderToolCompatFamilyHooks("deepseek" | "gemini" | "openai"),以及底層供應商結構描述輔助函式。
對於 Gemini 系列供應商,請讓推理輸出模式與 傳輸方式保持一致。直接使用 Google Gemini API 的供應商應使用 native 推理輸出,讓 OpenClaw 在不新增 <think> / <final> 提示詞指令的情況下使用原生思考部分。僅文字、採 Gemini CLI 風格且 解析最終 JSON/文字回應的後端,可以繼續使用共用的 google-gemini 標記式合約。部分串流輔助函式會刻意保留在供應商本機。@openclaw/anthropic-providerwrapAnthropicProviderStreamresolveAnthropicBetasresolveAnthropicFastModeresolveAnthropicServiceTier 與較低階的 Anthropic 包裝函式建構器保留在自己的公開 api.ts / contract-api.ts 接合面中,因為它們會編碼 Claude OAuth Beta 處理與 context1m 閘控。xAI 外掛同樣將原生 xAI Responses 塑形保留在自己的 wrapStreamFn 中(/fast 別名、預設 tool_stream、不支援的嚴格工具清理、xAI 專用推理承載資料移除)。相同的套件根目錄模式也支援 @openclaw/openai-provider(供應商建構器、預設模型輔助函式、即時供應商建構器)與 @openclaw/openrouter-provider(供應商建構器及上線引導/設定輔助函式)。
適用於每次推論呼叫前都需要交換權杖的供應商:
對於模型/供應商外掛,OpenClaw 大致依照以下順序呼叫鉤子。 多數供應商只會使用其中 2 至 3 個。這不是完整的 ProviderPlugin 合約;如需完整且目前準確的鉤子清單與後援說明,請參閱內部機制:供應商執行階段 鉤子。 OpenClaw 已不再呼叫、僅供相容性使用的供應商欄位,例如 ProviderPlugin.capabilitiessuppressBuiltInModel,不會列在 此處。執行階段後援說明:
  • normalizeConfig 會針對每個供應商 id 解析出一個負責的外掛(先處理內建供應商,再處理相符的執行階段外掛),且只呼叫該掛鉤,不會掃描其他供應商。Google 自有的 normalizeConfig 掛鉤負責正規化 google / google-vertex / google-antigravity 設定項目;它並非獨立的核心後援機制。
  • resolveConfigApiKey 會在供應商掛鉤公開時使用它。Amazon Bedrock 將 AWS 環境標記解析保留在其供應商外掛中;使用 auth: "aws-sdk" 設定時,執行階段驗證本身仍會使用 AWS SDK 預設鏈。
  • resolveThinkingProfile(ctx) 會接收所選的 providermodelId、選用的合併後 reasoning 目錄提示,以及選用的合併後模型 compat 資訊。僅使用 compat 選取供應商的思考 UI/設定檔。
  • resolveSystemPromptContribution 可讓供應商為某個模型系列注入具快取感知能力的系統提示詞指引。當行為屬於單一供應商/模型系列,且應保留穩定/動態快取的分割時,請優先使用它,而非舊版的外掛全域 before_prompt_build 掛鉤。
5

新增額外功能(選用)

步驟 5:新增額外功能

供應商外掛除了文字推論之外,還可註冊嵌入、語音、即時轉錄、 即時語音、媒體理解、圖片生成、影片生成、 網頁擷取及網頁搜尋。OpenClaw 將其歸類為 混合功能外掛,這是公司外掛的建議模式 (每個廠商一個外掛)。請參閱 內部原理:功能所有權請在 register(api) 內,與現有的 api.registerProvider(...) 呼叫一併註冊各項功能。只選擇需要的分頁:
供應商發生 HTTP 失敗時,請使用 assertOkOrThrowProviderError(...),讓 外掛共用有限制的錯誤本文讀取、JSON 錯誤剖析及 請求 id 後綴。
6

測試

步驟 6:測試

src/provider.test.ts

發布至 ClawHub

提供者外掛的發布方式與其他外部程式碼外掛相同:
clawhub skill publish <path> 是用來發布 skill 資料夾的另一個命令,而非外掛套件,因此請勿在此使用。

檔案結構

目錄順序參考

catalog.order 控制你的目錄相對於內建 提供者的合併時機:

後續步驟

相關內容