Как разрабатывать большие проекты с кучей зависимостей?
Я сейчас пишу вторую версию своей учебной платформы при помощи OpenAI Codex. Эта версия похожа на ту, на которой расположен мой курс про AI Ассистентов, но в нее хочется добавить больше фич: удобное управление командными пакетами, больше интерактивных задачек и примеров, тесты для самопроверки.
95% кода пока написаны OpenAI Codex. Но есть нюанс.
Сначала я дам контекст и кратко расскажу о проекте, а потом опишу процесс AI+Coding.
О проекте
Архитектуру и стэк проекта я оптимизировал для удобства разработки AI (сам я бы на TS/JS в жизни не стал писать):
- Frontend - Vue.js SPA
- Backend - Express.js, tRPC, SQLite (ибо тесты в контейнере можно запускать)
- Shared - общие для FE/BE типы и контракты на TypeScript/Zod. Ключевая терминология (DDD) кодифицирована там же.
Конкретные библиотеки выбирал при помощи ChatGPT, которому ставил задачи выбирать наиболее стабильные и скучные решения (читай "они точно попали в обучающую выборку OpenAI").
Серверная обвязка - NixOS. Есть интеграции со страйпом, почтой. End-to-end тесты сделаны на playwright. Пришлось повозиться, пока встраивал их в Codex, но теперь он может сам запускать весь стэк, открывать браузер и прогонять тесты перед сочинением Pull Request.
Легковесные очереди. Виртуализация sandboxes будет через FirecrackerVM.
Continuous Integration / Deployment - Github Actions. После того, как я принял Pull Request, GA автоматом выкатит все на DEV stage.
Процесс разработки
Процесс разработки работает аналогично работе команд над большими проектами:
- я ставлю задачу
- AI предлагает решение
- я просматриваю и одобряю
- AI кодит и отправляет в Git
Этот процесс "обрастает” артефактами и правилами, делающими его прозрачным и предсказуемым для людей (меня), и для LLM-ок в команде.
1️⃣ У меня есть архитектурная документация и описание модулей (README, AGENTS, CONTEXT). Это все живет рядом с кодом, я стараюсь поддерживать это в актуальном состоянии.
2️⃣ При постановке задачи я первым делом прошу систему составить детальный план реализации (implementation plan), включая зависимости и тесты. Не писать код, а просто подумать. Если задачка сложная - явно укажу документы, на которые стоит обратить внимание, зависимости.
Кстати, ChatGPT reasonong (не Codex) может тоже работать с Github. Это иногда упрощает работу с планами.
3️⃣ План реализации - это единственный источник правды. Я его проглядываю глазами. При необходимости отправляю его в другую сессию и прошу проверить на логические нестыковки.
Это очень удобно, т.к. все изменения в одном документе, они пока еще не “размазаны” по коду.
4️⃣ Если план реализации проходит мой review, то я его отправляю на исполнение. Потом план можно выкинуть или скопировать в Pull Request на память.
Можно не жалеть AI+Coding агентов и гонять в хвост и в гриву - всегда запускать сразу несколько параллельных задач, чтобы потом выбрать наилучший вариант.
Полет пока нормальный. Это не вайб кодинг, а рутинная работа архитектора/лида. Задачи распараллеливаются, но думать - надо. При этом результат предсказуем, а весь код таки пишет AI.
Ваш, @llm_under_hood 🤗
>>Click here to continue<<