新增功能
這是 OpenClaw 核心開發者的貢獻者指南。如果你正在建立外部外掛,請改為參閱 建立外掛。
- 外掛 = 所有權邊界
- 功能 = 共用核心合約
何時建立功能
當以下所有情況都為真時,建立新功能:- 多個供應商可合理地實作它
- 通道、工具或功能外掛應在不在意供應商的情況下使用它
- 核心需要擁有備用、政策、設定或傳遞行為
標準序列
- 定義具型別的核心合約。
- 為該合約新增外掛註冊。
- 新增共用執行階段幫助程式。
- 連接一個真實供應商外掛作為驗證。
- 將功能/通道消費者移至執行階段幫助程式。
- 新增合約測試。
- 記錄營運者面向的設定和所有權模型。
哪些內容放在何處
核心:- 請求/回應類型
- 提供者登錄 + 解析
- 備用行為
- 設定綱要和標籤/幫助
- 執行階段幫助程式表面
- 供應商 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- 一個或多個
extensions/<vendor>/... - 設定/文件/測試
範例:圖片生成
圖片生成遵循標準形狀:- 核心定義
ImageGenerationProvider - 核心公開
registerImageGenerationProvider(...) - 核心公開
runtime.imageGeneration.generate(...) openai和google外掛註冊供應商支援的實作- 未來供應商可註冊相同合約,而無需變更通道/工具
agents.defaults.imageModel= 分析影像agents.defaults.imageGenerationModel= 生成影像
複查檢查清單
在傳遞新功能前,驗證:- 無通道/工具直接匯入供應商程式碼
- 執行階段幫助程式是共用路徑
- 至少一個合約測試斷言捆綁所有權
- 設定文件命名新模型/設定金鑰
- 外掛文件說明所有權邊界