БэкендDevOpsPythonДругой язык

GitHub Copilot Agent Mode для новичка: делаем Python-проект и проверяем каждое изменение

Даём Copilot Agent Mode узкую задачу для Python-проекта, заранее фиксируем критерии, читаем diff, разрешаем команды по одной и проверяем результат тестами.

Кодик

Автор

6 мин чтения

Agent Mode умеет менять несколько файлов и запускать команды, но ответственность новичка не исчезает: задача должна иметь границы, diff нужно прочитать, а результат доказать тестом. Соберём маленький анализатор учебных баллов. Сначала сами запишем контракт и тесты, затем дадим агенту реализацию, проверим каждое изменение и специально отклоним лишнее действие.

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

1Ограничиваем

Формулируем вход, выход, ошибки и список файлов до запуска агента.

2Наблюдаем

Читаем предложенный план, diff каждого файла и каждую команду терминала.

3Доказываем

Запускаем pytest, ручной пример и git diff, а не принимаем фразу «готово».

Чем Agent Mode отличается от автодополнения

До открытия Agent Mode создайте пустой Git-репозиторий и файл tests/test_stats.py с четырьмя случаями: обычные баллы, округление, пустой список и число 120. Промпт перечисляет разрешённые файлы stats.py и README.md, запрещает новые зависимости и требует запустить pytest.

ЭтапЧто происходитПризнак результата
КонтрактЧеловек фиксирует поведение и границыЕсть тест до реализации
ПланАгент перечисляет файлы и командыОбъём не вышел за задачу
DiffКаждое изменение читается построчноПонятно, зачем строка нужна
Проверкаpytest и ручной пример запускаются человекомРезультат воспроизводится

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

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

Начните в отдельной ветке или чистом учебном каталоге. Git даёт видимый diff и простой откат конкретного файла. Не запускайте первый эксперимент в каталоге с важными незакоммиченными данными и не выдавайте агенту лишние секреты.

Готовим контракт и сильный запрос

Создайте каталог, выполните git init, uv init agent-stats и uv add --dev pytest. Сохраните тест ниже до запуска Agent Mode. Затем выберите режим Agent в Copilot Chat и дайте запрос: «Реализуй stats.py так, чтобы проходил существующий test_stats.py. Разрешены только stats.py и README.md. Не меняй тесты, не добавляй зависимости. Сначала покажи план, затем запусти pytest». Конкретные кнопки могут отличаться между IDE.

import pytest

from stats import summarize


def test_summary_for_regular_scores():
    assert summarize([60, 80, 100]) == {
        "count": 3,
        "average": 80.0,
        "min": 60,
        "max": 100,
    }


def test_average_is_rounded_to_two_digits():
    assert summarize([1, 2, 2])["average"] == 1.67


def test_empty_scores_are_rejected():
    with pytest.raises(ValueError, match="empty"):
        summarize([])


def test_score_outside_range_is_rejected():
    with pytest.raises(ValueError, match="0..100"):
        summarize([80, 120])
Что должно произойти после запуска
  • Агент предлагает небольшой план и не меняет test_stats.py.
  • Diff добавляет stats.py и объяснение запуска, без лишних зависимостей.
  • uv run pytest завершается четырьмя успешными тестами.
  • git diff --stat и git diff показывают только ожидаемые файлы.

Тест написан до реализации, поэтому агент не определяет сам, что значит «готово». Он может предложить код, но контракт и доказательство остаются независимыми.

Слепое принятие и работа через контракт
Что отличает устойчивый проект от случайного успеха. Тесты и diff важнее уверенного текста

Как читать diff и разрешения на команды

Agent Mode получает контекст рабочей папки, ищет релевантные файлы, строит план и применяет правки. Для проверки он предлагает команды. В зависимости от настроек IDE вы подтверждаете их вручную или часть может выполняться автоматически. Каждый шаг является действием с реальными файлами, а не только текстовым ответом. Поэтому полезно заранее ограничить область.

ЧастьОтветственностьЧто проверить
PromptОписывает цель, границы и критерииНет расплывчатого «сделай красиво»
Working setДаёт агенту релевантные файлыСекреты и лишние каталоги исключены
DiffПоказывает точные измененияКаждую строку можно объяснить
Terminal commandЗапускает тест или форматированиеКоманда относится к задаче
Independent checkПодтверждает результат вне ответа моделиТест повторяется после перезапуска

