Comunidad

Inside Android Skills: Diseñado para la obsolescencia

Lectura de 4 min
Ver el perfil de José Alcérreca
Jose Alcérreca Ingeniero de Relaciones con Desarrolladores

Lanzamos las Habilidades de Android oficiales en abril, y la respuesta superó todas nuestras expectativas. En esta entrada de blog, abordaré algunos de los comentarios que recibimos y explicaré la filosofía y la metodología detrás del proyecto. Esperamos que esto también te ayude a comprender lo que sucede tras bambalinas cuando instalas y usas habilidades, lo que te permitirá aprovechar mejor los tokens y tu propio tiempo.

¿Por qué hay tan pocas habilidades oficiales?

Actualmente, solo consideramos nuevas habilidades cuando hay una brecha de conocimiento verificable en los modelos de estado del arte (SOTA). En pocas palabras, no necesitas enseñarle al modelo lo que ya sabe. (Aunque hay algunas excepciones, sigue leyendo).

Hasta el momento, lanzamos alrededor de 20 habilidades oficiales, y se orientan de forma intencional a áreas muy específicas y de rápido movimiento en las que los modelos estándar aún no están completamente fundamentados, como AGP 9, Navigation 3, las APIs de Camera avanzadas y Perfetto SQL.

¿Qué sucede con las habilidades básicas y más generales? Cada habilidad instalada inserta entre 100 y 200 tokens en el contexto de referencia de cada tarea que inicias. Si esa habilidad se activa, ese recuento puede aumentar rápidamente a miles. En la mayoría de los casos, acumular habilidades básicas es contraproducente y costoso. Antes de instalar una habilidad para escribir Kotlin o Compose básicos, considera si tu LLM de elección realmente la necesita o si ya conoce esos temas lo suficiente. 

Evaluación de habilidades

Antes de su lanzamiento, cada habilidad se prueba con un conjunto integral de evaluaciones que demuestran que la habilidad ofrece un valor claro. Estas evaluaciones deben aprobarse cuando la habilidad está activa y fallar en caso contrario. Las evaluaciones son para las habilidades lo que las pruebas de integración son para el código. 

timeout_s: 1200
repository:
  url: [redacted - internal git repo]
  working_dir: wear_compose_m3_empty_app
category_ids:
  - wear
prompt: |-
  Add a horizontal pager to MainActivity.kt. Have three pages in the pager. Each page should contain
  the text "Page 1", "Page 2", and "Page 3" respectively in the center of the screen.
commands:
  build:
    - ./gradlew assembleDebug
acceptance_criteria:
  project_builds: true
  llm_diff_judge:
    - Must use `HorizontalPagerScaffold`.
    - Each page should use `AnimatedPage` to wrap a `ScreenScaffold`.

Ejemplo de evaluación que verifica la implementación correcta de un paginador horizontal en una app para Wear

Como mínimo, probamos la habilidad en Android Studio con el modelo Gemini Flash más reciente. Según la habilidad, también garantizamos la compatibilidad con otros modelos, como Gemini Pro, y otros agentes, como Antigravity, y sistemas de terceros.

Todas las evaluaciones se ejecutan con acceso a la base de conocimiento, por lo que, si la información está en la documentación y los modelos deciden buscarla, no publicamos una habilidad para ella.

Uso de la base de conocimiento de Android (Android Studio o CLI de Android)

Si desarrollas apps para Android, siempre debes usar la base de conocimiento de Android para acceder a la documentación oficial. Si usas el agente en Android Studio, ya está disponible como herramienta, pero si usas otro agente, instala la CLI de Android. Entre otras cosas, contiene el comando docs, que le da a tu agente acceso a la documentación oficial de Android. Tener una sola herramienta es mucho más eficiente que instalar cientos de habilidades.

Si tu modelo actúa con demasiada confianza y quieres que consulte la documentación con más frecuencia, una forma muy común de motivarlo es agregar "Consulta siempre la documentación oficial de Android cuando trabajes con las APIs de Android" a tu archivo AGENTS.md o equivalente. Por supuesto, también puedes forzar esto pidiéndole al agente que consulte la documentación directamente en tus instrucciones.

¿Por qué están inhabilitadas las solicitudes de extracción?

Debido a que nuestro framework de evaluación depende de una infraestructura interna que no se puede abrir, no podemos aceptar solicitudes de extracción directas para nuevas habilidades. Sin esta infraestructura, no tendríamos forma de volver a evaluar los cambios de las solicitudes de extracción entrantes. Sin embargo, supervisamos activamente los comentarios de la comunidad. Si quieres informar un error, sugerir una optimización o solicitar una nueva habilidad oficial, envía un problema.

¿Cuándo tienen sentido las habilidades básicas?

Si bien los modelos SOTA generalmente no necesitan habilidades básicas, hay algunas situaciones en las que habilitar habilidades básicas o creadas por la comunidad agrega valor real. Por ejemplo:

  • Usas instrucciones vagas: Las habilidades amplifican tu intención. Si das una instrucción vaga como "agregar animaciones a esta pantalla", una habilidad específica de animación de Compose puede inspirar al modelo y llevarlo a APIs modernas o patrones de prueba de capturas de pantalla que de otro modo no habría considerado.
  • Quieres usar modelos más pequeños y económicos: Los LLM de Frontier son costosos. Si descargas tareas rutinarias a modelos de peso abierto más pequeños, como Gemma 4, habilitar habilidades básicas llena las brechas de conocimiento que faltan en los parámetros más pequeños.
  • Refactorizas o revisas código heredado: Los modelos se destacan en la generación de código que funciona, pero, cuando editan bases de código antiguas, suelen priorizar la coherencia con los patrones heredados circundantes en lugar de reescribir elementos con precisión moderna. Un agente revisor especializado equipado con habilidades básicas puede ayudar a romper ese hábito.
  • Te desvías de la norma: A los LLM les encanta la "forma de Google" estándar de diseñar apps para Android. Si tu equipo usa una arquitectura de capa de vista altamente personalizada, el modelo tendrá dificultades para mantenerse alineado. Una habilidad personalizada que describa explícitamente tu arquitectura es muy útil.

¿Dónde puedo encontrar habilidades básicas?

La comunidad de Android te respalda. Chris Banes tiene una colección integral de habilidades para Compose y Kotlin, Ivan Morgillo publicó una habilidad que audita proyectos de Compose y Jaewoong Eum creó dos sobre pruebasrendimiento

Siempre descarga habilidades de fuentes confiables. Personalmente, no confiaría en los repositorios que contienen docenas o cientos de habilidades de Android, ya que probablemente se generen con IA y no se prueben, y podrían incluso contener instrucciones maliciosas o sesgadas. Además, no instales habilidades generales de ingeniería de software a ciegas; muchas de ellas están diseñadas para el desarrollo web.

Objetivo: obsolescencia

Parafraseando a Karpathy: Las habilidades de hoy estarán en los modelos del mañana. A medida que los modelos SOTA sigan mejorando, esperamos que las habilidades queden obsoletas, en especial, las que se basan en APIs nuevas. Para determinar cuándo retirarlas, ejecutamos nuestras evaluaciones cuando se lanzan modelos nuevos. Si se aprueban, las conservaremos durante unos meses hasta que la mayoría de los usuarios hayan realizado la transición. 

Escrito por:
Continuar leyendo