Превратите Курсора в Девина за час и узнайте, в чем разница!

Эта статья является частью цикла статей о понимании и развертывании интеллектуального ИИ:

 

В предыдущем посте мы рассказали о Девине, интеллектуальном теле ИИ, способном полностью автоматизировать программирование. Как и в случае с Cursor и Виндсерфинг По сравнению с другими инструментами искусственного интеллекта, такими как Devin, он имеет ряд преимуществ в планировании процессов, самоэволюции, расширенном использовании инструментов и полностью автоматизированных операциях. Благодаря этому Devin кажется инструментом нового поколения, что отличает его от существующих инструментов искусственного интеллекта.

Однако после некоторого времени работы с ним мой "менталитет строителя" возродился, и я решил модифицировать Windsurf и Cursor, чтобы реализовать функциональность Devin 90%. Я выложил эти модификации в открытый доступ, так что вы можете переделать Cursor или Windsurf под Devin всего за минуту, а эта статья посвящена специфике того, как были сделаны эти модификации, и этот пример демонстрирует, насколько эффективным может быть строительство и масштабирование в эпоху интеллектуального ИИ. Чтобы упростить обсуждение, мы будем использовать Cursor для обозначения подобных инструментов, и, наконец, мы обсудим, какие незначительные изменения нужно сделать, если вы хотите использовать Windsurf.

артефактпланирование процессасаморазвитиеРасширение инструментаАвтоматизированная реализацияцены
ДевинДа (автоматический, полный)Да (самообучение)достаточноадъювант$500/месяц
Курсор (до модификации)ограниченияЗасорениеОграниченный набор инструментовПодтверждение вручную$20/месяц
Курсор (модифицированный)Близко к Девину.бытьБлизко к Девину, масштабируемыйТребуется подтверждение или обходной путь$20/месяц
Виндсерфинг (модифицированный)Близко к Девину.Да, но косвенноБлизко к Девину, масштабируемыйПоддержка полной автоматизации в контейнерах Docker$15/месяц

 

Планирование процессов и саморазвитие

Как уже говорилось в предыдущем посте, интересный аспект Devin заключается в том, что он ведет себя скорее как организованный стажер. Он знает, что сначала нужно создать план, а затем продолжать обновлять его по мере выполнения. Это облегчает нам, менеджерам ИИ, отслеживание текущего прогресса ИИ, не позволяя ему отклоняться от первоначального плана, что приводит к более глубокому осмыслению и качественному выполнению задач.

Хотя эта функция выглядит впечатляюще, на самом деле ее очень легко реализовать с помощью Cursor.

Для Cursor в корне открытой папки находится файл с именем .cursorrules Другими словами, все, что находится в этом файле, становится частью подсказки, отправляемой внутреннему ИИ (например, GPT или GPT). Особенностью этого файла является то, что он позволяет изменять подсказки, которые курсор отправляет на внутреннюю большую языковую модель; другими словами, все, что находится в этом файле, становится подсказкой, которая отправляется на внутренний ИИ (например, GPT или Клод) является частью подсказки. Это дает нам большую гибкость в настройке.

Например, мы можем поместить содержимое плана в этот файл, чтобы каждый раз, когда мы взаимодействуем с курсором, он получал последнюю версию плана. Мы также можем дать более подробные инструкции в этом файле, например, попросить его думать и составлять план в начале выполнения задачи и обновлять план после каждого шага. Поскольку Cursor может использовать агента для изменения файлов, и .cursorrules Это самостоятельный файл, который создает замкнутый цикл. Он автоматически считывает содержимое файла каждый раз, чтобы узнать о последних обновлениях, и после размышления записывает обновленный прогресс и следующие шаги в этот файл, гарантируя, что мы всегда получаем последние обновления.

Аналогичный подход может быть использован для достижения саморазвивающейся функции. В .cursorrules мы добавляем несколько подсказок, чтобы заставить курсор задуматься о своих ошибках, исправленных пользователем, и рассмотреть, есть ли многократно используемый опыт, который необходимо документировать. Если да, то он обновит файл .cursorrules соответствующую часть документа. Таким образом, он накапливает знания о конкретном проекте.