Красивое объяснение агента не является логом истинности. Модель может неверно прочитать библиотеку, выбрать устаревший API или изменить больше файлов, чем требуется. Просите короткий план, но проверяйте фактический diff. Перед командой смотрите рабочий каталог и аргументы. Команда pytest безопаснее непонятного install.sh из интернета.

Зелёный тест может быть ложным, если агент переписал сам тест. Смотрите не только вывод pytest, но и git diff. В этой лаборатории test_stats.py является контрактом и после старта агента не меняется.

Проверяем проект независимо от ответа агента

После первого зелёного запуска попросите агента добавить медиану. Не говорите сразу, как её считать. Сначала сами добавьте тесты для нечётного и чётного списка, затем разрешите менять stats.py и README.md. Если агент предложит dependency ради одной функции, попросите обосновать её цену и сравните с стандартной библиотекой statistics.

Проверка своими руками
  1. Зафиксируйте тесты до первой реализации.
  2. Попросите план и сверьте список файлов с разрешённым.
  3. Прочитайте diff stats.py построчно и объясните проверки.
  4. Запустите pytest самостоятельно после работы агента.
  5. Добавьте новый красный тест до запроса про медиану.
  6. Отклоните расплывчатый план и уточните границы задачи.
Готово, если выполняются все пункты
  • Все критерии сформулированы до изменений.
  • Diff содержит только разрешённые файлы.
  • Команды понятны до запуска.
  • Тесты и ручной пример проходят независимо.

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

Четыре проверки агентной правки
Четыре проверки перед следующим шагом. Каждый этап можно остановить и уточнить

Превращаем агента в инструмент обучения

Используйте агента для задач, которые можно описать и проверить: добавить один эндпоинт, тест, миграцию или документацию. Для неизвестной архитектуры сначала попросите объяснение и план без правок. Храните проект под Git и коммитьте понятные этапы. Настройте исключения для секретов и сгенерированных каталогов.

Как изучить тему в Кодике

В Кодике сначала решите задачу summarize без агента на бумаге: вход, выход и ошибки. Затем напишите тесты. Agent Mode подключайте только к реализации, которую сможете разобрать после получения.

ШагЧто изучить в КодикеМини-проверка
1Функции и списки PythonПосчитать count, min, max и average
2ValueError и проверкиОтклонить пустой список и 120
3pytestЗафиксировать четыре критерия
4Git diffНазвать назначение каждой новой строки
5Agent ModeДать узкий запрос и проверить результат

Не пытайтесь запомнить весь API. В тренажёре Кодика сначала воспроизведите чистую логику без библиотеки, затем восстановите подключение и обработку ошибок. Финальный тест: объяснить проект по памяти и добавить одну свою функцию.

Запрос не содержит критериев

Агент сам догадывается о результате. Укажите вход, выход, ошибки, файлы и команду проверки.

Команды принимаются не глядя

Проверьте рабочий каталог и действие до запуска, особенно установку и удаление файлов.

Проверяется только ответ агента

Запустите тест и ручной сценарий самостоятельно, затем посмотрите git diff.

В контекст попадают секреты

Не отправляйте .env, токены и личные данные. Ограничивайте working set и очищайте примеры.

Сверьтесь с первичным источником. Команды, версии и ограничения примера проверяйте по официальной документации GitHub Copilot Agent Mode. Если интерфейс изменился, первичная документация важнее старого скриншота.

Что получится в итоге

Готовый результат: GitHub Copilot Agent Mode для новичка: делаем Python-проект и проверяем каждое изменение
Агент создаёт два разрешённых файла, pytest доказывает контракт, а человек читает diff и принимает только понятные изменения.

Короткие ответы
Чем Agent Mode отличается от обычной подсказки?

Он может исследовать проект, менять несколько файлов и предлагать терминальные команды, а не только вернуть фрагмент текста.

Почему тест стоит написать до запроса?

Он фиксирует критерий независимо от реализации и не даёт агенту переопределить «готово» задним числом.

Что проверять кроме pytest?

git diff, список файлов, команды, ручной пользовательский сценарий и отсутствие секретов.

Как понять, что проект действительно работает?

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

Можно ли начать с готового кода из статьи?

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

Пусть агент ускоряет проверяемую работу, а не заменяет понимание

Функции, исключения и тестируемую логику закрепите в курсе Python. Проект сохраните по статье про GitHub.

Окружение сделайте воспроизводимым через uv, а чтение сообщений об ошибке потренируйте на материале про NameError.