Сообщество

Inside Android Skills – Built for deprecation

Время на чтение: 4 минуты
Посмотреть профиль Хосе Альсерреки
Jose Alcérreca Developer Relations Engineer

В апреле мы запустили официальный курс Android Skills , и его популярность превзошла все наши ожидания. В этой записи блога я отвечу на некоторые из полученных отзывов, объяснив философию и методологию проекта. Надеемся, что это также поможет вам понять, что происходит за кулисами, когда вы устанавливаете и используете навыки, что позволит вам лучше использовать токены и свое время.

Почему официальных навыков так мало?

Сейчас мы добавляем новые навыки, только если у современных моделей есть подтвержденный пробел в знаниях. Проще говоря, вам не нужно учить модель тому, что она уже знает. (Хотя есть несколько исключений – читайте дальше!)

Мы уже выпустили около 20 официальных навыков, которые намеренно нацелены на узкоспециализированные, быстро развивающиеся области, на которых стандартные модели ещё не полностью основаны, например AGP 9, Navigation 3, расширенные API камеры и Perfetto SQL.

А как насчет основных, более общих навыков? Каждый установленный навык добавляет 100–200 токенов в базовый контекст каждой задачи, которую вы запускаете. Если навык активируется, это число может быстро вырасти до нескольких тысяч. В большинстве случаев накопление базовых навыков контрпродуктивно и дорого. Прежде чем устанавливать навык для написания базового кода Kotlin или Compose, подумайте, действительно ли он нужен выбранной вами LLM или она уже достаточно хорошо разбирается в этих темах. 

Оценка навыков

Перед выпуском каждый навык тестируется по комплексному набору оценок, которые доказывают, что навык приносит явную пользу. Эти оценки должны быть успешными, когда навык активен, и неудачными в противном случае. Оценки для навыков – это то же самое, что интеграционные тесты для кода. 

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`.

Пример оценки, которая проверяет правильность реализации горизонтального пейджера в приложении для Wear OS

Как минимум, мы тестируем навык в Android Studio, используя последнюю модель Gemini Flash. В зависимости от навыка мы также обеспечиваем совместимость с другими моделями, например Gemini Pro, и другими агентами, например Antigravity, а также со сторонними системами.

Все оценки выполняются с доступом к базе знаний, поэтому если информация есть в документации и модели решают ее найти, мы не публикуем навык для нее.

Использование базы знаний Android (Android Studio или Android CLI)

Если вы разрабатываете приложения для Android, вам всегда следует использовать базу знаний Android, чтобы иметь доступ к официальной документации. Если вы используете агент в Android Studio, он уже доступен как инструмент. Если вы используете другой агент, установите Android CLI. В частности, в нем есть команда docs, которая дает агенту доступ к официальной документации Android. Использовать один инструмент гораздо эффективнее, чем устанавливать сотни навыков.

Если модель действует слишком самоуверенно и вы хотите, чтобы она чаще обращалась к документации, добавьте в файл AGENTS.md или его аналог фразу "Всегда обращайся к официальной документации Android при работе с Android API". Конечно, вы также можете попросить агента проверить документацию напрямую в запросах.

Почему pull-запросы отключены?

Поскольку наша система оценки зависит от внутренней инфраструктуры, которая не может быть открытой, мы не можем принимать прямые pull-запросы для новых навыков. Без этой инфраструктуры у нас не было бы возможности повторно оценивать входящие изменения PR. Однако мы активно отслеживаем отзывы сообщества. Если вы хотите сообщить об ошибке, предложить оптимизацию или запросить новый официальный навык, сообщите нам об этом.

Когда имеет смысл использовать базовые навыки?

Хотя моделям SOTA обычно не нужны базовые навыки, в некоторых сценариях включение основных или созданных сообществом навыков приносит реальную пользу. Пример:

  • Вы используете неточные запросы. Навыки помогают точнее передать ваше намерение. Если вы дадите общий запрос, например "добавь анимацию на этот экран", то конкретный навык Compose по созданию анимации может вдохновить модель и подтолкнуть ее к использованию современных API или шаблонов тестирования скриншотов, которые она иначе не стала бы рассматривать.
  • Вы хотите использовать более компактные и дешевые модели. Передовые LLM стоят дорого. Если вы поручаете рутинные задачи небольшим моделям с открытыми весами, таким как Gemma 4, включение базовых навыков заполнит пробелы в знаниях, которые упускают меньшие параметры.
  • Вы проводите рефакторинг или проверяете устаревший код. Модели отлично генерируют работающий код, но при редактировании старых баз кода они часто отдают приоритет сохранению согласованности с окружающими устаревшими шаблонами, а не переписыванию с современной точностью. Специализированный агент-рецензент, обладающий основными навыками, может помочь избавиться от этой привычки.
  • Вы отклоняетесь от нормы. LLM предпочитают стандартный подход Google к архитектуре приложений Android. Если ваша команда использует сильно кастомизированную архитектуру слоя представления, модели будет сложно оставаться согласованной. Специализированное действие, которое подробно описывает вашу архитектуру, может быть очень полезным.

Где найти основные навыки?

Сообщество Android всегда готово помочь. Крис Бейнс (Chris Banes) создал обширную коллекцию навыков для Compose и Kotlin, Иван Моргилло (Ivan Morgillo) опубликовал навык, который проверяет проекты Compose, а Чжэвун Эум (Jaewoong Eum) создал два навыка: по тестированию и по производительности. 

Всегда скачивайте навыки из надежных источников. Я бы не стал доверять хранилищам, в которых содержатся десятки или сотни навыков Android, поскольку они, скорее всего, созданы искусственным интеллектом и не протестированы, а также могут содержать вредоносные или предвзятые инструкции. Также не стоит слепо применять общие навыки разработки ПО, поскольку многие из них предназначены для веб-разработки.

Цель: прекращение поддержки

Если перефразировать Карпати, навыки сегодняшнего дня станут моделями завтрашнего. По мере улучшения моделей SOTA навыки, особенно созданные на основе новых API, будут устаревать. Чтобы понять, когда их нужно убрать, мы проводим оценку при выпуске новых моделей. Если они пройдут проверку, мы оставим их на несколько месяцев, пока большинство пользователей не перейдет на новую версию. 

Автор:
Продолжить чтение