Ошибка в коде словами: что спросить в чате, не открывая файл с секретами
Редактор с подсказками уже стоит в файле и предлагает следующую строку. Это удобно, пока вы внутри функции и помните, зачем она. Другое дело — красный прогон теста и сообщение, которое вы не хотите тащить в тот же файл вместе с ключами. Здесь полезен отдельный чат: объяснить ошибку словами и показать маленький кусок без секретов. Подсказка в редакторе пусть дописывает код. Чат пусть помогает понять, что сломалось. Смешивать эти две работы в одном окне с открытым файлом настроек — лишнее.
Ниже разбор на бытовом примере, как такое разделение делают в сентябре 2026 года. Это не инструкция обойти защиту и не просьба прислать боевые ключи.
Две разные работы
Подсказка рядом с курсором видит открытый файл и продолжает текст. Она сильна в локальной строке: забытая скобка, имя, которое уже встречалось выше, короткий шаблон, который вы и так узнаете. Она слабее, когда нужно сказать человеческим языком, почему тест ждал одно, а получил другое.
Чат наоборот. Ему можно принести текст ошибки и десяток строк функции, если в них нет секретов, и спросить, какое условие расходится с ожиданием. Ему не нужно дописывать весь модуль и не нужно видеть соседний файл, где лежат пароли. Как только вы просите чат «просто почини проект», он начинает просить файлы, которые вы как раз не хотели показывать.
Что можно вставлять
Вставляйте то, что не стыдно показать постороннему помощнику, потому что окно чата — не сейф команды.
- Текст ошибки своими словами или копия сообщения без путей к домашней папке и без имён внутренних серверов, если они секретны.
- Маленькая функция, которую вы написали, с выдуманными данными: число 3 вместо настоящей суммы клиента.
- Кусок теста: что подали на вход и что ожидали, тоже на игрушечных значениях.
- Ваш вопрос одной фразой: почему ожидали истину, а получили ложь.
Этого обычно хватает, чтобы увидеть перепутанное сравнение, неверную границу цикла или ожидание, которое не совпадает с условием.
Что оставлять в редакторе и не нести в чат
Рядом с курсором можно принять подсказку, которую вы прочитали и поняли. В чат это не дублируйте пачкой файлов.
- Файлы с ключами, паролями, личными сертификатами, строками подключения к боевой базе.
- Настоящие строки клиентов: почта, телефон, номер заказа, адрес.
- Дамп всей папки и просьба «найди сам».
- Секрет, который случайно попал в текст ошибки. Его сначала вырежьте.
Если без настоящего значения ошибку не объяснить, замените его на пример того же вида и прямо напишите: это заглушка, не настоящий ключ. Не просите чат угадать боевой секрет по обрезанному куску.
Пример: тест на пустую корзину
Функция считает, что корзина пустая, если список товаров пуст. Тест создаёт корзину без товаров и ожидает истину. Прогон говорит: получили ложь. Вы смотрите код и видите проверку длины больше нуля там, где нужна проверка «длина равна нулю». Это можно поймать и без чата. Чат нужен, когда вы уже устали и готовы попросить «перепиши функцию целиком» вместе с файлом настроек. Не переписывайте целиком.
В чат уходит так. «Вот функция. Пустая корзина — это пустой список. Вот тест: на пустом списке ждали истину, пришла ложь. Скажи, какое сравнение перевёрнуто. Не предлагай подключаться к базе. Не добавляй новых библиотек. Ответ коротко: какая строка и почему».
Нормальный ответ называет знак сравнения и останавливается. Плохой ответ присылает новый проект, тянет посторонний пакет и просит вставить адрес сервера. Вам не это нужно. Второй репликой: оставь только объяснение знака, код функции не раздувай, сервер не упоминай. Если хотите поправить строку, поправьте её в редакторе сами или примите подсказку там, где видите соседние строки и понимаете контекст. Слепое копирование десяти новых строк из чата в бой как раз и приносит чужую зависимость.
Как пересказать ошибку, если в ней лишнее
Сообщение прогона иногда содержит полный путь, имя машины и параметр запроса. В чат это не копируйте целиком. Перескажите шаблон: «проверка пустой корзины вернула ложь на пустом списке». Если без фрагмента сообщения непонятно, вырежьте пути и оставьте одну строку типа ошибки. Не оставляйте токен, даже если он «и так в логе». Лог для команды и окно чата — разные места.
Стек из тридцати кадров сократите до своего кадра: файл и функция, которые вы писали. Чужие кадры библиотеки без вопроса только шумят. Если проблема на границе с библиотекой, назовите её имя и версию словами, без вставки всего журнала сборки.
Подсказка в редакторе остаётся на строке
Когда вы поняли, что знак сравнения перевёрнут, дальше быстрее поправить строку на месте. Подсказка предложит вариант. Прочитайте его. Если он меняет только знак, его можно принять. Если вместе со знаком она переписывает функцию, тащит сеть и логирование ключа, отклоните. Чат к этому моменту уже не нужен: ответ вы получили.
Не вставляйте в чат вопрос «как настроить редактор и подсказки». Это другой разговор и он раздувает тему. Держите один вопрос: почему тест получил ложь.
Маленький кусок вместо всего модуля
Десять строк с вопросом почти всегда полезнее файла на двести строк. В большом файле чат выбирает случайную функцию и «улучшает» её. Вы потеряете время, вычитывая улучшения. Вырежьте функцию в заметку, убедитесь, что внутри нет строк подключения, и несите её. Если функция не понимается без типа рядом, скопируйте определение типа с полями-заглушками, не с боевыми значениями.
Комментарии с настоящей почтой клиента в примере тоже вычистите. Пример «user@example» достаточен, если адрес вообще нужен. Для пустой корзины адрес не нужен.
Чего не просить
Не просите подобрать рабочий ключ, обойти оплату, отключить проверку лицензии, угадать пароль по хэшу или вытащить данные, к которым у вас нет доступа. Это не отладка вашей функции. Не просите чат выполнить код на боевой базе. Для пустой корзины хватает рассуждения о знаке сравнения.
Не просите «сделай, чтобы тесты всегда были зелёные» ценой ослабления теста. Тест как раз поймал перевёрнутый знак. Ослабить ожидание до «какая разница, истина или ложь» — значит выбросить сигнал. Попросите объяснить расхождение, не попросить спрятать его.
Порядок на один вечер
- Прочитайте сообщение и вырежьте из него секреты и пути.
- Выпишите десять строк функции и игрушечный вход.
- Спросите в чате одну фразу: какое сравнение или какое ожидание расходится.
- Если ответ раздут, второй репликой оставьте только объяснение.
- Правьте строку в редакторе и снова запустите тот же тест локально.
Если тест зелёный, остановитесь. Не устраивайте чату экскурсию по остальному модулю «заодно улучши». Улучшения без вопроса приносят правки, которые вы не планировали вычитывать.
Куда сохранить вывод
Короткое объяснение можно дописать комментарием к изменению своими словами: «пустая корзина — длина равна нулю, знак был перевёрнут». Не вставляйте в репозиторий простыню из чата и не коммитьте файл, в который случайно попал ключ из лога. Если ключ засветился, его меняют по правилам команды, а не «убирают из сообщения и забывают».
Завтрашняя ошибка — новый вопрос. Старый разговор про корзину не должен подсовывать её условие в задачу про оплату.
Где описать ошибку словами
Отдельное окно как раз для этого: мало строк, ноль ключей, один вопрос. Подсказка в редакторе остаётся на строке, где вы и так смотрите код. Чтобы описать ошибку словами, вставьте функцию на заглушках и что тест ждал. Чат назовёт перевёрнутый знак, если он виден из куска. Боевой файл настроек для этого не открывают и не вставляют.
Комментарий в репозитории пишете вы, не лента чата
Объяснение про перевёрнутый знак полезно соседнему человеку, но не в виде вставки «как сказал помощник». Напишите одну строку своими словами в описании изменения: пустой список считался непустым из-за знака длины. Этого достаточно, чтобы через месяц понять правку. Простыня из чата с советами про архитектуру всего магазина в описание не входит. Она устаревает и пугает ревьюера объёмом, которого вы не проверяли.
Если ревьюер спрашивает, зачем правка, покажите тест до и после, а не скрин разговора. Тест на пустом списке — доказательство. Скрин чата доказательством не является: там мог быть другой кусок. И не прикладывайте к задаче лог, из которого вы не вырезали путь и параметр. То, что нельзя было в чат, нельзя и в публичный трекер.
Подсказка редактора, которую вы приняли, тоже ваша. Фраза «это не я, это дописало само» не снимает строку с проверки. Прочитали, поняли, тест зелёный — значит, строка ваша. Не поняли — отклоните и вернитесь к короткому объяснению, не к новому большому куску.
Вторая ошибка в тот же вечер — новый чистый вопрос
После зелёной корзины падает соседний тест про цену. Не пишите в том же окне «и вот ещё падает». Старый знак длины прилипнет к цене, и чат начнёт чинить корзину заново, заодно ослабив новый тест. Новое сообщение: новая функция, новый игрушечный вход, новое ожидание. Снова без ключей и без просьбы починить сервис целиком.
Если две ошибки на самом деле одна, вы увидите это по своим словам, не по совету склеить всё в рефакторинг. Рефакторинг вечером без запроса — способ потерять рабочую корзину. Почините второе сравнение так же узко. Завтра, если модуль и правда путаный, заведите отдельную задачу на перепись, уже без горящего прогона и без чата, который торопится.
В конце вечера закройте окно. Утренний чат с вчерашней корзиной плохо влияет на свежую задачу: он «помнит», что вы разрешили большой ответ, хотя вы как раз просили короткий. Пустое поле и десять строк снова дешевле, чем распутывание старой ленты.
Короткие ответы на типичные сомнения
Можно ли вставить весь проект архивом?
Для одного упавшего теста это вредно. В архиве почти наверняка есть лишнее, и ответ будет про случайный файл. Десять строк дают проверяемое объяснение.
Чат просит адрес сервера, чтобы «воспроизвести». Давать?
Нет, если вопрос про знак в функции. Воспроизведение для пустой корзины делается игрушечным списком у вас локально. Адрес боевой машины в чат не нужен.
Подсказка в редакторе и чат советуют разное. Кому верить?
Тому варианту, который вы можете объяснить и который проходит тот же тест. Слепое согласие с любым из двух — не проверка. Запустите тест.
Что делать, если ошибка только на настоящих данных?
Опишите форму данных, не сами данные: пустое поле, слишком длинная строка, нулевая цена. Если секрет и есть причина, его всё равно не вставляют. Разберите признак, а не значение.
Нужно ли благодарить и продолжать диалог после зелёного теста?
Нет. Зелёный тест — конец вопроса. Продолжение из вежливости часто заканчивается лишней перепиской модуля.
Чат хорошо объясняет маленькое расхождение, если вы принесли маленькое и чистое. Редактор хорошо дописывает строку, которую вы видите. Ключи не нужны ни той, ни другой работе. Их место не в окне разговора и не в примере для теста.
