Обновить

Telegram-бот за вечер через Spec Kit: что AI-ассистированная разработка сделала с моим инженерным процессом

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели13K
Всего голосов 8: ↑4 и ↓40
Комментарии12

Комментарии 12

Так, что тут у нас: тимлид написал telegram-бота с помощью Claude Code и поспешил поделиться опытом. Ок.

Без Claude для этого нужна была бы команда?

Сами будете пользоваться?

выдаёт готовое решение — хочется принять, не разбираясь. 

да, всё так - когда сроки горят, а сил уже ни на что нет, появляется соблазн переключиться в режим "вайбкодера". Но стоит взять себя в руки и тщательно проверить результат - как минимум удаляешь несколько ненужных проверок, избыточных промежуточных переменных. А то и откатываешь "исправленную" логику, где это самое исправление повлекло бы ошибку.
Именно поэтому считаю, что "вайбкодинг" - это блажь. Нельзя подпускать к продакшн-коду человека, который не умеет программировать.

К статье - к сожалению, не могу разделить восторг автора; разработка с tg bot api это не то, о чем тимлиду уместно с таким придыханием писать.
Помню, в до-ИИшную эру все дождливые майские потратил на то, чтобы наваять свой тг-"клиент", задача была делать перепост из нескольких групп в одну. Разумеется, ничего толкового не вышло, но было интересно)

Каждый день одно и то же - смотрите я научился писать хороший промт под мои задачи и каждый хвалит свой подход хотя их тут уже перечисляли тысячи видов. Ну коммон гайс, каждый божий день тут выходит подобная статья. Если видишь статью про вайб кодинг то там будет обязательно про бота под телеграмм, уже ред флаг, что будет про заезженную тему.

Спасибо за статью:)
К сожалению, автор был краток, и я исследовал и реконструировал (где не всё понял, гг) логику бота.
Бот https://github.com/zahaand/smart-task-bot использует инлайн-клавиатуры (кнопки под сообщениями), поэтому интерфейс выглядит так:

Список задач (/tasks)
📝 Ваши задачи (3):

🔘 Купить молоко ⏰ Напомнить: 15.12 18:00
──────────────
[👁 Просмотр] [✏️ Изменить]

🔘 Подготовить отчёт ⚠️ Просрочено: 14.12 23:59
──────────────
[👁 Просмотр] [✏️ Изменить]

🔘 Позвонить маме ✅ Без дедлайна
──────────────
[👁 Просмотр] [✏️ Изменить]

[➕ Новая задача] [⚙️ Настройки]

Детали задачи (после выбора из списка)

📌 Задача: Подготовить отчёт

📄 Описание: Сделать квартальный отчёт по проекту “Alpha” и отправить руководителю.

🗓 Создана: 10.12.2024 ⏰ Дедлайн: 14.12.2024 23:59 🔔 Напоминание: не установлено

[🔔 Напомнить] [✅ Выполнить]
[🗑 Удалить] [← Назад к списку]

При нажатии «Напомнить» появляется календарь:

📅 Выберите дату напоминания:

< Декабрь 2024 >
Пн Вт Ср Чт Пт Сб Вс
1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18
19 20 21 22 23 24 25 26 27
28 29 30 31
[← Назад] [Отмена]

После выбора даты бот просит ввести время текстом: «Введите время в формате ЧЧ:ММ (например, 18:30)»

Меню настроек
⚙️ Настройки профиля

🌐 Язык: Русский 🌍 Часовой пояс: Europe/Moscow (UTC+3)

[🌐 Сменить язык] [🌍 Сменить часовой пояс]
[❗️ Удалить аккаунт] [← Назад]

С целом, всё довольно-таки просто, но в принципе логично:)

❤️

Привет.

Я конечно пользуюсь нейросетями (а кто сейчас не пользуется?), но доверять им полное написание кода я бы явно не спешил. Конечно, если только тестовый продукт, где минимум качества в угоду скорости - вполне себе вариант...

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

Несколько явных примеров:

Потенциальная OOM

public List getActiveTasks(Long telegramUserId)
{
ZoneId userZone = ZoneId.of(userService.getTimezone(telegramUserId));
//станет задач много и привет OOM
return taskRepository.findByUserTelegramUserIdAndStatus(…) .stream() .map(task -> getTaskDto(task, userZone)) .toList();
}

@Transactional то есть то нет

//нет @Transactional это два отдельных запроса
public TaskDto completeTask(Long telegramUserId, Long taskId) {
Task task = taskRepository.findByIdAndUserTelegramUserId(...) //SELECT task.setStatus(TaskStatus.COMPLETED);
taskRepository.save(task); //UPDATE, а с @Transactional вообще будет не нужен
}

Не стал копировать большое дублирование кода, потенциальные race condition при быстром нажатии кнопок, нарушение Single Responsibility.

А ведь кто-то на вашем коде возможно будет учиться.

Вывод: как реклама ускорения процесса через Claude Code - наверно валидно. Но для реального проекта с потенциалом нагрузки, расширения и реального использования - почти нет.

LLM сейчас пишут код на уровне разработчика, несколько дней читавшего документацию. Частые жалобы что "код выдаётся с ошибками" - умолчание того факта, что современные LLM могут ПЕРЕПРОВЕРЯТЬ код, если попросить их об этом - функции вроде deep think делают возможным прямое нахождение ошибок, а с нормальной отладкой и логами всё упрощается в десятки раз. LLM хорошо пишут тг ботов и сайты - то есть выполняют самые частые производственные задачи. Поэтому не понимаю тех, кто до сих пор делает вид, что LLM это игрушка для тех, кому лень читать документацию. Нет, это то, что изменит требования к IT специалисту, и выкинет с рынка всех кто продолжит смотреть на неё свысока

Тоже этого не понимаю. Сначала дали ллм блокнот и ручку условно, а потом сказали, ну... Пиши код И такие Ой, а чего так плохо? Если дать ей отладчик, статический анализ и прочие инструменты, которыми мы сами обвешаны по полной программе, она внезапно пишет код очень даже хорошо Более того, тут даже ходить далеко не надо, достаточно просто спросить у модели – слушай, что я могу сделать, чтобы тебе было лучше и легче? Всё Она сама скажет чего ей не хватает А если она ошибалась – а кто не ошибается – она честно распишет как она к этому пришла

P. S. И да, команда из нейронок это вообще бомба. Они каждая со своей стороны смотрят, предлагают разные идеи, подсвечивают разное Но да, ключ как всегда в том, что нужно уметь общаться. Не простить, а общаться А с этим частенько проблемы и у людей

P. P. S. Вспомните Calutron Girls (aka Девушки из Ок-Риджа) - которые обогащали уран лучше физиков Почему?

Все правильно сказано. Да только есть у LLM одна основополагающая проблема - прокладка между креслом и клавиатурой, от которой LLM и получает задания и без них к сожалению пока это все не работает.

И сколько не обожествляйте LLM и не рассказывайте как она хорошо МОЖЕТ писать код - это всего лишь веса между персептронами. И если они настроены неверно, какой бы цифрой не заканчивалось название LLM вы дельного результата не получите.

Ни разу не писал тг бота или сайт за 20 лет работы в энтерпрайзе. Это точно самые частые задачи в реальной работе, а не в заработке фрилансера?

Какое получилось отношение размера спецификации к коду?

У меня спека получилась больше кода

Кажется на питоне можно было за 8 часов без всяких клодов и спеков написать. А если с Клодом, но без спеков за 2-3 часа. Вообще, задача небольшая, тут даже plan mode не факт что нужен

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации