Из каждой сессии с ИИ выносить не только код, но и правилаСлучай из реальной работы. Crashlytics поймала краш. OTP-ресивер на Android 13 падает с NullPinterException. Отдал агенту на фикс. Он разобрал, нашёл место и сразу говорит:
Дядя Федор, это всё потому что у тебя нету обертки в try/catch
Даже комментарий в коде аккуратно оставил. Формально всё верно. Именно это я и попросил сделать - исправить креш. Только он не пытался разобраться. Просто закрыл симптом и пошёл дальше. Краш исчезнет, но приложение от этого работать правильнее не станет.
Я сказал: подожди, давай поймём, что здесь происходит на самом деле.
Агент пошёл глубже и нашёл: баг самой платформы,
b/232589966.
getParcelableExtra(key, Class) на API 33 кидает NPE, а наш код звал его с порога
TIRAMISU (33), ровно на сломанной версии. Настоящий фикс: поднять до
UPSIDE_DOWN_CAKE (34).
try/catch оставить страховкой с логом, не фиксом.
Первый вариант убрал бы краш. Но OTP молча перестал бы приходить на всех Android 13. Тихий отказ, невидимый в мониторинге. Хуже краша 💥
Но вот что я стал делать после того, как мы разобрались - сохранение подхода как правила для работы с багом. Говорю агенту:
хорошо, а теперь занеси этот подход в глобальные правила
Он записал: чини причину, а не симптом; defensive-обёртка только поверх устранённой причины; проглоченная ошибка обязана логироваться. В следующей сессии он это уже знает. Надеюсь...
Вот так и работает эволюция харнесса. Не надеяться, что агент сам что-то вынесет и запомнит. А в конце каждой нетривиальной сессии спрашивать себя: есть здесь урок о подходе? Если есть - фиксируй в правила. Именно так, на конкретных кейсах, харнесс становится твоим.
Код стареет. Правила копятся. Не забывайте их актуализировать со временем!
#AI #AndroidDev