Типичным примером является то, что многие из современных больших языковых моделей не знают о модели GPT-4o из-за относительно ранних сроков освоения. Если вы попросите их вызвать GPT-4o, они удалят "o", решив, что это опечатка. Но если вы поправите их: "Эта модель действительно существует, просто вы о ней не знаете", - они задокументируют полученный урок в .cursorrules и не повторять тех же ошибок, что позволяет учиться и совершенствоваться. Однако это зависит от эффективности подсказки - иногда она может упустить моменты и не всегда фиксировать знания, которые, по нашему мнению, должны быть известны. В этом случае мы также можем использовать естественный язык для подсказок, прямо говоря ему, что нужно записать этот момент. Такой более прямой подход также позволяет ИИ набираться опыта и развиваться.

Поэтому, используя только .cursorrules файл и несколько оперативных трюков, мы можем добавить впечатляющие возможности Девина по планированию процессов и самоэволюции к существующим инструментам программирования ИИ для интеллектов.

Если используется Windsurf, есть одно отличие: вероятно, из соображений безопасности, он не позволяет ИИ напрямую изменять .windsurfrules файл. Поэтому нам нужно разделить его на две части, используя другой файл, например scratchpad.md. В .windsurfrules В документе мы упоминали, что перед каждым мыслительным процессом нужно заглядывать в Scratchpad и обновлять план там. Этот косвенный подход может быть не так хорош, как прямое занесение в .cursorrules На практике это работает, потому что все равно требуется, чтобы ИИ звонил агенту и думал, основываясь на обратной связи, но на практике это работает.

 

Расширенное использование инструмента

Одно из главных преимуществ Devin перед Cursor - возможность использовать больше инструментов. Например, он может вызывать браузер для поиска, просмотра веб-страниц и даже использовать свой собственный мозг для анализа контента с помощью интеллектуальной модели Big Language Model. Хотя Cursor не поддерживает это по умолчанию, хорошая новость заключается в том, что, поскольку мы можем использовать .cursorrules Прямой контроль над подсказкой курсора и возможность выполнения команд создают еще один замкнутый цикл. Мы можем подготовить заранее написанные программы, например библиотеки Python или инструменты командной строки, а затем добавить их в .cursorrules в котором они представлены, чтобы он мог мгновенно и естественно научиться использовать эти инструменты для выполнения своих задач.

Фактически, сами инструменты можно написать за минуту или две, используя Cursor. Например, для функции просмотра веб-страниц я предоставляю эталонную реализацию в проекте с открытым исходным кодом. Есть некоторые технические решения, о которых следует знать, например, использование инструмента автоматизации браузера, такого как playwright, вместо библиотеки запросов Python для сайтов с большим количеством JavaScript. Кроме того, чтобы лучше взаимодействовать с большой языковой моделью и облегчить ей понимание и наполнение последующего контента, мы не просто использовали красивый суп для извлечения текстового содержимого веб-страницы. Вместо этого мы преобразовали его в формат markdown в соответствии с определенными правилами, сохранив таким образом более подробную базовую информацию, такую как имена классов и гиперссылки, чтобы поддержать Большую языковую модель в написании последующих краулеров на более базовом уровне.

В случае с поисковыми инструментами есть небольшая оговорка: и Bing, и Google имеют API-поисковики, которые значительно уступают по качеству клиентским поисковикам, что во многом объясняется историей работы разных команд над API и веб-интерфейсами. Однако у DuckDuckGo такой проблемы нет, поэтому в нашей эталонной реализации используется бесплатный API DuckDuckGo.

Глубокий анализ использования Cursor собственных мозговых усилий относительно более сложен. С одной стороны, Cursor в некоторой степени обладает подобными возможностями - в обоих инструментах, когда мы печатаем содержимое веб-страницы в stdout, оно становится частью запроса, который Cursor отправляет в Большую языковую модель, позволяя ей интеллектуально анализировать это текстовое содержимое. Однако с другой точки зрения Devin обладает уникальной способностью пакетной обработки относительно больших объемов текста с помощью Большой языковой модели, чего не может сделать Cursor. Поэтому, чтобы дать ему такую возможность, мы реализовали дополнительный инструмент - очень простой, просто задайте в системе ключ API, а затем попросите инструмент вызвать GPT, Claude или наш локальный API Big Language Models, чтобы позволить Cursor пакетно обрабатывать текст с помощью Big Language Models. В моей эталонной реализации я использую свой собственный локальный vllm кластера, но его очень легко модифицировать - просто удалите строку base_url.

