Skip to main content

3. Czat z Orin, Kuźnia, Muzyka i Stream — Rozrywka w Warsztacie

Źródło: repo afterlife/docs/api/03-czat-kuznia-muzyka-stream-rp.md — edytuj w repo, nie tutaj.

Czat z Orin, Kuźnia, Muzyka i Stream — Rozrywka w Warsztacie

Orin ze zwojami Kroniki przy terminalach

Trąca łapką mikrofon i podkręca suwaki na mikserze! Słyszysz mnie dobrze, nyah~? Kiedy nie zjeżdżamy wózkiem do kopalni Nidarelu, w naszym Warsztacie i tak cały czas coś gra, świeci albo maluje obrazy! Na tej stronie naszej księgi zebrałam wszystkie trzynaście ścieżek API, którymi rozmawiasz ze mną w okienku czatu, rozpalasz ogień w Kuźni (ComfyUI), wrzucasz kawałki na wspólną kolejkę muzyczną i oglądasz strumienie wideo na żywo! strzyże uszami


Czat ze mną i Kuźnia obrazów (4 ścieżki)

Moje okienko czatu na stronie (OrinAIWindow) oraz komendy na Discordzie korzystają ze wspólnego mózgu i wspólnej kolejki! Ponieważ karta graficzna Majstra obsługuje jednocześnie modele językowe (Ollama), generowanie grafiki (ComfyUI) oraz same gry, nad wszystkim czuwa bramka Kuźni (lib/forge.ts).

Endpoint Metody Dostęp Opis działania i parametry
/api/chat GET, POST Ciasteczko sesji Discord Główny punkt rozmowy ze mną! GET zwraca historię kontekstu i status; POST przyjmuje wiadomość, sprawdza czy pytasz o status serwerów/Vikunji, steruje światłami Home Assistanta (dla uprawnionych), generuje obrazek lub odpowiada przez wybrany model AI. Jeśli GPU jest zajęte, wrzuca zadanie do kolejki orinQueue.
/api/chat/queue/[id] GET, POST Ciasteczko sesji Discord Obsługa kolejki moich odpowiedzi! GET pozwala przeglądarce lub botowi odpytywać o status zadania (pending, resolved, error), tekst odpowiedzi i wygenerowany obrazek. Zwraca 404, jeśli zadanie nie należy do ciebie! POST oznacza odpowiedź jako dostarczoną (markOrinQueueItemDelivered), żebym po restarcie nie wysłała jej na Discordzie dwa razy.
/api/generate POST Sesja Discord + uprawnienie w grafie AI / rola Zwłoki w Taczce Bezpośrednie wykuwanie mediów w Kuźni (wywoływane m.in. przez komendę /generate). Przyjmuje { preset, prompt }. Sprawdza wolne miejsce na dysku AI (blokada powyżej 95%), rezerwuje slot w Kuźni (acquireForgeSlot) i zwraca surowe bajty wygenerowanego pliku!
/api/forge-request GET, POST Sesja Discord (GET), Uprawnieni do generowania / Majster (POST) Sterowanie bramką Kuźni w trybie GAMING! GET zwraca stan Kuźni (state), liczbę czekających (waiters) i oczekującą prośbę (pending). POST pozwala otworzyć lub zamknąć Kuźnię — a jeśli Majster akurat w coś gra (isLikelyGaming), wysyła mu prywatną wiadomość z przyciskami zatwierdzenia lub odrzucenia prośby!

Jak działa ochrona Kuźni i dysku?

Zanim pozwolę ci wygenerować obrazek przez /api/generate albo /api/chat, sprawdzam trzy rzeczy, nyah~:

  1. Czy w grafie uprawnień (canInvokeOrLegacy) twoja rola ma połączenie can_invoke do wybranego presetu capability:orin.image.<preset>.
  2. Czy dysk roboczy AI nie przekroczył progu 95% zapełnienia (AI_DISK_BLOCK_PCT).
  3. Czy Kuźnia nie jest wygaszona z powodu gry Majstra! Zamknąć Kuźnię po skończonej pracy może każdy uprawniony, ale zatwierdzić prośbę podczas rozgrywki może wyłącznie sam Majster (isOwner).

Wspólna Kolejka Muzyczna (6 ścieżek)

Jak już wiesz z poradnika na wiki, mam jedną wspólną kolejkę muzyczną dla strony ariku.pl/music i kanałów głosowych na Discordzie! kiwa głową w rytm muzyki Najpierw szukam utworu w naszej lokalnej bibliotece, a jeśli go nie ma — pobieram go z YouTube, indeksuję i dopiero puszczam w eter.

Endpoint Metody Dostęp Opis działania i parametry
/api/music/search GET Ciasteczko sesji Discord Przeszukuje naszą zaindeksowaną bibliotekę muzyczną po tytule lub artyście i zwraca gotowe do odtworzenia utwory.
/api/music/youtube GET Ciasteczko sesji Discord Wyszukuje filmy lub playlisty na YouTube według wpisanej frazy albo wklejonego linku URL.
/api/music/play POST Ciasteczko sesji Discord Dodaje wybrany utwór do kolejki! Jeśli pochodzi z naszej biblioteki — trafia tam od razu; jeśli z YouTube — uruchamia zadanie pobierania i indeksacji w tle.
/api/music/queue GET, DELETE Ciasteczko sesji Discord GET zwraca aktualnie grany utwór oraz całą listę zaplanowanych piosenek w kolejce. DELETE pozwala wyczyścić kolejkę lub usunąć z niej własne utwory („usuń moje”).
/api/music/control POST Ciasteczko sesji Discord Sterowanie odtwarzaczem na żywo: przyjmuje komendy pause (pauza), resume (wznów) oraz skip / next (następny utwór).
/api/music/jobs GET Ciasteczko sesji Discord Zwraca status trwających zadań pobierania z YouTube (pobieram… → indeksuję… → w kolejce), dzięki czemu pasek postępu na stronie wie, kiedy piosenka jest gotowa!

Strumieniowanie Wideo — Stream i MediaMTX (3 ścieżki)

Kiedy ktoś ze społeczności odpala transmisję dla znajomych w Warsztacie, obraz leci przez nasz serwer MediaMTX prosto do odtwarzacza HLS na stronie!

Endpoint Metody Dostęp Opis działania i parametry
/api/stream/key GET, POST, DELETE Ciasteczko sesji Discord Zarządzanie indywidualnym kluczem transmisji użytkownika do programu OBS (odczyt, wygenerowanie nowego klucza lub jego unieważnienie).
/api/stream/queue GET, POST Ciasteczko sesji Discord Obsługuje kolejkę aktywnych streamerów oraz stan pokoju oglądania na żywo.
/api/stream/hls/[...path] GET Ciasteczko sesji / Publiczny w trybie GAMING Proxy dla strumienia wideo HLS (m3u8 oraz segmenty .ts / .m4s) z serwera MediaMTX. Przekazuje ścieżkę [...path] bez wystawiania wewnętrznych portów serwera na świat!

Na tej trzeciej stronie księgi opisałam dla ciebie dokładnie 13 ścieżek API (4 dla czatu i Kuźni, 6 dla muzyki oraz 3 dla streamu). Przeciąga się leniwie na mikserze, chowa pazurki i podkręca basy w słuchawkach!