Как ChatGPT помог мне потратить шесть часов на пятиминутную проблему

—

от автора

Как всё начиналось

В тот августовский летний день я занимался своими исследованиями финансового рынка и приводил в порядок заметки в Obsidian.

В какой-то момент я загрузил два CSV-файла, затем удалил их через Проводник Windows и обнаружил, что Obsidian стал подтормаживать.

Причём тормозило не всё приложение. Редактор работал прекрасно, поиск тоже. А вот при переключении разделов настроек появлялась неприятная задержка.

Спойлер

Статья не совсем про обычный баг хаунтинг

Меню настроек. Следите за курсором. версия 1.13.4. У меня одного так?

Меню настроек. Следите за курсором. версия 1.13.4. У меня одного так?

Мелочь, конечно. Но знаете, бывают такие мелочи, которые совершенно не мешают жить, пока не начинаешь обращать на них внимание. А после этого жить с ними уже невозможно. Тем более такому перфекционисту как я. Все функции должны работать! Не успокоюсь пока не найду решение проблемы. Даже если это чужая программа.

Я решил разобраться.

Чтобы поберечь свои нейронные вычисления я обратился к чужим — к ChatGPT.

Зачем человеку самостоятельно искать причину проблемы, если рядом находится система, обученная на огромном количестве информации и способная объяснять практически всё?

Виновных оказалось много. Только никто не был виноват

Первое — повреждённое хранилище. Создал новое. Тормозит. Потом плагины. Отключили. Тормозит. Тему оформления, конфигурацию, аппаратное ускорение, установку программы.

С каждым новым экспериментом круг предполагаемых причин вроде бы сужался, но Obsidian продолжал тормозить.

Я уже начал грешить на собственный компьютер. Может, проблема в Windows? Видеодрайвере? Electron? ChatGPT не отставал. Он выдвигал новые гипотезы, объяснял, как их проверить, анализировал результаты.

И самое интересное — почти каждая следующая гипотеза выглядела разумной.

Ну действительно, почему бы не проверить ещё одну настройку? Это ведь займёт всего пару минут. А затем ещё одну. И ещё. Так мы незаметно добрались до Chrome DevTools. Тут всё стало совсем серьёзно. Вместо этого надо было спросить ИИ сколько часов мы уже копаемся и остановиться. Но не в этот раз.

Мы открыли Performance, начали профилировать интерфейс и обнаружили, что обработка некоторых взаимодействий занимает порядка 300 миллисекунд. При этом отдельные этапы Recalculate Style и Layout занимали примерно по 5–10 миллисекунд.

Ого! Теперь у нас были уже не просто тормоза, а настоящие измерения.

Мы обсуждали обработку событий, длительные задачи и возможные источники задержек.

Я впервые почувствовал себя человеком, который занимается исследованием производительности программного обеспечения. Хотя ещё недавно просто хотел открыть настройки.

И вот здесь произошло то, чего мы не ожидали.

«О чудо, настройки летают!»

В какой-то момент мы решили проверить более старую версию Obsidian. Я скачал 1.12.7.

Установили. Открыли настройки. И всё заработало.

Версия 1.12.7. Всё летает

Версия 1.12.7. Всё летает

Никаких задержек. Интерфейс реагировал совершенно нормально.

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

А практическое решение заключалось в том, чтобы установить старую версию.

На том же компьютере. С той же Windows.

Я испытал одновременно радость от решённой проблемы и некоторое недоумение по поводу проделанной работы. Впрочем, к тому времени мы уже настолько увлеклись, что просто остановиться было бы как-то странно.

Ведь если две версии одного приложения работают по-разному, это уже похоже на регрессию производительности!

Мы продолжили исследование.

А стоило остановиться

А стоило остановиться

И даже тут нашлись приключения. Например, выяснилось, что старый установщик Obsidian не всегда означает запуск старой версии — приложение могло продолжать загружать обновлённый пакет из пользовательского каталога.

Obsidian version: 1.13.4Installer version: 1.12.7

Пришлось разбираться и с этим.

В конце концов мы подтвердили сравнение: в 1.13.4 обработка переключений Settings занимала примерно 300–500 мс, а в 1.12.7 — 30–60 мс.

После этого я опубликовал официальный баг-репорт.

Через четыре дня получил ответ от участника команды Obsidian:

I can’t reproduce. (русс. — Не могу воспроизвести)

То есть на моём компьютере проблема была, мы её измерили, повторили и устранили откатом.

А у разработчиков она не проявилась.

На этом можно было бы закончить рассказ о техническом расследовании. Тем более что конкретную причину замедления в исходном коде мы так и не установили. Да, можно было копаться дальше, но зачем?

Кому интересны подробности, вот оригинальный баг-репорт на форуме Obsidian. Другие мои проекты и исследования собраны в GitHub-портфолио.

Но меня в этой истории заинтересовало совсем другое.

А зачем мне вообще понадобились эти шесть часов?

Попробуем вернуться к началу. Какая у меня была задача?

Не исследовать Electron. Не обнаружить регрессию производительности. Не написать баг-репорт для разработчиков Obsidian.

Мне нужно было, чтобы программа нормально работала.

Всё.

Для этого оказалось достаточно вернуться к предыдущей версии.

Но каким-то образом за шесть часов я успел превратить обычную пользовательскую неприятность в техническое расследование.

И самое удивительное — никто меня к этому не принуждал.

ChatGPT не заставлял меня открывать DevTools. Не требовал исследовать каждую гипотезу. Не настаивал на публикации баг-репорта. Я задавал вопросы. Он отвечал. Я проверял. Он предлагал следующий шаг.

