← Вайбкодинг · Вайбкодинг с OpenCode EN FR Курс 30/70 →

Модуль 02 — Практика: контекст под контролем

Время: 160 минут · Артефакт: labs/02-context/ (AGENTS.md + отчёт)


Задание 1. Написать AGENTS.md (40 мин)

Возьмите свой учебный проект (или ~/edu/sandbox).

  1. Скопируйте шаблон: templates/AGENTS.md → <проект>/AGENTS.md.
  2. Заполните: стек, команды, конвенции, запреты.
  3. Проверьте, что каждая команда действительно работает:
pytest -q      # или ваша команда тестов
ruff check .

Приёмка: - Все команды из AGENTS.md запускаются без ошибок. - В файле нет общих слов («пишите хороший код») — только проверяемые правила. - Не больше 40 строк.


Задание 2. Эффект AGENTS.md (30 мин)

Выполните одну и ту же задачу дважды в новых сессиях:

A) без AGENTS.md (временно переименуйте файл)
B) с AGENTS.md

Задача:

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

Записать в отчёт: | | A (без) | B (с) | | --- | --- | --- | | стиль совпал с проектом | | | | использован правильный тест-фреймворк | | | | число итераций | | | | стоимость сессии | | |

Приёмка: есть вывод, в котором видна хотя бы одна разница.


Задание 3. Ссылки вместо пересказа (25 мин)

Найдите в проекте модуль на 200+ строк. Сравните два запроса:

Плохо: "У меня есть модуль платежей, он делает много всего,
там есть функции для расчёта, поправь округление"

Хорошо: "В src/payments/calc.py функция round_amount округляет
до 2 знаков. Нужно банковское округление (ROUND_HALF_EVEN). Поправь и добавь тест."

Записать: какой запрос дал более точный дифф, сколько токенов потрачено.


Задание 4. Деградация и восстановление (40 мин)

Проведите «грязную» сессию:

  1. Дайте 4 разные задачи подряд в одной сессии.
  2. После каждой — просите переделать «немного иначе».
  3. На 5-й задаче попросите «сделай то же, что в первой задаче, но для другого модуля».

Зафиксируйте результат (качество, стиль, ошибки).

Затем в новой сессии:

Контекст: в проекте есть модуль X, функция Y делает Z (файл src/...).
Задача: сделай то же для модуля A.
Критерий: тесты проходят, стиль как в Y.

Приёмка: в отчёте — сравнение «грязной» и «чистой» сессии по 3 признакам (стиль, точность, стоимость).


Задание 5. Вынести память в файл (25 мин)

Создайте в проекте docs/decisions.md и запишите туда 3 архитектурных решения:

## ADR-1: Тесты только через pytest
## ADR-2: Ошибки — через AppError
## ADR-3: Никаких ORM-магии, только явный SQL

Добавьте в AGENTS.md ссылку:

## Документация
- Решения: `docs/decisions.md` (читать перед архитектурными изменениями)

Проверьте: в новой сессии на вопрос «почему у нас AppError?» агент находит файл.


Критерии сдачи

  • AGENTS.md создан, команды проверены, ≤ 40 строк.
  • Есть таблица A/B сравнения из задания 2.
  • Есть сравнение «пересказ vs ссылка».
  • Есть отчёт по деградации сессии с выводом.
  • docs/decisions.md создан и подключён к AGENTS.md.