Комментарии 25
Спасибо за разбор, но как в итоге составлять промпты для 'лучшей в мире IDE'?
Уточняйте что речь о вебе, потому что в моем случае писать код с курсором нифига не получается
Какой у вас стек?
Dart/flutter, помогает очень даже хорошо.
Какую LLM используете?
Cursor не настраивал специально, под капотом у него их несколько. А отдельно chatGpt o1, он в логику лучше умеет. Сравнивал их с 4о, на одной и той же задаче, 4о ушёл в мудреные рассуждения, и погиб))
Попробуйте sonnet 3.7 thinking, думаю ваша продуктивность ещё вырастет
На каком стеке используете Claude 3.7? Насколько сильно Claude ускоряет вашу работу (2х, 3х, больше)?
Наконец-то статья не в стиле "Cursor - это волшебная палочка и делает всё за меня" или "Cursor - нерабочее г**** и не работает вообще".
Спасибо за изученные и описанные детали реализации инструмента. Особенно за нюанс с конкатенацией правил (это заставило меня просмотреть свои файлы правил на предмет того, нет ли такой же проблемы у меня).
Как человек, не умеющий писать сложный код с нуля, объединяющий несколько разных библиотек/технологий и даже не способный разобраться в документации к ним - за вечер (2-3 часа) сделал через cursor прототип hex-тайловой 3d карты на стеке pygame как оконный фреймворк, opengl для 3d, +numpy и pygltflib для загрузки 3д моделей. Нраица.
Оно то хорошо, пока не дойдет до багов. Уверены что их не будет, и будете в состоянии хоть что то с этим сделать? Ладно, игры это не так страншно, а когда речь зайдет о чем то более серьезном. Связаным например с финансами. или прости господи, с инженерными расчетами? А такое скоро начнется и повсеместно
Половину времени баги вчера и фиксили.
А вообще для этого есть тесты.
Ну так ни кто не говорит, что он вам все напишет красиво, быстро и функционально одновременно. НО, быстрее и красивее он может, если следить за тем что он делает. А вот функционально все так же приходится самому обдумывать. С той лиш разницей, что всегда можно просить его дать советы, дальше направлять его. И как раз тут, важны правильные промпты.
А как он работает с языками с развитой типизацией? Передает в LLM всю информацию о выведенных типах? Умеет ли что-то типа Types-Driven Development, когда по ожидаемому типу генрируется выражение, с учктом текущего контекста?
Умеет ли он параллельно писать код на C/Ada/Rust и доказательство корректности этого кода на Сoq?
Думается, что на текущем этапе в LLM передаётся только текст исходников, а также инструменты для работы с файлами типа записи/чтения и поиска. Никакого построения дерева исходников, импортов, анализа типов языка для LLM не делается. Никакой переваренной информации, только голый текст. Просто потому что LLM не обучены такой синтетический граф понимать и извлекать из него пользу.
Если нужно использовать типы, вы научите LLM желаемой парадигме программирования промптом, она сходит в нужные исходники, посмотрит сама типы и напишет
Спасибо за статью! Остался непонятым один вопрос, как Cursor/Windsurf продолжают итеративно вызывать и вызывать модель для работы над одной задачей (даже так что впадают в цикл бесконечный иногда). Ведь LLM имеет ограниченное количество выходных токенов. Как Cursor/Windsurf вместе с LLM делят задачу генерации большого количество кода на куски, и как понимают когда нужно остановиться чтобы спросить пользователя?
В приведенных tool я не увидел инструмента "вызови меня ещё разок, я не закончил". Пробовал спрашивать у самой модели, какие tool она для этого вызывает - не признаётся. Или такого механизма автопродолжения всё же нет? Я заметил что некоторые LLM типа клода любят много писать за раз, иногда даже вижу сообщения среды типа "генерация остановлена после 25 вызовов". А gpt 4.1 как будто бы не умеет самовызов, выплюнет страницу кода и встаёт. Очень интересно что там такое запромпчено на эту тему.
Windsurf юзали, чем отличается от Cursor?
Я юзаю три дня, с тех пор как астрологи объявили неделю халявы для gpt 4.1 в них обоих. Выглядят оба Cursor/Windsurf неотличимо. Как будто это одно приложение которое только что форкнули и переименовали. Ну из мелочей заметил что Windsurf плюется на исходники с кодировкой отличной от UTF8, а Cursor нормально переваривает и 1251. Это все замеченные различия...
Главный вывод здесь — убедиться, что в .cursorrules четко разделяются секции
Курсор очень часто обновляется и я так понимаю что этот баг уже не актуален верно?
Как правильно писать код с Cursor? Смотрим, как тот устроен внутри