От скептика до фаната: как я провёл выходные, программируя с ИИ
Как я перестал сомневаться в ИИ-помощниках для кода
До недавнего времени я относился к ИИ-кодингу с осторожностью. Да, ChatGPT может набросать функцию, а Claude — объяснить регулярки. Но всерьёз строить проект с помощью ИИ? Это казалось чем-то из разряда фантазий. Пока я не попробовал сам.
Раньше я использовал ИИ для мелких скриптов и отладки. Получалось удобно, но без особого эффекта. Всё изменилось, когда я увидел, как коллеги реально запускают рабочие проекты, где ИИ выступает не в роли любопытной игрушки, а как полноценный помощник.
Тогда и возник вопрос: а что, если перестать относиться к ИИ как к эксперименту и начать использовать его по-настоящему?
Cosmobot: проект для проверки
Я решил возродить старую идею — Cosmobot. Это единая система чат-ботов, способная работать с несколькими платформами: Telegram, QQ, Discord и другими. Проект подошёл идеально:
- Его можно было завершить за выходные
- Он требовал технологий, с которыми я мало работал (Haskell, effect systems, streaming)
- Архитектура была достаточно серьёзной, чтобы проверить возможности ИИ
Стек был амбициозным:
Effectful — система эффектов, позволяющая явно управлять побочными действиями. Каждый метод заранее объявляет, какие эффекты он может вызвать. Это своего рода «права доступа» для функций.
Streaming — библиотека для работы с непрерывными потоками данных. Полезна, когда нужно объединить и обработать сообщения из разных сервисов.
Первые шаги и неожиданный результат
Я начал с документа AGENTS.md, где описал требования к проекту: унифицированный бот, чистый код, использование эффектов и правильное проектирование домена.
Затем просто начал просить ИИ писать код.
Результат меня поразил.
Моменты, которые удивили
Интеграция QQ с первого раза
Добавить поддержку QQ — не самая простая задача. OneBot API не имеет широкой документации на английском. Я рассчитывал на несколько итераций. Но ИИ выдал полностью рабочий код, совместимый с остальной архитектурой, на первом же запросе.
Переход на TOML без лишних сложностей
Изначально мы использовали dotenv. Когда я решил смени