Сообщать о багах быстро, а вот исправлять их было медленно. В Duolingo администраторы и бета-пользователи могут встряхнуть телефон, чтобы открыть форму сообщения об ошибке. Мы называем такие баги Shake-to-Report, или STR. Отчеты, отправляемые администраторами, автоматически превращаются в тикеты Jira для инженеров, чтобы те могли провести расследование. Эти STR-тикеты Jira включают в себя массу ключевой информации для отладки: скриншот, логи, метаданные устройства и многое другое. Тикетов поступало больше, чем мы успевали решать, и наш бэклог багов постоянно рос.
Инсайт №1: Нам нужна помощь… так давайте применим ИИ
Я работаю в команде DevX AI, миссия которой — повышать продуктивность разработчиков с помощью ИИ, так что мы, конечно же, решили применить ИИ. Мы начали с простого промпта: «Claude, исправь этот баг».
Оказывается, в исправлении бага гораздо больше нюансов, чем просто внесение изменений в код. Сначала инженерам необходимо восстановить картину произошедшего. Это может означать изучение логов, восстановление действий автора репорта, проверку того, какие A/B-эксперименты были включены, поиск соответствующего кода в кодовой базе, взятие устройства в руки и попытку воспроизвести ошибку, изучение пулл-реквестов, которые недавно затрагивали эту функцию, или даже попытку найти инженера, который изначально эту функцию реализовал.
Все это процессы, которые Duos (сотрудники Duolingo) и так выполняли вручную для исправления багов. Попросить Claude «исправить этот баг» означало неявно потребовать от него пройти через весь этот процесс, даже не объясняя шаги, которые инженеры и так знают.
Инсайт №2: Исправлять баги сложно… так давайте сделаем это проще
Что если бы ИИ выполнял ту самую исследовательскую работу, которую инженеры делали вручную? Мы опирались на то, в чем ИИ силен в Duolingo, чтобы инженеры могли сосредоточиться на том, в чем хороши люди.
Мы создали систему AI STR Fix с использованием Claude Agent SDK, причем Sonnet справлялась с большинством задач, а Opus брала на себя более сложные. Для каждой задачи мы предоставляем системный промпт, промпт пользователя, набор полезных навыков и рабочий каталог, содержащий информацию из тикета Jira, а также копию соответствующего репозитория. По мере работы AI STR Fix мы записываем результаты каждого этапа в виде файлов в рабочий каталог (а не в промпт), чтобы последующие агенты могли опираться на предыдущую работу, не загромождая контекстное окно. Это очень похоже на то, как инженеры используют полученные знания для руководства следующим этапом расследования.
AI STR Fix автоматизирует рутинную работу, которую инженеры выполняли вручную для сбора того, что мы называем ИИ-контекстом, и публикации его в тикете STR. Управление контекстом имеет решающее значение для ИИ-агентов, но «ИИ-контекст», который собирает AI STR Fix, помогает как людям, так и агентам осуществлять триаж, расследование и исправление багов.
Поиск релевантного контекста кода
Инженеры говорили нам, что простой поиск места для внесения изменений может занимать часы, особенно в незнакомых частях приложения. AI STR Fix находит и объясняет те части кодовой базы, которые наиболее вероятно связаны с багом. Это меньше времени на копание в кодовой базе и больше времени на исправление бага.
Реконструкция релевантной активности пользователя
Инженеры часто просеивают тысячи событий трекинга, чтобы понять, что произошло перед отправкой багрепорта. Мы не хотим платить за то, чтобы ИИ-агенты тоже просеивали все эти события. Чтобы не тратить токены на заведомо нерелевантные события, мы применяем эвристический префильтр: оставляем события от соответствующего клиента и бэкенда, расставляем приоритеты для ошибок и событий, наиболее близких к моменту отчета, и сворачиваем повторяющиеся события. Затем агент превращает отфильтрованные события в сфокусированную шкалу времени, предоставляя инженерам больше времени на исправление бага. Это меньше времени на копание в тысячах событий трекинга и больше времени на исправление бага.
Определение релевантных экспериментов
Duolingo обожает хорошие A/B-тесты. Большинство изменений клиентского кода в Duolingo завязаны на эксперименты. Если баг вызван экспериментом, отключение эксперимента — это быстрое исправление. AI STR Fix собирает информацию об экспериментах репортера на момент составления отчета и снова применяет эвристический префильтр, чтобы не тратить токены на нерелевантных кандидатов. Мы отбрасываем эксперименты, нацеленные только на другой клиент (эксперимент для Android не может вызвать баг, специфичный только для iOS), и оставляем только те эксперименты, которые выполнялись или были запущены на момент сообщения о баге. Затем агент изучает описания экспериментов и код, чтобы выявить релевантные эксперименты. Это меньше времени на копание в сотнях экспериментов и больше времени на исправление бага.
Поиск релевантных пулл-реквестов
В Duolingo мы мержим ОЧЕНЬ много пулл-реквестов, поэтому заставлять агента изучать каждый из них было бы дорого. Вместо этого AI STR Fix извлекает выгоду из уже проделанной работы. AI STR Fix использует релевантные файлы кода, определенные ранее, чтобы сузить поиск до недавних изменений, затрагивающих эти файлы. Затем агент изучает связанные пулл-реквесты на предмет связи с багом. Иногда он находит вероятную причину. В других случаях он обнаруживает уже существующее исправление, помогая инженерам закрыть залежавшийся тикет с багом. Это меньше времени на копание в git blame и больше времени на исправление бага (или, если он уже был исправлен, больше времени на исправление других багов).
Генерация шагов воспроизведения
AI STR Fix объединяет релевантные действия пользователя, релевантный код и информацию об экспериментах, чтобы определить, что делал репортер, где в приложении произошел баг и какие состояния экспериментов необходимы для его воспроизведения. Затем он генерирует пошаговые инструкции, используя инструменты отладки приложения, чтобы быстрее привести пользователя к проблеме. Человек или последующий ИИ-агент могут следовать этим шагам, чтобы попытаться воспроизвести проблему. Это меньше времени на угадывание того, как вызвать баг, и больше времени на его исправление.
Предложение подходящего инженера
В Duolingo работает почти 1 000 сотрудников (Duos), и не всегда понятно, кто должен отвечать за баг. AI STR Fix рекомендует специалиста, знакомого с проблемной зоной, учитывая, кто чаще всего изменяет данный контекст кода, является автором релевантных пулл-реквестов или внес вклад в соответствующие эксперименты. Это меньше времени на поиски нужного инженера и больше времени на исправление бага.
Инсайт №3: Чем проще исправлять баги, тем больше багов может исправить ИИ
Весь этот ИИ-контекст облегчает исправление багов как для людей, так и для агентов. Первоначальный рабочий процесс AI STR Fix был прост: собрать ИИ-контекст и попросить агента внедрить исправление. Это дает инженерам отправную точку вместо того, чтобы начинать с нуля, и смещает их роль с написания исправления на его верификацию и ревью.
По мере использования мы находили все больше ручных шагов для автоматизации.
Мы добавили шаг самопроверки, чтобы агент проверял свою работу на наличие очевидных ошибок, сломанных тестов и побочных эффектов перед передачей инженеру.
Мы добавили этап исправления CI (Fix CI) для мониторинга непрерывной интеграции и итеративного исправления сбоев.
Мы также обнаружили, что некоторые изменения не соответствуют соглашениям репозитория или функции, создавая дополнительную работу для ревьюеров. Мы добавили этап исследования функции перед реализацией, чтобы агент мог изучить, как работает функция и как его изменения должны вписаться в существующий код.
Наконец, мы добавили автоматические бета-сборки. Как только ветка с исправлением готова, AI STR Fix автоматически запускает бета-сборку. Любой может установить ее и проверить исправление, а значит, любой может исправлять баги.
Инсайт № 4: Исправление ошибок — это сложно
Инструмент AI STR Fix помог устранить критические баги, блокирующие релизы. Он автоматизирует часы ручной работы над каждым обрабатываемым тикетом STR-бага. Команды теперь добавляют собственные шаги контекста на базе ИИ для автоматизации рутинной работы по триажу, характерной именно для их ошибок.
AI STR Fix создан для того, чтобы облегчить жизнь инженерам. Мы передали ИИ утомительные процессы, которые инженеры выполняли вручную, чтобы они могли быстрее переходить к интересной работе.
Если вы хотите работать там, где ИИ помогает инженерам тратить меньше времени на рутину и больше времени на решение увлекательных задач, мы нанимаем сотрудников!











