Программирование с ИИ
ENRU
3.3

Уровни детализации

когда хватит одной строки, а когда нужно мини-ТЗ

Что это

Подробный запрос не всегда лучше короткого. На мелкой правке мини-ТЗ — это десять минут, потраченных вместо одной, а на большой задаче короткая строка оборачивается часом переделок.

Выбор уровня определяется не размером задачи, а ценой ошибки: сколько стоит получить не то. Статья даёт правило, по которому уровень выбирается за пару секунд.

Как выглядит в коде

Три уровня, от короткого к подробному.

Уровень 1. Одна строка

Для правок, которые видно глазом и которые легко откатить.

Запрос
Переименуй get_data в fetch_weather во всём файле.
Запрос
Добавь логирование в начало каждого хендлера.

Проверка занимает секунды: посмотрел дифф — принял или откатил. Расписывать тут нечего.

Уровень 2. Абзац

Рабочая лошадка. Обычная фича, которую надо вписать в существующий код.

Запрос
В handlers/weather.py добавь кеш ответов погоды на 10 минут,
чтобы не дёргать API на каждый запрос. Храни в памяти, словарём
по названию города. Новых зависимостей не добавляй.

Здесь уже есть все четыре части запроса, просто сжатые в три строки. Этого хватает в большинстве случаев.

Уровень 3. Мини-ТЗ

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

Запрос
Задача: перевести хранение подписок из JSON-файла в SQLite.

Контекст: сейчас подписки лежат в data/subs.json, читаются
функцией load_subs() в storage.py. Вызовов load_subs и save_subs
в проекте пять штук, все в handlers/.

Что нужно:
- таблица subscriptions: user_id, city, created_at
- те же функции load_subs/save_subs, сигнатуры не меняем,
  чтобы хендлеры трогать не пришлось
- миграция: при первом запуске переносим данные из JSON,
  файл переименовываем в subs.json.bak

Ограничения:
- только стандартный sqlite3, без ORM
- хендлеры не меняем вообще

Готово, когда: бот запускается на пустой базе, подписки из старого
JSON видны после перезапуска, а все пять вызовов работают как раньше.

Длинно — и это окупается. Такую задачу с одной строки переделывают по три раза.

Как сказать ИИ

Правило выбора: смотри не на размер задачи, а на то, что будет, если выйдет не то.

Цена ошибкиУровеньПризнак задачи
Секунды, видно глазомстрокапереименование, форматирование, один вызов
Минуты, легко откатитьабзацновая функция, правка в одном файле
Полчаса и большемини-ТЗнесколько файлов, структура данных, миграции

Два вопроса, которые решают сомнения:

  1. Смогу ли я проверить результат, не вчитываясь в код? Если нет — нужен уровень выше, и в первую очередь критерий готовности.
  2. Легко ли откатить? Один коммит — откатывается легко. Миграция базы — нет.

На что смотреть

Мини-ТЗ на мелкую правку вредит. Чем больше текста, тем больше ИИ «помогает»: переписывает соседние функции, добавляет обработку случаев, о которых не просили. Короткая задача — короткий запрос.

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

Уровень растёт по ходу работы. Начал со строки, получил не то — не дописывай к той же реплике, а сформулируй заново уровнем выше. Переписать дешевле, чем латать.

Шпаргалка

  • Уровень выбирается по цене ошибки, а не по размеру задачи.

  • Строка — видно глазом и легко откатить.

  • Абзац — обычная фича, рабочий режим.

  • Мини-ТЗ — несколько файлов, структура данных, миграции.

  • Не можешь проверить результат не читая код — уровнем выше.

  • Получил не то — формулируй заново, а не дописывай.