Building plugins
新增功能(貢獻者指南)
當 OpenClaw 需要新的共享領域(例如嵌入、影像生成、影片生成,或未來由供應商支援的某個功能領域)時,請使用此模式。
規則:
- 外掛 = 所有權邊界
- 能力 = 共享核心合約
請勿將供應商直接接入頻道或工具。請先定義能力。
何時建立能力
只有在以下條件全部成立時,才能建立新能力:
- 可能有多個供應商能合理地實作此能力。
- 頻道、工具或功能外掛應能使用此能力,而不必在意供應商。
- 核心需要擁有備援、政策、設定或交付行為。
如果這項工作僅限單一供應商,且尚無共享合約,請先定義合約。
標準順序
- 定義具型別的核心合約。
- 為該合約新增外掛註冊機制。
- 新增共享的執行階段輔助函式。
- 接入一個真正的供應商外掛作為驗證。
- 將功能/頻道使用端移至執行階段輔助函式。
- 新增合約測試。
- 記錄面向操作者的設定與所有權模型。
各層的職責
| 層級 | 擁有 |
|---|---|
| 核心 | 請求/回應型別;提供者登錄與解析;備援行為;設定結構描述,並在巢狀物件、萬用字元、陣列項目及組合節點上傳遞 title/description 文件中繼資料;執行階段輔助函式介面。 |
| 供應商外掛 | 供應商 API 呼叫、供應商驗證處理、供應商專屬的請求正規化,以及能力實作的註冊。 |
| 功能/頻道外掛 | 呼叫 api.runtime.* 或對應的 plugin-sdk/*-runtime 輔助函式。絕不直接呼叫供應商實作。 |
提供者與執行框架接合點
當行為屬於模型提供者合約而非通用代理迴圈時,請使用提供者掛鉤。例如,在選定傳輸方式後加入提供者專屬的請求參數、驗證設定檔偏好、提示詞覆疊,以及模型/設定檔容錯移轉後的後續備援路由。
當行為屬於執行某一回合的執行階段時,請使用代理執行框架掛鉤。執行框架可分類明確的通訊協定結果,例如輸出為空、只有推理而沒有可見輸出,或具有結構化計畫但沒有最終答案,讓外層模型備援政策能決定是否重試。
讓這兩個接合點保持精簡:
- 核心擁有重試/備援政策。
- 提供者外掛擁有提供者專屬的請求/驗證/路由提示。
- 執行框架外掛擁有執行階段專屬的嘗試分類。
- 第三方外掛回傳提示,而非直接變更核心狀態。
檔案檢查清單
新增能力時,預期會觸及以下區域:
src/<capability>/types.tssrc/<capability>/...registry/runtime.tssrc/plugins/types.tssrc/plugins/registry.tssrc/plugins/captured-registration.tssrc/plugins/contracts/registry.tssrc/plugins/runtime/types-core.tssrc/plugins/runtime/index.tssrc/plugin-sdk/<capability>.tssrc/plugin-sdk/<capability>-runtime.ts- 一個或多個內建外掛套件。
- 設定、文件、測試。
實作範例:影像生成
影像生成遵循標準模式:
- 核心定義
ImageGenerationProvider。 - 核心公開
registerImageGenerationProvider(...)。 - 核心公開
api.runtime.imageGeneration.generate(...)和.listProviders(...)。 - 供應商外掛(
comfy、deepinfra、fal、google、litellm、microsoft-foundry、minimax、openai、openrouter、vydra、xai)註冊由供應商支援的實作。 - 未來的供應商可註冊相同合約,而不必變更頻道/工具。
此設定鍵刻意與視覺分析路由分開:
agents.defaults.imageModel分析影像。agents.defaults.mediaModels.image生成影像。
請將兩者分開,讓備援與政策維持明確。
嵌入提供者
可重複使用的向量嵌入提供者,請使用 registerEmbeddingProvider(...)/合約 embeddingProviders。
此合約刻意涵蓋比記憶體更廣泛的用途:工具、搜尋、檢索、匯入程式或未來的功能外掛,
都能使用嵌入,而不必依賴記憶體引擎。記憶體搜尋
也會使用通用的 embeddingProviders。
較舊的記憶體專屬註冊 API 與 memoryEmbeddingProviders
合約已棄用。所有新的嵌入提供者都請使用 registerEmbeddingProvider
和 embeddingProviders。
審查檢查清單
發布新能力之前,請確認:
- 沒有任何頻道/工具直接匯入供應商程式碼。
- 執行階段輔助函式是共用路徑。
- 至少有一項合約測試會驗證內建所有權。
- 設定文件會指出新的模型/設定鍵。
- 外掛文件會說明所有權邊界。
如果 PR 略過能力層,並將供應商行為硬編碼至頻道/工具中,請退回該 PR,並先定義合約。
相關內容
Was this useful?