Bolt First Exp
Что можно сказать о bolt.new после 20 часов использования и создания 2 приложений:
- Удалось сделать простой проект отображения данных из ansible inventory файлов в виде таблицы. После первого же запуска он сделал проект, который работал, показывал все, что нужно, и делал это красиво. 2-3 часа ушло на то, чтобы понять, что я хочу, и реализовать. Сам бы я такое делал 1-2 дня.
- Средний проект универсального бота для chatops на базе LLM сделать не удалось, хотя у меня есть развернутое ТЗ, и я знаю, как оно должно быть устроено. Bolt постоянно тянуло сделать веб, хотя это вторично. Он порывался писать на js вместо ts. Каждая итерация занимала много времени и стоила дорого. В итоге надоело его мучать.
- Пока не подходит даже для средних проектов, так как есть очевидные сложности с размером контекста.
- Bolt практически не интегрирован с их собственной online ide stackblitz, вплоть до того, что код может потеряться.
- Интерфейс бесконечного чата, по-моему, не лучшая идея, т.к. длина контекста постоянно растет.
- Иногда приходится бороться с моделью. Например, она постоянно пыталась использовать gpt-4 вместо gpt-4o-mini, хотя я явно это написал. Вообще модель очень своенравная, и ее сложно переубедить.
- Очень заточено именно на генерацию кода. В ответ на вопросы о том, как сделать что-то, он предлагает генерировать код.
- Скорость генерации как у современных моделей. Попросил что-то изменить и идешь что-то делать. 1, 2, 3 минуты сидеть и смотреть на генерацию не очень интересно.
- После каждой модификации приложение пытается запустить приложение, но непонятно с какой именно командой. В итоге в какой-то момент все сломалось, и дальше пришлось запускать сборку руками.
- Видит логи, но часто не определяет в них ошибки. Приходится подсказывать.
- Можно быстро откатить изменения, сделанные агентом. Работает отлично!
- Не генерирует тесты, если не попросить.
- Не хватает подсветки ошибок прямо в коде. Но это опять же к интеграции с IDE.
- Гораздо лучше работает с typescript, чем с javascript. Что логично, т.к. для этого нужно меньше контекста.
- Начинает теряться, если правок много. В какой-то момент статический анализатор нашел сразу 20 ошибок, и на исправление пришлось потратить около 10 генераций.
- Базового платного аккаунта хватает на весь день, если проект небольшой.
Это следующий уровень после copilot и даже zed. Оно ближе всего к тому, как должны быть устроены IDE в будущем - полноценный ассистент, который пишет код по заданию. Но пока с детскими болячками. Хотелось бы что-то более быстрое, более интегрированное в IDE и более интерактивное. И желательно в моей IDE локально, а не в облаке. Вообще удивительно что Jetbrains до сих пор не сделали ничего подобного, а занимаются всякими мелочами.
After 20 hours of using bolt.new and creating two applications, here are my observations:
I successfully created a simple project that displays data from Ansible inventory files in a table format. The initial setup was straightforward, and the project functioned beautifully, meeting all requirements. I spent an additional 2-3 hours refining the result, a task that would have taken me 1-2 days to complete manually.
However, I struggled to develop a universal bot for ChatOps based on LLM, despite having a detailed specification and clear structure. Bolt.new persistently focused on web development, which was secondary, and insisted on using JavaScript instead of TypeScript. Each iteration was time-consuming and costly, leading to frustration and eventual abandonment of the project.
Currently, bolt.new is not suitable for medium-sized projects due to limitations with context size. It lacks proper integration with its own online IDE, StackBlitz, risking code loss.
The infinite chat interface is problematic as it causes the context length to grow excessively. The model often requires persuasion, such as when it defaults to using GPT-4 instead of GPT-4o-mini, despite explicit instructions.
Bolt.new is heavily oriented towards code generation. When asked how to perform a task, it typically suggests generating code. The generation speed is comparable to modern models, meaning you often have to wait several minutes for changes.
After each modification, the application attempts to run, but the command used is unclear, leading to potential breakdowns that require manual rebuilding.
Although it can view logs, it often fails to identify errors without prompting. On the positive side, it allows for quick rollback of changes, which is very effective.
Tests are not generated unless specifically requested, and there is no error highlighting directly in the code, highlighting a need for better IDE integration.
Bolt.new performs better with TypeScript than JavaScript, which makes sense given the reduced context requirement. However, it struggles with numerous edits, as evidenced by a static analyzer finding 20 errors at once, requiring about 10 generations to resolve.
A basic paid account is sufficient for a full day of work on small projects.