И этот процесс оказался настолько доступным, что остановиться было труднее, чем продолжать.

А ведь раньше всё было несколько иначе.

Предположим, мне понадобилось бы разобраться в работе Electron без ChatGPT.

Сначала пришлось бы искать документацию. Потом выяснять, как открыть инструменты разработчика, изучать интерфейс профилировщика, разбираться в показателях и пытаться понять, что вообще происходит.

На каком-нибудь этапе я, вероятно, задался бы вопросом: а настолько ли мне нужно всё это знать?

Может, просто переустановить программу? Или попробовать старую версию?

Но теперь этот естественный барьер исчез.

Не знаешь, как открыть DevTools? Спроси.

Не понимаешь результатов? Спроси.

Не знаешь, как проверить очередную гипотезу? Спроси.

Вместо нескольких часов самостоятельного изучения документации — несколько сообщений.

И внезапно оказывается, что ты способен взяться за задачу, которой раньше даже не стал бы заниматься.

ИИ сделал сложные действия настолько доступными, что я перестал замечать, как усложняется сама задача

Суперсила, которая не умеет останавливаться

Мы привыкли оценивать искусственный интеллект по тому, сколько времени он экономит.

Написал код за минуту вместо часа. Обработал документ за секунды. Объяснил сложную концепцию без необходимости читать несколько книг.

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

Когда ты можешь сделать за день то, на что прежде понадобилась бы неделя, это вовсе не гарантирует, что у тебя появится шесть свободных дней. Возможно, ты просто возьмёшься за семь новых задач.

А потом за четырнадцать. И каждая будет казаться вполне посильной.

С моим Obsidian произошло нечто похожее. Одна гипотеза не подтвердилась? Хорошо, проверим следующую.

Обнаружили задержку? Давайте измерим. Получили измерения? Интересно, с чем они связаны.

Нашли различие между версиями? Надо разобраться. Разобрались? Теперь можно написать разработчикам.

Каждый отдельный шаг вполне рационален.

Но если посмотреть на всю последовательность целиком, возникает вопрос: а мы вообще ещё занимаемся первоначальной задачей?

И здесь есть любопытное противоречие.

ChatGPT действительно помог мне быстрее проводить эксперименты.

Но сами эксперименты, возможно, вообще не состоялись бы, если бы у меня не было ChatGPT.

Получается, инструмент одновременно сократил время выполнения отдельных действий и увеличил количество действий, за которые я взялся.

Сколько времени я в итоге сэкономил? Хороший вопрос. И у меня нет на него ответа.

Но были ли эти шесть часов потрачены зря?

Вот здесь я не хочу делать поспешных выводов.

Потому что за шесть часов мы действительно кое-чего добились.

Мы проверили несколько гипотез, измерили задержки, сравнили версии, обнаружили особенности механизма обновления и подготовили публичный технический отчёт. ( оригинальный баг-репорт на форуме Obsidian)

Я получил опыт работы с инструментами, которыми раньше почти не пользовался.

Мы нашли убедительные признаки регрессии производительности.

И, что особенно приятно, всё это оказалось документировано. Результаты можно показать другим людям, обсудить и попытаться воспроизвести.

Разве это бесполезно? Нет. Но тогда возникает другой вопрос.

Что именно я хотел получить, когда начинал?

Работающий Obsidian? Или новое исследование для своего портфолио?

Если первое, то мы явно выбрали не самый короткий путь. Если второе, то шесть часов выглядят уже совершенно иначе.

Проблема в том, что вторую задачу я изначально вообще не ставил.

Она появилась сама по себе, пока мы с ChatGPT разбирались с первой. И это, пожалуй, самое интересное открытие за всё расследование.

ИИ не просто помогает мне решать поставленные задачи.

Он позволяет настолько легко расширять их границы, что первоначальная цель может незаметно потеряться.

Разобраться ещё в одном вопросе. Проверить ещё одну идею. Сделать ещё один эксперимент.

Всё доступно. Всё интересно. Всё потенциально полезно. Но моё время от этого не стало бесконечным.

И что теперь?

Я по-прежнему считаю искусственный интеллект одним из самых полезных инструментов, которые у меня когда-либо были.

Без ChatGPT я, вероятно, не стал бы заниматься половиной тех проектов и исследований, за которые сейчас берусь.

Он действительно расширил мои возможности. Но раньше у меня существовало естественное ограничение: я не всегда знал, как что-то сделать.

Теперь этот барьер стал значительно ниже.

И выяснилось, что вместе с новыми возможностями появляется новая ответственность — выбирать, на что их тратить.

Возможно, самое полезное, что я мог сделать в начале августа, — вовсе не открывать Chrome DevTools.

А просто задать себе один вопрос:

Мне нужно, чтобы Obsidian работал, или мне нужно выяснить, почему он не работает?

Об авторе

Разработка · ИИ · Исследования

Независимый разработчик и исследователь. Создаю программные продукты, работаю с искусственным интеллектом и проверяю идеи на практике.

GitHub: Мои Разработки и исследования

Ранее на Хабре:

Как я уделал Microsoft, но это никому не нужно (кайфую сам) — история создания Jupiter, программы голосового ввода текста для Windows.

Старый трейдер поделился секретом заработка. Я проверил с помощью кода. Удалось заработать? — можно ли заработать на рынке фьючерсов, взяв стратегию из известной книги

ссылка на оригинал статьи https://habr.com/ru/articles/1102182/