To jest przewodnik dla współtwórców przeznaczony dla programistów rdzenia OpenClaw. Jeśli
tworzysz zewnętrzny plugin, zobacz zamiast tego Tworzenie pluginów.
Szczegółowe informacje o architekturze (model możliwości, własność,
potok ładowania, pomocnicze funkcje środowiska uruchomieniowego) znajdziesz w dokumencie Wewnętrzna architektura pluginów.
- plugin = granica własności
- możliwość = współdzielony kontrakt rdzenia
Kiedy utworzyć możliwość
Utwórz nową możliwość tylko wtedy, gdy wszystkie poniższe warunki są spełnione:- Więcej niż jeden dostawca mógłby ją w praktyce zaimplementować.
- Kanały, narzędzia lub pluginy funkcjonalne powinny móc z niej korzystać bez znajomości dostawcy.
- Rdzeń musi odpowiadać za zachowanie mechanizmu rezerwowego, zasady, konfigurację lub dostarczanie.
Standardowa kolejność
- Zdefiniuj typowany kontrakt rdzenia.
- Dodaj rejestrację pluginu dla tego kontraktu.
- Dodaj współdzieloną pomocniczą funkcję środowiska uruchomieniowego.
- Podłącz jeden rzeczywisty plugin dostawcy jako implementację referencyjną.
- Przenieś korzystające z niego funkcje i kanały na pomocniczą funkcję środowiska uruchomieniowego.
- Dodaj testy kontraktu.
- Udokumentuj konfigurację przeznaczoną dla operatora i model własności.
Podział odpowiedzialności
Punkty integracji dostawcy i środowiska wykonawczego agenta
Używaj haków dostawcy, gdy zachowanie należy do kontraktu dostawcy modelu, a nie do ogólnej pętli agenta. Przykłady obejmują parametry żądań właściwe dla dostawcy po wyborze transportu, preferencje profilu uwierzytelniania, nakładki na prompty oraz rezerwowe trasowanie kolejnych prób po przełączeniu modelu lub profilu. Używaj haków środowiska wykonawczego agenta, gdy zachowanie należy do środowiska uruchomieniowego wykonującego turę. Środowiska wykonawcze mogą klasyfikować jawne wyniki protokołu, takie jak pusty wynik, rozumowanie bez widocznego wyniku lub ustrukturyzowany plan bez końcowej odpowiedzi, aby zewnętrzne zasady przełączania modelu mogły podjąć decyzję o ponowieniu próby. Oba punkty integracji powinny pozostać wąskie:- Rdzeń odpowiada za zasady ponawiania prób i mechanizmu rezerwowego.
- Pluginy dostawców odpowiadają za wskazówki dotyczące żądań, uwierzytelniania i trasowania właściwe dla dostawcy.
- Pluginy środowisk wykonawczych odpowiadają za klasyfikację prób właściwą dla środowiska uruchomieniowego.
- Pluginy innych firm zwracają wskazówki, a nie bezpośrednie modyfikacje stanu rdzenia.
Lista kontrolna plików
W przypadku nowej możliwości należy spodziewać się zmian w następujących obszarach: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- Co najmniej jeden dołączony pakiet pluginu.
- Konfiguracja, dokumentacja i testy.
Przykład: generowanie obrazów
Generowanie obrazów korzysta ze standardowego schematu:- Rdzeń definiuje
ImageGenerationProvider. - Rdzeń udostępnia
registerImageGenerationProvider(...). - Rdzeń udostępnia
api.runtime.imageGeneration.generate(...)i.listProviders(...). - Pluginy dostawców (
comfy,deepinfra,fal,google,litellm,microsoft-foundry,minimax,openai,openrouter,vydra,xai) rejestrują implementacje obsługiwane przez dostawców. - Przyszli dostawcy rejestrują ten sam kontrakt bez zmieniania kanałów ani narzędzi.
agents.defaults.imageModelanalizuje obrazy.agents.defaults.imageGenerationModelgeneruje obrazy.
Dostawcy osadzania wektorowego
UżywajregisterEmbeddingProvider(...) / kontraktu embeddingProviders dla
wielokrotnego użytku dostawców osadzania wektorowego. Ten kontrakt jest celowo szerszy
niż pamięć: narzędzia, wyszukiwanie, pobieranie informacji, importery lub przyszłe pluginy funkcjonalne
mogą korzystać z osadzania wektorowego bez zależności od silnika pamięci. Wyszukiwanie w pamięci
również korzysta z ogólnych embeddingProviders.
Starszy interfejs API rejestracji przeznaczony dla pamięci oraz kontrakt memoryEmbeddingProviders
są przestarzałe. Używaj registerEmbeddingProvider i
embeddingProviders dla wszystkich nowych dostawców osadzania wektorowego.
Lista kontrolna przeglądu
Przed wydaniem nowej możliwości sprawdź:- Żaden kanał ani narzędzie nie importuje bezpośrednio kodu dostawcy.
- Pomocnicza funkcja środowiska uruchomieniowego stanowi współdzieloną ścieżkę.
- Co najmniej jeden test kontraktu potwierdza własność dołączonego pluginu.
- Dokumentacja konfiguracji wymienia nowy model lub klucz konfiguracji.
- Dokumentacja pluginu wyjaśnia granicę własności.
Powiązane materiały
- Wewnętrzna architektura pluginów — model możliwości, własność, potok ładowania i pomocnicze funkcje środowiska uruchomieniowego.
- Tworzenie pluginów — samouczek tworzenia pierwszego pluginu.
- Omówienie SDK — mapa importów i dokumentacja interfejsu API rejestracji.
- Tworzenie Skills — uzupełniający obszar dla współtwórców.