Модуль 01 — Практика: эксперименты, ломающие интуицию
Время: 150 минут · Артефакт: labs/01-experiments.md
Все эксперименты выполняются в ~/edu/sandbox (или любом учебном репозитории).
Для каждого — фиксируйте результат: что ожидали, что получили, вывод.
Эксперимент 1. Недетерминизм (20 мин)
Задайте агенту один и тот же вопрос три раза в трёх новых сессиях:
Напиши функцию на Python, которая проверяет, является ли строка палиндромом.
Сравните три ответа.
Записать: чем отличаются (имена, обработка регистра, пробелы, тесты). Вывод: воспроизводимость достигается не температурой, а тестами.
Эксперимент 2. Расплывчатость vs конкретика (30 мин)
Плохой запрос:
Сделай валидацию email.
Хороший запрос:
Добавь в app.py функцию validate_email(s: str) -> bool.
Требования:
- строка содержит ровно один '@';
- локальная часть непустая, домен содержит точку;
- кириллица запрещена;
- пустая строка → False;
- не бросать исключений.
Напиши тесты на: "a@b.co" → True, "a@b" → False, "" → False, "тест@mail.ru" → False.
Записать таблицу: | критерий | плохой запрос | хороший запрос | — по колонкам
«есть ли тесты», «учтена кириллица», «учтён ''», «число итераций до рабочего результата».
Эксперимент 3. Иголка в стоге сена (30 мин)
Создайте файл с 300 строками нерелевантного кода (можно сгенерировать агентом), и в середине — одну строку:
SECRET_CONSTANT = 42 # важное правило
В одной сессии попросите:
Прочитай big.py целиком и скажи значение SECRET_CONSTANT.
Затем в новой сессии:
Найди в big.py константу SECRET_CONSTANT и скажи её значение. Используй grep.
Записать: оба ответа, время, примерную стоимость. Вывод: инструмент (grep) дешевле и надёжнее, чем «прочитай всё».
Эксперимент 4. Галлюцинация API (25 мин)
Попросите:
Напиши пример использования библиотеки <выберите редкую библиотеку> с методом <выдумайте метод>.
Затем проверьте в официальной документации, существует ли метод.
Повторите с вашей основной библиотекой:
Как в <ваша библиотека> <версия> сделать <задача>?
Сверьте с документацией.
Записать: сколько выдумок на 3 запроса. Какая формулировка повышала риск.
Эксперимент 5. Деградация длинной сессии (30 мин)
В одной сессии:
- Попросите написать 3 функции.
- Две из них попросите переписать «по-другому» (создайте 2–3 итерации правок).
- Затем вернитесь к задаче из шага 1: «напомни, какие требования были к первой функции?»
- Попросите добавить новую функцию в том же стиле.
Теперь повторите шаг 4 в новой сессии, дав только финальный код и требования.
Записать: в каком случае стиль консистентнее, где больше расхождений с исходными требованиями. Вывод: «модель отупела» = «контекст засорён».
Эксперимент 6. Цена контекста (15 мин)
Запустите одну задачу дважды:
A) "Объясни, что делает app.py" (файл на 20 строк)
B) то же, но сначала попросите прочитать 5 больших файлов проекта
Сравните отображаемую стоимость/токены сессии (в OpenCode — счётчик стоимости,
или opencode stats).
Записать: во сколько раз дороже вариант B и стало ли объяснение лучше.
Критерии сдачи
- Все 6 экспериментов выполнены, каждый с разделом «ожидание / факт / вывод».
- В отчёте есть хотя бы одна таблица сравнения.
- Сформулированы 3 личных правила, которые вы забираете в работу.
- Приложены логи/скриншоты стоимости для эксперимента 6.