искра/бот
Инструкция Промпт Все статьи Войти Регистрация

Как исправить баг по issue и открыть PR с Искрой

Передайте issue, код и критерии приёмки. Искра поможет подготовить минимальное исправление, тест и PR с согласованием. Без подключения GitHub можно получить patch по файлам.

Как исправить баг по issue и открыть PR с Искрой

Передайте агенту воспроизводимую ошибку и границы изменений. Искра может пройти связную задачу: прочитать issue и код, предложить тест, подготовить исправление и при подключённом GitHub открыть PR через согласованные операции записи.

Что получить для ревью

Учебный issue: потерян последний день периода

В выгрузке оплаченных заказов за 30-31 октября пропали заказы за 31-е число. Причина в сравнении верхней границы: использовано < вместо <=. Даты в примере календарные, без времени и часовых поясов.

Скачать модуль, данные, тесты и эталон ZIP. В архиве отдельно лежат исходная версия и исправленный эталон. Начните с example-input, не подменяя его готовым ответом.

Как пройти от issue до проверяемого PR

  1. Ограничьте задачу одним issue. Дайте номер issue, repo, базовую ветку, ожидаемый результат и список допустимых файлов. Для закрытого проекта сначала проверьте, что код разрешено передавать в выбранный рабочий контекст.
  2. Выберите способ доступа. Для работы через GitHub нужен доступный навык, подключение и права к нужному репозиторию. Проверьте их в «Навыках». Без подключения приложите issue, нужные файлы и тесты: Искра сможет подготовить patch для ручного переноса.
  3. Попросите найти причину и воспроизведение. Агент читает issue и код, выделяет минимальный участок и готовит тест по критериям приёмки. Тест считается выполненным только при наличии реального запуска и результата; чтение кода этого не заменяет.
  4. Получите и проверьте минимальное исправление. Сначала посмотрите diff. Тесты можно запускать лишь в доступной совместимой среде. В песочнице нет произвольного сетевого доступа: загрузку любых зависимостей, клонирование проекта и полноценную IDE обещать нельзя.
  5. Согласуйте запись и открытие PR. Подключённый GitHub предлагает отдельные формы подтверждения для операций записи. Проверьте создание ветки, запись файлов/коммита и параметры PR. Открытие PR и слияние являются разными действиями.
  6. Прочитайте фактический статус проверки. Попросите ссылку на PR, перечень файлов и отчёт о выполненных тестах. Агент может прочитать доступные статусы и логи CI. Если проверка ожидает или недоступна, итог остаётся неизвестным до её завершения.

Полный промпт для исправления ошибки

Укажите реальные границы задачи. В файловом варианте замените параметры репозитория на список приложенных файлов и попросите остановиться после подготовки patch.

Разбери issue и подготовь минимальное исправление.

Репозиторий: [владелец/репозиторий]. Issue: [номер или приложенный issue.md].
Базовая ветка: [ветка]. Разрешённая новая ветка: [имя].
Разрешённые файлы/модули: [перечень]. Критерии приёмки: [ожидаемое поведение].
Команда проверки: [команда проекта, для учебного примера python3 -m unittest -v].

1. Прочитай issue, обсуждение и связанные файлы. Зафиксируй исходную ревизию. Если данных или прав недостаточно, сообщи, чего не хватает.
2. Объясни причину и предложи минимальное изменение без постороннего рефакторинга и зависимостей.
3. Подготовь тест, который воспроизводит ошибку и проверяет границы. Прежде чем заявить о воспроизведении, запусти его, если среда совместима и запуск разрешён.
4. Внеси исправление в разрешённые файлы. Повтори подходящие тесты. Различай: тест предложен, тест фактически выполнен, результат неизвестен. Если запуск недоступен, дай patch и точную команду человеку, без заявления «тесты прошли».
5. Покажи diff и ограничения проверки. До моего согласования не выполняй запись в GitHub.
6. После согласования предложи отдельные формы для создания ветки, записи файлов/коммита и открытия PR. Проверь repo, base и head в каждой форме. Если операция недоступна, остановись и сообщи об этом.
7. В PR опиши проблему, новое поведение и фактическую проверку. Прочитай доступные статусы CI; не называй ожидание успешным прохождением.
8. Верни ссылку на созданный PR либо fix.patch, тест и verification.txt для ручного переноса.
Не сливай PR, не развёртывай изменения и не трогай другие репозитории.

Разбор на маленьком модуле

Учебный пример подготовлен для статьи. Код и тесты выполнены локально при её подготовке; это не запись запуска Искры и не настоящий GitHub PR.

Было

start_day <= date.fromisoformat(order["date"]) < end_day

Стало

start_day <= date.fromisoformat(order["date"]) <= end_day
ПроверкаОжидаемый результат
30.10-31.10 включительноA1, A2, A3, всего 3 оплаченных заказа
Только 31.10A2 и A3, всего 2 заказа
Отменённый A4Не попадает в выборку
До начала и после концаA0 и A5 не попадают в период 30.10-31.10

В исходном модуле два из пяти тестов воспроизводят ошибку. Исправленный эталон проходит все пять. Полный локальный отчёт и минимальный patch доступны для сравнения.

cd example-input
python3 -m unittest -v

# Для проверки эталона перейдите в example-expected
# и выполните ту же команду.

Что поместить в описание PR

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

Что проверить до принятия PR

Что сделать дальше

Повторить в учебном модуле

Сначала получите воспроизводимую проверку по файлам. Здесь нет зависимости от доступа к рабочему GitHub.

Перенести на один issue

Выберите маленькую ошибку с понятными критериями. Укажите разрешённые файлы и подходящую команду проверки.

Сохранить результат ревью

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

Чем агентская задача полезна разработчику

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

Доступ к GitHub через API позволяет работать с файлами и PR. Он не даёт автоматически среду проекта, локальную IDE, установленные зависимости и успешный CI. Эти условия нужно определить до запуска задачи.

Связанные материалы

Попробуйте на своих материалах

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

Открыть Искру →