Przejdź do głównej zawartości

Mechanizm wtyczek

Wtyczka to podpisana paczka ZIP. Speedwave nigdy nie zakłada, że podpis sprawdzony raz podczas instalacji obowiązuje też później, dlatego sprawdza go od nowa przy każdej operacji, która sięga do plików wtyczki: przy przygotowaniu kontenera, budowaniu obrazu, montowaniu zasobów, wyświetlaniu listy w interfejsie oraz podczas audytu startowego.

Weryfikator liczy skrót SHA-256 z każdego pliku w folderze wtyczki, pomijając sam plik podpisu, a następnie sprawdza podpis Ed25519 względem tego skrótu, używając klucza publicznego Speednet wbudowanego w Speedwave. Wtyczki podpisuje wyłącznie Speednet, więc wtyczka od społeczności najpierw trafia do Speednet po podpis, zamiast być podpisywana bezpośrednio przez autora. Zmiana choćby jednego bajtu w dowolnym pliku zmienia skrót, a naruszona wtyczka nie przejdzie tej weryfikacji, zanim Speedwave cokolwiek z niej uruchomi.

Zainstalowany folder wtyczki nie może się już zmienić, bo inaczej jego skrót przestanie pasować. Speedwave dzieli pliki wtyczki na dwie części. Pierwsza to folder podpisany i objęty skrótem, w którym leżą manifest, Containerfile dla wtyczek uruchamiających workera oraz wszelkie umiejętności, polecenia, agenci i hooki. Druga to osobny folder zmienny, przeznaczony na stan, który zgodnie z zamysłem zmienia się później, jak choćby znacznik oczekującej budowy.

O typie wtyczki decyduje jej manifest. Wtyczka usługi MCP dostarcza Containerfile i uruchamia skonteneryzowanego workera, opcjonalnie wraz z umiejętnościami, poleceniami, agentami lub hookami. Wtyczka z samymi zasobami nie ma niczego takiego, tylko umiejętności, polecenia, agentów i hooki, z których Claude korzysta bezpośrednio.

Paczka ZIP wtyczki zawiera kod źródłowy, a nie gotowy obraz. Instalacja buduje lokalny obraz ze zweryfikowanego źródła, dokładnie tak, jak Speedwave buduje swoich wbudowanych workerów. Może to potrwać kilka minut, a jeśli budowa się nie powiedzie, wtyczka zostaje zainstalowana, a Speedwave ponawia próbę przy kolejnym uruchomieniu, zamiast prosić cię o ponowną instalację.

Przy starcie Speedwave sprawdza podpis każdej zainstalowanej wtyczki. Jeśli któraś nie przejdzie weryfikacji, blokuje uruchomienie i wypisuje listę takich wtyczek wraz z przyczynami. Nawet podczas zablokowanego startu z poziomu CLI wciąż możesz wyświetlić listę wtyczek, usunąć je i zainstalować ponownie.

Gdy wtyczka przejdzie weryfikację, rozszerza sesję na jeden z dwóch sposobów. Kontener wtyczki usługi MCP dołącza jako worker, którego Claude wywołuje przez Tool Gateway, albo umiejętności, polecenia, agenci i hooki wtyczki z samymi zasobami stają się dla Claude dostępne bezpośrednio, bez udziału żadnego kontenera. Sam worker wtyczki nie przechowuje żadnych długotrwałych poświadczeń, a token OAuth, jeśli go potrzebuje, pochodzi od hosta, a nie z plików wtyczki.

Manifest może deklarować mostek hosta, tak jak robi to wtyczka Figma, aby sięgnąć do współpracującej z nią aplikacji Figma Desktop. Speedwave uruchamia taki mostek dla każdej zweryfikowanej, zainstalowanej wtyczki, która go deklaruje. Mostek działa nieprzerwanie i po wyłączeniu wtyczki czeka bezczynnie na swoim porcie loopback, a przy instalacji lub usunięciu wtyczki jest uruchamiany na nowo. Jeśli manifest niczego nie nadpisuje, obowiązują wartości domyślne: maksymalny rozmiar ramki 1 MiB oraz limit czasu parowania 300 sekund.

Strona szczegółów wtyczki pokazuje to w postaci karty połączenia: adres URL połączenia tylko do odczytu, zamaskowany token, który da się odsłonić i skopiować, oraz kropkę statusu. Kropka sygnalizuje, że połączenie jest aktywne, że aplikacja towarzysząca połączyła się i czeka na workera, albo że trwa oczekiwanie na połączenie.

Zobacz używanie wtyczek, gdzie opisujemy instalację i włączanie wtyczki, oraz pisanie wtyczki, gdzie pokazujemy, jak zbudować i podpisać własną.