AI na urządzeniu w całym iOS 27: Spotlight i Media
W iOS 26 duży model językowy działający na urządzeniu mieszkał wewnątrz aplikacji. Otwierało się LanguageModelSession, dołączało narzędzia, a model wnioskował na podstawie kontekstu, który mu przekazano1. iOS 27 przenosi ten sam model o poziom wyżej. Apple wpina go teraz w Core Spotlight, dzięki czemu istniejący indeks wyszukiwania aplikacji staje się źródłem osadzenia (grounding) dla modelu2, oraz w AVFoundation, dzięki czemu urządzenie transkrybuje i tłumaczy napisy podczas odtwarzania bez napisania przez aplikację choćby jednej linii kodu wnioskowania3. To właśnie jest tytułowa zmiana: model na urządzeniu staje się usługą systemową, a nie tylko API wewnątrz aplikacji. Ta sama inteligencja, którą wywołuje się bezpośrednio z własnego kodu, działa również pod spodem wyszukiwania i pod spodem mediów, dostępna przez frameworki, z których już się korzysta.
Ten wpis omawia dwie z tych systemowych powierzchni na podstawie ich sesji z WWDC26: wyszukiwanie z użyciem LLM przez Core Spotlight (sesja 246) oraz napisy generowane przez AI Apple z podglądem stylu na ekranie (sesja 256). Jeśli nie zna się jeszcze prymitywów frameworka stojących za pierwszą z nich, wprowadzenie Foundation Models — LLM na urządzeniu oraz wpis o wywoływaniu narzędzi w iOS 27 przygotowują grunt.
W skrócie
SpotlightSearchToolprzyjmuje protokółToolz Foundation Models, dzięki czemu model językowy może bezpośrednio przeszukiwać indeks Core Spotlight aplikacji w celu wygenerowania kontekstowej odpowiedzi. Apple udostępnia go na iOS, iPadOS, macOS i visionOS2.- Narzędzie konfiguruje się mniej więcej w jednej linii, dołącza do
LanguageModelSession, a model sam generuje zapytania, uruchamia je na indeksie i wnioskuje na podstawie wyników2. - Nowa metoda delegata indeksu,
searchableItems(forIdentifiers:), pozwala odzyskać pełnyCSSearchableItem, dzięki czemu model widzi metadane, których kompaktowy indeks wyszukiwania nie potrafi zwrócić2. - Profile wskazówek zawężają możliwości wyszukiwania narzędzia dla mniejszych modeli; niestandardowe etapy potoku pozwalają indeksowi wykonywać obliczenia (zliczenia, średnie, własne punktacje) w imieniu modelu2.
- Napisy generowane przez AI Apple działają na żywo i lokalnie podczas odtwarzania, bez kodu po stronie aplikacji. Obejmują dwie ścieżki: transkrypcję mowy z dźwięku oraz tłumaczenie języka z istniejących napisów3.
AVPlayerViewControllerotrzymuje generowane napisy oraz nowy podgląd stylu w odtwarzaczu bez dodatkowego nakładu;AVPlayerLayeriAVCaptionRendererudostępniają API podglądu stylu dla niestandardowych interfejsów odtwarzacza3.
Co przeszło do systemu
Historia iOS 26 umieszczała jeden model w procesie aplikacji i dawała protokół Tool do jego rozszerzania1. iOS 27 zachowuje ten model i dodaje dwa miejsca, w których system sięga po niego w imieniu aplikacji. Core Spotlight staje się powierzchnią pobierania danych, którą model może odpytywać, co zamienia indeks wyszukiwania już udostępniany przez aplikację w osadzony kontekst. AVFoundation staje się powierzchnią transkrypcji i tłumaczenia, co oznacza napisy w językach, których oryginalne media nigdy nie zawierały.
Obie funkcje wydają się niepowiązane, dopóki nie dostrzeże się wspólnego wzorca. W obu Apple posiada model i wykonuje ciężką pracę, a aplikacja posiada treść i powierzchnię. Udostępnia się elementy do wyszukiwania; model pisze zapytania. Odtwarza się film; urządzenie generuje napisy. Inteligencja jest współdzieloną zdolnością systemu, a zadanie przesuwa się od jej wdrażania ku karmieniu jej właściwą treścią i dobremu prezentowaniu wyniku.
Wyszukiwanie z użyciem LLM przez Core Spotlight
SpotlightSearchTool — narzędzie, które przyjmuje protokół Tool z Foundation Models, aby model językowy bezpośrednio przeszukiwał treść Core Spotlight aplikacji na potrzeby generowania odpowiedzi.
Apple przyjmuje za przykład aplikację do szlaków turystycznych, która pozwala już przeglądać parki stanowe i szlaki oraz umożliwia użytkownikowi zapisywanie osobistych notatek po każdej wędrówce. Deweloper chce zadawać modelowi otwarte pytania o te wędrówki. Goła LanguageModelSession odpowiada na podstawie własnej wiedzy ogólnej modelu, a to złe źródło: odpowiedzi powinny pochodzić z wędrówek, o których aplikacja faktycznie wie. Aplikacja zaindeksowała już każdy szlak w indeksie wyszukiwania Core Spotlight, więc rozwiązaniem jest umożliwienie modelowi sięgnięcia do tego indeksu poprzez wywoływanie narzędzi2.
Właśnie to robi SpotlightSearchTool. Apple przedstawia go jako narzędzie, które przyjmuje protokół Tool, aby pozwolić modelowi językowemu bezpośrednio przeszukiwać treść aplikacji w Core Spotlight na potrzeby kontekstowego generowania odpowiedzi, dostępne na iOS, iPadOS, macOS i visionOS2. Warunkiem wstępnym jest praca, którą i tak należało wykonać: udostępnienie treści do wyszukiwania za pomocą Core Spotlight — temat wcześniejszej sesji Apple „Supporting semantic search with Core Spotlight”24. Po udostępnieniu elementów importuje się CoreSpotlight oraz FoundationModels, a Apple twierdzi, że narzędzie jest gotowe do przeszukiwania indeksu w jednej linii kodu. Wybiera się model — SystemLanguageModel albo model dostarczony przez nowe API Model Provider — a następnie dodaje do sesji instancję SpotlightSearchTool2.
import CoreSpotlight
import FoundationModels
// Apple: "in one line of code, the tool is ready to search
// your app's Core Spotlight index."
let session = LanguageModelSession(tools: [SpotlightSearchTool()])
let response = try await session.respond(to: "What hikes have I gone on?")
Trajektoria, a nie zapytanie
Szczegół, który zasługuje na uwagę, to kto pisze wyszukiwanie. Nie deweloper. Apple opisuje trajektorię pytania w rodzaju „What hikes have I gone on?” następująco: model decyduje, że potrzebuje SpotlightSearchTool, sam generuje zapytanie, Spotlight wykonuje to zapytanie i zwraca opis zbioru wyników, a model wnioskuje na podstawie tego wyniku, aby wygenerować ostateczną odpowiedź2. Zdanie zamykające sesję jasno ujmuje tę zmianę: deweloperzy nie piszą już zapytań wyszukiwania; dostarczają treść i pozwalają inteligencji zrobić resztę2.
Pewne ograniczenie ujawnia się wcześnie i Apple mówi o nim szczerze. Część metadanych w indeksie Spotlight, takich jak treść tekstowa i HTML, jest przechowywana w bardzo zwartej reprezentacji, którą można przeszukiwać, lecz nie da się jej odzyskać w postaci czytelnej dla modelu językowego2. Model znajduje właściwe elementy, nie mogąc odczytać wszystkiego, co dla nich udostępniono. Rozwiązanie tkwi w delegacie indeksu, który i tak się implementuje do obsługi żądań ponownego indeksowania. Apple dodaje metodę odzyskiwania pełnego CSSearchableItem po jego unikalnym identyfikatorze, dzięki czemu model może zarządzać odpowiedziami nad potencjalnie milionami wyników bez wczytywania ich wszystkich2.
// On your CSSearchableIndex delegate.
func searchableItems(
forIdentifiers identifiers: [String]
) async -> [CSSearchableItem] {
// Return the complete item for each id. The callback is also the
// place to attach metadata you would not donate for search but
// want the model to reason over.
identifiers.compactMap { fullItem(for: $0) }
}
Apple wyraża drugą myśl wprost: jeśli aplikacja przechowuje metadane, których nie ma sensu udostępniać do wyszukiwania, ale które pomogłyby modelowi we wnioskowaniu, wywołanie zwrotne delegata jest właśnie miejscem, w którym należy ustawić te dodatkowe atrybuty na elemencie, aby model je zobaczył2.
Wyświetlanie wyników
Apple kreśli wyraźną granicę między dwoma trybami wyświetlania. Odpowiedź sesji to zwięzły opis zbioru wyników — to, co chce pokazać interfejs typu asystent. Do wyświetlania w formie listy same wyniki są dostępne bezpośrednio w SpotlightSearchTool, co Apple nazywa najlepszym sposobem dostępu do elementów wyszukiwania, gdy zbiór wyników jest duży2. Odpowiedzi wyszukiwania przychodzą jako sekwencja asynchroniczna, a każda z nich może nieść partię wyników aż do zakończenia wywołania narzędzia. Ponieważ model może wywołać narzędzie więcej niż raz przed ostateczną odpowiedzią, Apple zaleca używanie queryToken z każdej odpowiedzi do decydowania, kiedy interfejs powinien się odświeżyć2.
Dostosowanie do wybranego modelu
SpotlightSearchTool udostępnia szeroki zestaw możliwości, od wyszukiwania semantycznego po tekście aż po wyszukiwanie strukturalne po datach, osobach i miejscach2. Apple daje trzy dźwignie, by dopasować tę powierzchnię do uruchamianego modelu. Pierwsza to profil wskazówek. Przekazanie małemu modelowi całego zestawu możliwości narzędzia zużywa kontekst, którego on nie ma, dlatego GuidanceProfile zawęża wskazówki do tego, czego aplikacja potrzebuje — aż do dokładnej listy atrybutów metadanych, które model ma uwzględniać, z dynamicznym poziomem wskazówek ustawianym podczas tworzenia narzędzia2. Rada Apple dla modeli na urządzeniu, które mają bardziej ograniczony rozmiar kontekstu, to skoncentrowane wskazówki dla prostszych możliwości wyszukiwania2.
Druga dźwignia to rozwiązywanie odniesień. Jeśli aplikacja udostępnia relacje między osobami, a użytkownik pyta o inne osoby na szlaku, model musi wiedzieć, do kogo odnosi się „ta osoba”. Odpowiedzią Apple jest mechanizm rozwiązywania kontaktów, który zwraca informacje kontaktowe powiązane z tożsamością użytkownika, a narzędzie dopasowuje je do metadanych w indeksie2.
Trzecia dźwignia to ta, która zamienia wyszukiwanie w obliczenia. W przypadku złożonego żądania, takiego jak „ile szlaków przeszedłem w tym roku i ile średnio kilometrów w każdym miesiącu?”, Apple twierdzi, że model może zrezygnować z prostego zapytania na rzecz wyszukiwania potokowego, które łączy zapytania do indeksu z obliczeniami na zbiorze wyników2. Model rozkłada pytanie na etapy: wyszukiwanie ukończonych wędrówek, etap zliczania budujący tabelę według miesięcy, a następnie etap obliczający średnią z tych zliczeń2. Etapy potoku są Generable, więc model generuje etap na żądanie na podstawie promptu, a aplikacja może zarejestrować własne, niestandardowe etapy2. Przykładem Apple jest wskaźnik zadowolenia obliczany na podstawie notatek przy każdym elemencie, być może za pomocą analizy sentymentu lub oceny pięciogwiazdkowej, z właściwościami Guide mówiącymi modelowi, które wyniki preferować2.
// Apple's example: a Generable pipeline stage that scores items so the
// model reasons over the top-scoring results, not the raw set.
@Generable
struct HappinessScoredTrail {
let item: CSSearchableItem
@Guide(description: "Prefer higher scores; 5-star hikes rank highest.")
let happinessScore: Double
}
// Register the stage on the tool's configuration.
Apple zamyka tę sekcję weryfikacją, a nie implementacją, wskazując na framework Evaluations, służący do mierzenia, jak dobrze model wywołuje narzędzie i jak sensowne są jego odpowiedzi, gdzie przykładową metryką dla aplikacji turystycznej jest pokrycie wyników2. Ta pętla ewaluacji to osobny temat, omówiony we wpisie o frameworku Evaluations firmy Apple.
Generowane napisy, na urządzeniu
Powierzchnia mediów pokazuje tę samą zasadę z innej strony. Napisy generowane przez AI Apple powstają na żywo, lokalnie na urządzeniu, w trakcie odtwarzania mediów3. Ujęcie z sesji 256 stawia dostępność na pierwszym miejscu: napisy są ważne dla osób niesłyszących lub niedosłyszących, dla osób śledzących mówiony dialog oraz dla każdego, kto po prostu nie może w danej chwili usłyszeć dźwięku. Gdy treść jest dystrybuowana bez języka, który widz rozumie, urządzenie może wypełnić tę lukę3.
Apple opisuje dwie ścieżki. Pierwsza to transkrypcja mowy: dźwięk źródłowy trafia do modelu zamiany mowy na tekst na urządzeniu, a na wyjściu pojawiają się napisy3. Druga to tłumaczenie języka: istniejące napisy (w przykładzie Apple — angielskie) trafiają do modelu tłumaczenia na urządzeniu, który tworzy napisy w innym języku, na przykład włoskim3. Napisy stworzone ręcznie przez autora treści pozostają preferowane i niezmienione; generowane napisy jedynie dodają języki3. Ta sama zdolność tłumaczenia na urządzeniu jest udostępniana deweloperom bezpośrednio we frameworku Translation.
To, co ma znaczenie dla wdrożenia: niczego nie trzeba implementować, aby to włączyć. Apple stwierdza, że generowane napisy są dostępne automatycznie podczas odtwarzania wideo3. Obejmują transmisję strumieniową na żywo przez HTTP, w tym kanały telewizji na żywo, wideo na żądanie, wydarzenia na żywo takie jak sport oraz treści plikowe, takie jak media dołączone do aplikacji lub pobrane3. Kwalifikują się zarówno treści profesjonalne, jak i tworzone przez użytkowników (nagrania z aparatu iPhone’a, filmy społecznościowe)3.
Matryca premierowa jest wąska i warto przeczytać ją dokładnie. Począwszy od iOS i macOS 27, napisy angielskie można generować z dźwięku angielskiego, co jest obsługiwane także na tvOS i visionOS 273. Ponadto na iOS i macOS można generować wiele języków napisów z napisów angielskich3. Tak więc transkrypcja jest na początku z angielskiego na angielski na czterech platformach, a tłumaczenie rozchodzi się z angielskiego na dwóch największych.
Gdzie naprawdę jest twoja praca
Włączenie generowanych napisów nic nie kosztuje, więc wysiłek idzie w interfejs wyboru. Wskazówka Apple jest bezpośrednia: należy zapewnić interfejs wyboru napisów podczas odtwarzania3. Trzy opcje, w kolejności malejącej według tego, ile daje Apple:
AVPlayerViewControllerna iOS (orazAVPlayerViewna macOS) w pełni implementuje wybór napisów i elementy sterujące odtwarzacza. Nie trzeba robić nic więcej3.AVLegibleMediaOptionsMenuControllerprezentuje elementy sterujące i zachowanie wyboru bez elementów sterujących odtwarzacza, co pasuje, gdy ma się już interfejs odtwarzacza i potrzebne jest tylko menu3.- Niestandardowe elementy sterujące do wyboru mediów, gdy menu ma pasować do reszty aplikacji3.
W demonstracji Apple generowane opcje noszą symbol iskierki oraz słowo „Translated”, aby użytkownicy mogli odróżnić je od ścieżek stworzonych ręcznie3.
Podgląd stylu
Drugą funkcją sesji jest prezentacja. Aplikacja Ustawienia od lat pozwala wybierać i tworzyć style napisów, ale Apple zwraca uwagę, że zmiana stylu w trakcie filmu, z podglądem na żywo, jest zarazem łatwiejsza i bardziej dostępna niż opuszczanie odtwarzania, by szukać w Ustawieniach3. Te same style, które użytkownik zdefiniował w Ustawieniach, w tym własne, pojawiają się teraz w menu stylów odtwarzacza z podglądem każdego z nich3.
AVPlayerViewController implementuje podgląd stylu i elementy sterujące odtwarzacza od razu3. W przypadku niestandardowych odtwarzaczy AVPlayerLayer udostępnia API podglądu stylu, a AVCaptionRenderer może dostarczyć podgląd, jeśli renderowanie weźmie się na siebie3. Przepływ AVPlayerLayer według Apple: każdy styl systemowy nosi identyfikator profilu, więc pobiera się wszystkie style po ich identyfikatorach profilu, wypełnia interfejs ich nazwami i wywołuje funkcję podglądu, gdy użytkownik wybierze jeden z nich. Nowy napis pojawia się w wybranym stylu, podczas gdy wszelkie istniejące napisy automatycznie się ukrywają, by nie przeszkadzać. Przekazanie nil do parametru tekstu wyświetla zlokalizowany tekst systemowy, a parametr położenia przesuwa podgląd, aby odsłonić elementy sterujące. Funkcję wywołuje się ponownie dla każdego nowego stylu, zatrzymuje podgląd po zakończeniu wyboru (co przywraca aktywne napisy) i ustawia wybrany styl dla wszystkich napisów w systemie3.
Jak wdrożyć
W przypadku wyszukiwania Spotlight:
- Najpierw udostępnij treść do Core Spotlight; narzędzie przeszukuje indeks, więc bez udostępnienia nie ma czego szukać24.
- Dołącz
SpotlightSearchTool()doLanguageModelSessioni wybierz model —SystemLanguageModelalbo model z API Model Provider2. - Zaimplementuj
searchableItems(forIdentifiers:)w delegacie indeksu, aby zwracać pełne elementy i dołączać metadane przeznaczone wyłącznie dla modelu, których kompaktowy indeks nie potrafi odzyskać2. - Dla widoku asystenta pokaż odpowiedź sesji; dla widoku listy odczytaj wyniki
CSSearchableItemz narzędzia i odświeżaj przy każdymqueryTokenodpowiedzi2. - Jeśli uruchamiasz model na urządzeniu, zawęź możliwości za pomocą
GuidanceProfilei sięgaj po etapy potoku tylko wtedy, gdy żądanie wymaga zliczania lub punktowania na dużym zbiorze2.
W przypadku generowanych napisów:
- Nic nie włącza tej funkcji; działa ona automatycznie podczas odtwarzania3.
- Upewnij się, że odtwarzacz udostępnia interfejs wyboru napisów przez
AVPlayerViewController,AVLegibleMediaOptionsMenuControllerlub własne elementy sterujące3. - Dodaj podgląd stylu bez dodatkowego nakładu przez
AVPlayerViewControlleralbo wepnij API podgląduAVPlayerLayerdo niestandardowego odtwarzacza3. - Przeczytaj matrycę obsługi, zanim obiecasz języki: transkrypcja z angielskiego na angielski na czterech platformach, tłumaczenie ze źródła angielskiego na iOS i macOS3.
Najczęściej zadawane pytania
Czym jest SpotlightSearchTool w iOS 27?
To narzędzie Foundation Models, które przyjmuje protokół Tool, dzięki czemu model językowy może bezpośrednio przeszukiwać indeks Core Spotlight aplikacji i wykorzystać wyniki do wygenerowania odpowiedzi. Apple udostępnia je na iOS, iPadOS, macOS i visionOS. Do LanguageModelSession dołącza się instancję SpotlightSearchTool, a model sam generuje zapytania wyszukiwania, zamiast pisać je ręcznie2.
Czy muszę pisać zapytania wyszukiwania?
Nie. Ujęcie Apple jest takie, że deweloperzy nie piszą już zapytań wyszukiwania; dostarczają treść i pozwalają modelowi zrobić resztę. Model decyduje, że potrzebuje narzędzia, generuje zapytanie, Spotlight je uruchamia i zwraca opis zbioru wyników, a model wnioskuje na podstawie tego wyniku, aby sformułować odpowiedź2.
Dlaczego model nie widzi wszystkich udostępnionych przeze mnie metadanych?
Część metadanych Spotlight, takich jak treść tekstowa i HTML, jest przechowywana w bardzo zwartej formie, którą można przeszukiwać, lecz nie da się jej odzyskać w czytelnej postaci. Aby dać modelowi pełny obraz, zaimplementuj searchableItems(forIdentifiers:) w delegacie indeksu, by zwracał pełny CSSearchableItem, i wykorzystaj to wywołanie zwrotne do dołączenia dodatkowych atrybutów przeznaczonych wyłącznie dla modelu2.
Czy muszę cokolwiek implementować, aby uzyskać generowane napisy?
Nie. Apple stwierdza, że generowane napisy są dostępne automatycznie podczas odtwarzania wideo, tworzone na żywo i lokalnie na urządzeniu. Twoją pracą jest interfejs wyboru oraz, opcjonalnie, podgląd stylu w odtwarzaczu, a nie wnioskowanie3.
Jakie języki obsługują generowane napisy w momencie premiery?
Począwszy od iOS i macOS 27, napisy angielskie można generować z dźwięku angielskiego, także na tvOS i visionOS 27. Oddzielnie, na iOS i macOS można generować wiele języków napisów z napisów angielskich. Tak więc transkrypcja jest z angielskiego na angielski na czterech platformach, a tłumaczenie rozchodzi się z angielskiego na iOS i macOS3.
Czy generowane napisy i wyszukiwanie Spotlight są prywatne?
Oba działają na urządzeniu. Generowane napisy powstają na żywo i lokalnie w trakcie odtwarzania mediów3, a SpotlightSearchTool odpytuje lokalny indeks Core Spotlight aplikacji poprzez model na urządzeniu12. To, że Apple dostarcza implementację systemową, zmienia, kto ją utrzymuje, a nie gdzie działa.
Pełny klaster Apple Ecosystem: Foundation Models — LLM na urządzeniu oraz protokół Tool, który przyjmuje SpotlightSearchTool; kontrola wywoływania narzędzi w iOS 27, która rządzi tym, jak agresywnie model wywołuje narzędzia takie jak to; równoległa powierzchnia App Intents w iOS 27 dla wykonywania w tle, synchronizacji i Spotlight; oraz Core AI: uruchamianie modeli na Apple Silicon dla warstwy pod modelem systemowym. Centrum znajduje się w serii Apple Ecosystem. Szerszy kontekst iOS z agentami AI znajdziesz w przewodniku po tworzeniu agentów na iOS.
-
Apple Developer, “Foundation Models” framework overview and “Tool” protocol. The iOS 26 framework introduced the on-device model,
LanguageModelSession, guided generation via@Generable, and theToolprotocol that lets the model invoke app code mid-generation. ↩↩↩ -
Apple, WWDC26 session 246, “LLM search using Core Spotlight.” developer.apple.com/videos/play/wwdc2026/246. Apple introduces
SpotlightSearchTool, a tool adopting the Foundation ModelsToolprotocol that lets a language model search an app’s Core Spotlight index directly for contextual response generation, available on iOS, iPadOS, macOS, and visionOS. The session covers the configure/attach flow, the tool-calling trajectory, thesearchableItems(forIdentifiers:)index-delegate method for recovering fullCSSearchableIteminstances, search-reply batches withqueryToken, guidance profiles, contact-resolver reference resolution, Generable pipeline stages for computation over result sets, and evaluation via the Evaluations framework with result coverage as a metric. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple, WWDC26 session 256, “Discover generated subtitles and subtitle styles.” developer.apple.com/videos/play/wwdc2026/256. Apple describes AI-generated subtitles created live and locally on device during playback, via two paths (on-device speech-to-text transcription and on-device translation from existing subtitles), available automatically with no app code. The session states the launch matrix (English-from-English transcription on iOS, macOS, tvOS, and visionOS 27; translation from English subtitles on iOS and macOS), the selection-UI options (
AVPlayerViewController,AVPlayerView,AVLegibleMediaOptionsMenuController, custom controls), and the subtitle style preview viaAVPlayerViewController,AVPlayerLayer, andAVCaptionRendererusing per-style profile IDs. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Apple Developer, “Core Spotlight” framework and the
CSSearchableItemandCSSearchableIndexAPIs for donating searchable content. Session 246 names the prior “Supporting semantic search with Core Spotlight” session as the prerequisite for donating content, managing donations with a delegate and reindex extension, and performing structured and semantic search. ↩↩