IA en el dispositivo a lo largo de iOS 27: Spotlight y Media
En iOS 26, el gran modelo de lenguaje en el dispositivo vivía dentro de tu app. Abrías una LanguageModelSession, le conectabas herramientas y el modelo razonaba sobre el contexto que le pasaras1. iOS 27 sube ese mismo modelo un nivel. Ahora Apple lo conecta a Core Spotlight, de modo que el índice de búsqueda que ya tiene una app se convierte en una fuente de fundamentación para el modelo2, y a AVFoundation, de modo que el dispositivo transcribe y traduce subtítulos durante la reproducción sin que la app escriba una sola línea de código de inferencia3. Ese es el titular: el modelo en el dispositivo se está convirtiendo en un servicio del sistema, y no solo en una API dentro de la app. La misma inteligencia que llamas directamente desde tu código también corre por debajo de la búsqueda y de los medios, alcanzable a través de frameworks que ya usas.
Este artículo cubre dos de esas superficies del sistema a partir de sus sesiones de WWDC26: la búsqueda por LLM a través de Core Spotlight (sesión 246) y los subtítulos generados por la IA de Apple con vista previa de estilo en pantalla (sesión 256). Si aún no conoces las primitivas de framework que hay detrás de la primera, la explicación de Foundation Models, el LLM en el dispositivo y el artículo sobre la llamada a herramientas en iOS 27 preparan el terreno.
En resumen
SpotlightSearchTooladopta el protocoloToolde Foundation Models para que un modelo de lenguaje pueda buscar directamente en el índice Core Spotlight de tu app y generar una respuesta contextual. Apple lo ofrece en iOS, iPadOS, macOS y visionOS2.- Configuras la herramienta en aproximadamente una línea, la conectas a una
LanguageModelSessiony el modelo genera sus propias consultas, las ejecuta contra tu índice y razona sobre los resultados2. - Un nuevo método del delegado de índice,
searchableItems(forIdentifiers:), te permite recuperar elCSSearchableItemcompleto, de modo que el modelo vea metadatos que el índice de búsqueda compacto no puede devolver2. - Los perfiles de orientación acotan las capacidades de búsqueda de la herramienta para modelos más pequeños; las etapas de canalización personalizadas dejan que el índice ejecute cálculos (conteos, promedios, puntuaciones personalizadas) en nombre del modelo2.
- Los subtítulos generados por la IA de Apple corren en vivo y de forma local durante la reproducción, sin código de la app. Cubren dos vías: la transcripción del habla a partir del audio y la traducción de idioma a partir de subtítulos existentes3.
AVPlayerViewControllerobtiene gratis los subtítulos generados y la nueva vista previa de estilo dentro del reproductor;AVPlayerLayeryAVCaptionRendererexponen la API de vista previa de estilo para interfaces de reproductor personalizadas3.
Qué pasó al sistema
La historia de iOS 26 ponía un modelo en tu proceso y te daba el protocolo Tool para extenderlo1. iOS 27 conserva ese modelo y añade dos lugares donde el sistema lo invoca por ti. Core Spotlight se convierte en una superficie de recuperación que el modelo puede consultar, lo que transforma el índice de búsqueda que ya aportas en contexto fundamentado. AVFoundation se convierte en una superficie de transcripción y traducción, lo que significa subtítulos en idiomas que el medio original nunca incluyó.
Las dos funciones parecen no tener relación hasta que notas el patrón compartido. En ambas, Apple es dueña del modelo y del trabajo pesado, y tu app es dueña del contenido y de la superficie. Tú aportas elementos buscables; el modelo escribe las consultas. Tú reproduces un video; el dispositivo genera los subtítulos. La inteligencia es una capacidad compartida del sistema, y tu tarea pasa de implementarla a alimentarla con el contenido correcto y presentar bien el resultado.
Búsqueda por LLM a través de Core Spotlight
SpotlightSearchTool, una herramienta que adopta el protocolo Tool de Foundation Models para que un modelo de lenguaje busque directamente el contenido de Core Spotlight de tu app y genere la respuesta.
El planteamiento de Apple es una app de senderos de excursión que ya permite explorar parques estatales y rutas y deja que el usuario escriba notas personales después de cada caminata. El desarrollador quiere hacerle al modelo preguntas abiertas sobre esas caminatas. Una LanguageModelSession desnuda responde a partir del conocimiento general del propio modelo, que es la fuente equivocada: las respuestas deberían salir de las caminatas que la app realmente conoce. La app ya indexó cada ruta en un índice de búsqueda de Core Spotlight, así que la solución es dejar que el modelo llegue a ese índice mediante la llamada a herramientas2.
Eso es lo que hace SpotlightSearchTool. Apple lo presenta como una herramienta que adopta el protocolo Tool para permitir que un modelo de lenguaje busque directamente el contenido de tu app en Core Spotlight con vistas a generar una respuesta contextual, disponible en iOS, iPadOS, macOS y visionOS2. El requisito previo es el trabajo que ya habrías hecho: aportar contenido buscable con Core Spotlight, el tema de la sesión anterior de Apple «Supporting semantic search with Core Spotlight»24. Una vez aportados tus elementos, importas CoreSpotlight y FoundationModels, y Apple dice que la herramienta está lista para buscar en tu índice en una línea de código. Eliges un modelo, ya sea el SystemLanguageModel o uno proporcionado a través de las nuevas API de Model Provider, y luego añades una instancia de SpotlightSearchTool a tu sesión2.
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?")
La trayectoria, no la consulta
El detalle que merece atención es quién escribe la búsqueda. Tú no. Apple describe la trayectoria de una pregunta como «What hikes have I gone on?» así: el modelo decide que necesita SpotlightSearchTool, genera él mismo la consulta, Spotlight ejecuta esa consulta y devuelve una descripción del conjunto de resultados, y el modelo razona sobre esa salida para generar su respuesta final2. La frase de cierre de la sesión enuncia el cambio sin rodeos: los desarrolladores ya no escriben consultas de búsqueda; aportan el contenido y dejan que la inteligencia haga el resto2.
Una limitación aparece pronto, y Apple es franca al respecto. Algunos metadatos del índice de Spotlight, como el contenido de texto y el HTML, se almacenan en una representación muy compacta que se puede buscar, pero no recuperar en una forma que un modelo de lenguaje pueda leer2. El modelo encuentra los elementos correctos sin poder leer todo lo que se aportó para ellos. La solución vive en el delegado de índice que ya implementas para gestionar las solicitudes de reindexación. Apple añade un método para recuperar el CSSearchableItem completo por su identificador único, de modo que el modelo pueda gestionar respuestas sobre potencialmente millones de resultados sin cargarlos todos2.
// 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 plantea el segundo punto de forma explícita: si tu app guarda metadatos que no tiene sentido aportar para la búsqueda pero que ayudarían al modelo a razonar, el callback del delegado es el lugar para fijar esos atributos extra en el elemento y que el modelo los vea2.
Mostrar los resultados
Apple traza una línea clara entre dos modos de visualización. La respuesta de la sesión es una descripción concisa del conjunto de resultados, que es lo que una interfaz tipo asistente quiere mostrar. Para una visualización en lista, los resultados mismos están disponibles directamente en SpotlightSearchTool, lo que Apple llama la mejor manera de acceder a los elementos buscables cuando el conjunto de resultados es grande2. Las respuestas de búsqueda llegan como una secuencia asíncrona, y cada una puede traer un lote de resultados hasta que la llamada a la herramienta termina. Como el modelo puede llamar a la herramienta más de una vez antes de su respuesta final, Apple recomienda usar el queryToken de cada respuesta para decidir cuándo debe refrescarse la interfaz2.
Personalizar según el modelo que elijas
SpotlightSearchTool expone un amplio conjunto de capacidades, desde la búsqueda semántica sobre texto hasta la búsqueda estructurada sobre fechas, personas y lugares2. Apple da tres palancas para ajustar esa superficie al modelo que ejecutas. La primera es el perfil de orientación. Entregarle a un modelo pequeño el conjunto completo de capacidades de la herramienta quema un contexto del que no dispone, así que un GuidanceProfile acota la orientación a solo lo que la app necesita, hasta la lista exacta de atributos de metadatos que el modelo debe considerar, con un nivel de guía dinámico establecido al crear la herramienta2. El consejo de Apple para los modelos en el dispositivo, que tienen un tamaño de contexto más restringido, es una orientación enfocada en capacidades de búsqueda más simples2.
La segunda palanca es la resolución de referencias. Si la app aporta relaciones entre personas y el usuario pregunta por otras personas en una ruta, el modelo necesita saber a quién se refiere «esa persona». La respuesta de Apple es un resolutor de contactos que devuelve información de contacto relacionada con la identidad del usuario, que la herramienta coteja con los metadatos del índice2.
La tercera palanca es la que convierte la búsqueda en cálculo. Para una solicitud compleja como «¿cuántas rutas he caminado este año y, por cada mes, cuántos kilómetros en promedio?», Apple dice que el modelo puede renunciar a una consulta simple en favor de una búsqueda en canalización que reúne consultas al índice más cálculo sobre el conjunto de resultados2. El modelo divide la pregunta en etapas: una búsqueda de caminatas completadas, una etapa de conteo que arma una tabla por mes y luego una etapa que calcula un promedio sobre los conteos2. Las etapas de canalización son Generable, así que el modelo genera una etapa bajo demanda a partir del prompt, y una app puede registrar sus propias etapas personalizadas2. El ejemplo de Apple es una puntuación de felicidad calculada sobre las notas de cada elemento, quizá mediante análisis de sentimiento o una calificación de cinco estrellas, con propiedades Guide que le indican al modelo qué resultados preferir2.
// 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 cierra la sección con la verificación en lugar de la implementación, y apunta al framework Evaluations para medir qué tan bien el modelo llama a la herramienta y qué tan significativas son sus respuestas, con la cobertura de resultados como métrica de ejemplo para la app de excursiones2. Ese ciclo de evaluación es un tema en sí mismo, tratado en el artículo sobre el framework Evaluations de Apple.
Subtítulos generados, en el dispositivo
La superficie de medios muestra el mismo principio desde otro ángulo. Los subtítulos generados por la IA de Apple se crean en vivo, de forma local en el dispositivo, mientras el medio se reproduce3. El enfoque de la sesión 256 pone la accesibilidad por delante: los subtítulos importan para las personas sordas o con dificultades auditivas, para quienes siguen un diálogo hablado y para cualquiera que sencillamente no pueda oír el audio en ese momento. Cuando un contenido se distribuye sin un idioma que el espectador entienda, el dispositivo puede llenar el vacío3.
Apple describe dos vías. La primera es la transcripción del habla: el audio de origen entra en el modelo de voz a texto en el dispositivo y salen los subtítulos3. La segunda es la traducción de idioma: subtítulos existentes (en inglés, en el ejemplo de Apple) entran en el modelo de traducción en el dispositivo, que produce subtítulos en otro idioma, como el italiano3. Los subtítulos creados a mano por un autor de contenido siguen siendo los preferidos y se mantienen sin cambios; los subtítulos generados solo añaden idiomas3. Esa misma capacidad de traducción en el dispositivo se expone directamente a los desarrolladores en el framework Translation.
Lo que importa para la adopción: no implementas nada para activar esto. Apple afirma que los subtítulos generados están disponibles automáticamente durante la reproducción de video3. Cubren la transmisión en directo por HTTP, incluidos los canales de TV en vivo, el video bajo demanda, los eventos en directo como el deporte y el contenido basado en archivos, como los medios incluidos en la app o descargados3. Tanto el contenido profesional como el creado por los usuarios (capturas de la cámara del iPhone, videos sociales) califican3.
La matriz de lanzamiento es acotada y vale la pena leerla con precisión. A partir de iOS y macOS 27, se pueden generar subtítulos en inglés a partir de audio en inglés, también compatible en tvOS y visionOS 273. Encima de eso, se pueden generar varios idiomas de subtítulos a partir de subtítulos en inglés en iOS y macOS3. Así que la transcripción es de inglés a inglés al principio en cuatro plataformas, y la traducción se despliega desde el inglés en las dos más grandes.
Dónde está realmente tu trabajo
Los subtítulos generados no cuestan nada de activar, así que tu esfuerzo va a la interfaz de selección. La guía de Apple es directa: ofrece una interfaz de selección de subtítulos durante la reproducción3. Tres opciones, en orden descendente según cuánto te da Apple:
AVPlayerViewControlleren iOS (yAVPlayerViewen macOS) implementa por completo la selección de subtítulos y los controles del reproductor. No haces nada extra3.AVLegibleMediaOptionsMenuControllerpresenta los controles y el comportamiento de selección sin los controles del reproductor, lo que encaja cuando ya tienes una interfaz de reproductor y solo necesitas el menú3.- Controles personalizados para la selección de medios, cuando quieres que el menú combine con el resto de tu app3.
En la demo de Apple, las opciones generadas llevan un símbolo de destello y la palabra «Translated» para que los usuarios puedan distinguirlas de las pistas creadas a mano3.
La vista previa de estilo
La segunda función de la sesión es la presentación. La app Ajustes ha permitido durante años elegir y crear estilos de subtítulos, pero el punto de Apple es que cambiar el estilo a mitad del video, con una vista previa en vivo, es a la vez más fácil y más accesible que salir de la reproducción para buscar en Ajustes3. Los mismos estilos que un usuario definió en Ajustes, incluidos los personalizados, aparecen ahora en el menú de estilo del reproductor con una vista previa de cada uno3.
AVPlayerViewController implementa la vista previa de estilo y los controles del reproductor de forma directa3. Para reproductores personalizados, AVPlayerLayer expone una API de vista previa de estilo, y AVCaptionRenderer puede ofrecer la vista previa si te encargas tú mismo de renderizarla3. El flujo de AVPlayerLayer de Apple: cada estilo del sistema lleva un identificador de perfil, así que recuperas todos los estilos por sus identificadores de perfil, rellenas tu interfaz con sus nombres y llamas a la función de vista previa cuando un usuario selecciona uno. El nuevo subtítulo se muestra en el estilo elegido mientras los subtítulos existentes se ocultan automáticamente para no interferir. Pasar nil al parámetro de texto muestra un texto del sistema localizado, y un parámetro de posición desplaza la vista previa para despejar tus controles. Vuelves a llamar a la función para cada nuevo estilo, detienes la vista previa cuando termina la selección (lo que restaura los subtítulos activos) y fijas el estilo elegido para todos los subtítulos del sistema3.
Cómo adoptarlo
Para la búsqueda de Spotlight:
- Aporta primero tu contenido a Core Spotlight; la herramienta busca en el índice, así que sin aporte no hay nada que buscar24.
- Conecta
SpotlightSearchTool()a unaLanguageModelSessiony elige tu modelo, elSystemLanguageModelo uno de las API de Model Provider2. - Implementa
searchableItems(forIdentifiers:)en tu delegado de índice para devolver los elementos completos y adjuntar los metadatos exclusivos del modelo que el índice compacto no puede recuperar2. - Para una vista de asistente, muestra la respuesta de la sesión; para una vista en lista, lee los resultados
CSSearchableItemdesde la herramienta y refresca con elqueryTokende cada respuesta2. - Si ejecutas un modelo en el dispositivo, acota las capacidades con un
GuidanceProfiley recurre a las etapas de canalización solo cuando una solicitud necesite conteo o puntuación sobre un conjunto grande2.
Para los subtítulos generados:
- Nada activa la función; corre automáticamente durante la reproducción3.
- Asegúrate de que tu reproductor exponga una interfaz de selección de subtítulos a través de
AVPlayerViewController,AVLegibleMediaOptionsMenuControllero tus propios controles3. - Añade la vista previa de estilo gratis con
AVPlayerViewController, o conecta la API de vista previa deAVPlayerLayeren un reproductor personalizado3. - Lee la matriz de compatibilidad antes de prometer idiomas: transcripción de inglés a inglés en cuatro plataformas, traducción desde el inglés en iOS y macOS3.
Preguntas frecuentes
¿Qué es SpotlightSearchTool en iOS 27?
Es una herramienta de Foundation Models que adopta el protocolo Tool para que un modelo de lenguaje pueda buscar directamente en el índice Core Spotlight de tu app y usar los resultados para generar una respuesta. Apple la ofrece en iOS, iPadOS, macOS y visionOS. Conectas una instancia de SpotlightSearchTool a una LanguageModelSession y el modelo genera él mismo las consultas de búsqueda en lugar de que las escribas tú2.
¿Tengo que escribir las consultas de búsqueda?
No. El planteamiento de Apple es que los desarrolladores ya no escriben consultas de búsqueda; aportan el contenido y dejan que el modelo haga el resto. El modelo decide que necesita la herramienta, genera una consulta, Spotlight la ejecuta y devuelve una descripción del conjunto de resultados, y el modelo razona sobre esa salida para producir su respuesta2.
¿Por qué el modelo no puede ver todos los metadatos que aporté?
Algunos metadatos de Spotlight, como el contenido de texto y el HTML, se almacenan en una forma muy compacta que se puede buscar, pero no recuperar de manera legible. Para darle al modelo el panorama completo, implementa searchableItems(forIdentifiers:) en tu delegado de índice para devolver el CSSearchableItem completo, y usa ese callback para adjuntar cualquier atributo extra exclusivo del modelo2.
¿Necesito implementar algo para obtener subtítulos generados?
No. Apple afirma que los subtítulos generados están disponibles automáticamente durante la reproducción de video, creados en vivo y de forma local en el dispositivo. Tu trabajo es la interfaz de selección y, de forma opcional, la vista previa de estilo dentro del reproductor, no la inferencia3.
¿Qué idiomas admiten los subtítulos generados en el lanzamiento?
A partir de iOS y macOS 27, se pueden generar subtítulos en inglés a partir de audio en inglés, también en tvOS y visionOS 27. Por separado, se pueden generar varios idiomas de subtítulos a partir de subtítulos en inglés en iOS y macOS. Así que la transcripción es de inglés a inglés en cuatro plataformas, y la traducción se despliega desde el inglés en iOS y macOS3.
¿Son privados los subtítulos generados y la búsqueda de Spotlight?
Ambos corren en el dispositivo. Los subtítulos generados se crean en vivo y de forma local mientras el medio se reproduce3, y SpotlightSearchTool consulta el índice Core Spotlight local de tu app a través del modelo en el dispositivo12. Que Apple suministre la implementación del sistema cambia quién la mantiene, no dónde corre.
El clúster completo de Apple Ecosystem: los Foundation Models, el LLM en el dispositivo y el protocolo Tool que adopta SpotlightSearchTool; el control de la llamada a herramientas en iOS 27 que rige con cuánta agresividad el modelo llama a herramientas como esta; la superficie paralela de los App Intents en iOS 27 para la ejecución en segundo plano, la sincronización y Spotlight; y Core AI: ejecutar modelos en Apple Silicon para la capa por debajo del modelo del sistema. El centro está en la serie Apple Ecosystem. Para un contexto más amplio sobre iOS con agentes de IA, consulta la guía de desarrollo de agentes en 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. ↩↩