Однако даже с этими изменениями мы все равно не можем реализовать два инструмента из-за ограничений Cursor:

  1. Devin, похоже, понимает изображения, поэтому он может выполнять внешние взаимодействия и тесты, но из-за ограничений Cursor мы не можем передавать изображения в качестве входных данных внутреннему ИИ - это потребовало бы изменений в его реализации.
  2. Загадочным образом Devin не получает отметки о ботах от алгоритмов антикраулеров в процессе сбора данных, но наш инструмент для поиска информации в Интернете часто сталкивается с CAPTCHA или блокируется. Возможно, это можно исправить, и я все еще изучаю этот вопрос, но это определенно одно из уникальных преимуществ Devin.

Полностью автоматизированное выполнение

Последняя интересная функция - полностью автоматизированное выполнение. Поскольку Devin работает в полностью виртуализированной облачной среде, мы можем спокойно выполнять любые команды, не опасаясь атак на большие языковые модели или выполнения опасных команд по ошибке. Даже если вы удалите всю систему, просто запустите новый контейнер, и все снова будет в порядке. Однако Cursor, запущенный на localhost, представляет собой серьезный риск для безопасности. Поэтому в режиме агента Cursor нам нужно вручную подтверждать каждую команду перед ее выполнением. Это приемлемо для относительно простых задач, но теперь, когда у нас есть сложные возможности планирования процессов и саморазвития, Cursor может решать и долгосрочные сложные задачи, поэтому такой способ взаимодействия кажется неподходящим для возможностей Cursor.

Для решения этой проблемы я не нашел решения на основе Cursor (обновление: 17 декабря 2024 года в Cursor добавили и эту функцию, назвав ее Yolo Mode, но она по-прежнему не поддерживает разработку в Docker), но в Windsurf это учли, и я думаю, что по его дизайну можно понять, что с самого начала он был целью было создать продукт, похожий на Devin, а текущий редактор кода был промежуточной формой. Более конкретно, Windsurf имеет возможность напрямую подключаться к контейнеру Docker и запускаться в нем, или, если у нас есть конфигурационный файл, он может помочь вам запустить новый контейнер Docker, провести инициализацию и перенести локальные папки. Таким образом, все команды, которые он выполняет, за исключением изменений в локальных папках, выполняются в контейнере Docker без влияния на хост-систему, что значительно повышает безопасность.

Кроме того, в ней реализован механизм черных/белых списков, который автоматически запрещает команды из черного списка и разрешает команды из белого списка. Для команд, которые не входят ни в список, ни в черный список, большая языковая модель интеллектуально определяет, есть ли риск для хост-системы - например, если она хочет удалить файл в папке, то запросит у пользователя подтверждение, но такие команды, как pip install Такие общие команды будут разрешены напрямую. Обратите внимание, что эта функция, похоже, включена только при работе в контейнерах Docker. Если мы запускаем команды на хост-системе, опыт по-прежнему похож на Cursor и требует частых подтверждений. Кроме того, автоматическое выполнение команд должно быть включено в конфигурации.

резюме

Таким образом, мы видим, что, хотя форм-фактор и дизайн Devin действительно очень продвинут, разрыв между ним и существующими инструментами искусственного интеллекта для интеллигенции не так велик, как может показаться с точки зрения технических барьеров. Используя такие популярные инструменты, как Cursor и Windsurf, которые стоят $15-$20 в месяц, мы можем реализовать функциональность Devin 90% менее чем за час и использовать его для выполнения сложных задач, которые раньше были невозможны. Например, я поручил Cursor проанализировать доходность популярных технологических акций за последние 5 лет для углубленного анализа данных, и он предоставил очень подробный и исчерпывающий отчет. Кроме того, я попросил Windsurf взять время публикации 100 лучших постов в моем блоге и визуализировать их в виде диаграммы вклада GitHub, что он сделал совершенно автоматически. Эти задачи невозможно решить с помощью традиционного Cursor и Windsurf - они под силу только Девину, но с помощью этих простых модификаций мы можем добиться результатов инструмента за 500 долларов в месяц с помощью инструмента за 20 долларов в месяц. Я даже провел более глубокий эксперимент: будучи разработчиком, совершенно незнакомым с front-end разработкой, я потратил полтора часа на создание доски объявлений, как front-end, так и back-end. Такая эффективность очень близка к Devin, если не лучше.

Наконец, все файлы, упомянутые в этой статье, можно загрузить с сайта Правила курсора Девина Загрузить - просто скопируйте содержимое в папку текущего проекта и используйте его.

© заявление об авторских правах

Похожие статьи

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...