Transformez Cursor en Devin en une heure et apprenez la différence !

Cet article fait partie d'une série sur la compréhension et le déploiement de l'IA intelligente :

 

Dans un article précédent, nous avons parlé de Devin, une IA corporelle intelligente capable de programmer de manière entièrement automatisée. Comme pour Cursor et Planche à voile Par rapport à d'autres outils d'IA pour corps intelligents tels que Devin, il présente des atouts majeurs en matière de planification des processus, d'auto-évolution, d'utilisation étendue des outils et d'opérations entièrement automatisées. Devin apparaît ainsi comme un outil de nouvelle génération, ce qui le différencie des outils d'IA pour corps intelligents existants.

Cependant, après l'avoir utilisé pendant un certain temps, ma "mentalité de constructeur" s'est ravivée et j'ai été amené à modifier Windsurf et Cursor pour implémenter les fonctionnalités de Devin 90%. Cet article se concentre sur les détails de ces modifications, et cet exemple démontre à quel point la construction et la mise à l'échelle peuvent être efficaces à l'ère de l'IA intelligente. Pour simplifier notre discussion, nous utiliserons Cursor pour faire référence à ces outils, et enfin, nous discuterons des modifications mineures à apporter si vous souhaitez utiliser Windsurf.

artefactplanification du processusauto-évolutionExtension de l'outilMise en œuvre automatiséeprix
DevinOui (automatique, complet)Oui (autoformation)assezadjuvant$500/mois
Curseur (avant modification)contraintesbouchéUne panoplie d'outils limitéeConfirmation manuelle$20/mois
Curseur (modifié)Près de Devin.êtreProche de Devin, évolutifConfirmation ou solution de contournement encore nécessaire$20/mois
Planche à voile (modifié)Près de Devin.Oui, mais indirectementProche de Devin, évolutifPrise en charge de l'automatisation complète dans les conteneurs Docker$15/mois

 

Planification des processus et auto-évolution

Comme mentionné dans l'article précédent, un aspect intéressant de Devin est qu'il se comporte davantage comme un stagiaire organisé. Il sait qu'il faut d'abord créer un plan, puis continuer à mettre à jour la progression du plan au fur et à mesure de son exécution. Il est ainsi plus facile pour nous, gestionnaires d'IA, de suivre la progression de l'IA tout en l'empêchant de s'écarter du plan initial, ce qui permet d'approfondir la réflexion et d'améliorer la qualité de l'accomplissement des tâches.

Bien que cette fonctionnalité semble impressionnante, elle est en fait très facile à mettre en œuvre à l'aide de Cursor.

Pour le curseur, il existe un fichier dans le répertoire racine du dossier ouvert nommé .cursorrules En d'autres termes, tout ce qui se trouve dans ce fichier fait partie de l'invite envoyée à l'IA d'arrière-plan (par exemple, GPT ou GPT). La particularité de ce fichier est qu'il vous permet de modifier les invites que le curseur envoie au modèle de grand langage d'arrière-plan ; en d'autres termes, tout ce qui se trouve dans ce fichier devient une invite envoyée à l'IA d'arrière-plan (par exemple, GPT ou Claude) fait partie de l'invite. Cela nous donne une grande flexibilité pour la personnalisation.

Par exemple, nous pourrions placer le contenu du plan dans ce fichier afin que chaque fois que nous interagissons avec le curseur, il reçoive la dernière version du plan. Nous pourrions également donner des instructions plus détaillées dans ce fichier, comme lui demander de réfléchir et de planifier au début de la tâche, et de mettre à jour le plan après chaque étape. Puisque le curseur peut utiliser l'agent pour modifier des fichiers, et que le fichier .cursorrules Il s'agit d'un fichier en soi, qui crée une boucle fermée. Il lit automatiquement le contenu du fichier à chaque fois pour connaître les dernières mises à jour et, après réflexion, écrit la progression actualisée et les prochaines étapes dans ce fichier, ce qui garantit que nous recevons toujours les dernières mises à jour.

Une approche similaire peut être utilisée pour obtenir une fonction auto-évolutive. Dans le .cursorrules nous ajoutons quelques invites pour que le curseur réfléchisse à ses erreurs lorsqu'elles sont corrigées par l'utilisateur, et examine s'il existe des expériences réutilisables qui doivent être documentées. Si c'est le cas, il mettra à jour le fichier .cursorrules partie pertinente du document. Il accumule ainsi des connaissances spécifiques au projet.

Un exemple typique est que bon nombre des grands modèles linguistiques actuels ne connaissent pas le modèle GPT-4o en raison des délais de connaissance relativement courts. Si vous leur demandez d'invoquer le modèle GPT-4o, ils supprimeront le "o", pensant qu'il s'agit d'une faute de frappe. Mais si vous les corrigez en leur disant : "Ce modèle existe réellement, mais vous ne le connaissez pas", ils consigneront la leçon apprise dans le fichier .cursorrules et ne pas refaire les mêmes erreurs, ce qui permet d'apprendre et de s'améliorer. Cependant, cela dépend encore de l'efficacité de l'invite - parfois, elle peut manquer des points et ne pas toujours enregistrer des connaissances dont nous pensons que nous devrions être conscients. Dans ce cas, nous pouvons également utiliser le langage naturel pour l'inviter, en lui disant directement de noter le point en question. Cette approche plus directe permet également à l'IA d'acquérir de l'expérience et de se développer.

Par conséquent, en utilisant uniquement le .cursorrules et quelques astuces rapides, nous pouvons ajouter les impressionnantes capacités de planification de processus et d'auto-évolution de Devin aux outils de programmation d'IA existants pour les intelligences.

Si Windsurf est utilisé, il y a une différence : probablement pour des raisons de sécurité, il ne permet pas à l'IA de modifier directement l'image de l'ordinateur. .windsurfrules . Par conséquent, nous devons le diviser en deux parties, en utilisant un autre fichier tel que le fichier scratchpad.md. En .windsurfrules Dans le document, nous avons mentionné qu'avant chaque processus de réflexion, vous devriez consulter le Scratchpad et y mettre à jour le plan. Cette approche indirecte n'est peut-être pas aussi efficace que le fait de l'inscrire directement dans le .cursorrules Cela fonctionne en pratique, car l'IA doit toujours appeler l'agent et réfléchir en fonction du retour d'information, mais cela fonctionne en pratique.

 

Utilisation prolongée de l'outil

L'un des principaux avantages de Devin par rapport à Cursor est sa capacité à utiliser davantage d'outils. Par exemple, il peut appeler le navigateur pour effectuer des recherches, naviguer sur le web et même utiliser son propre cerveau pour analyser le contenu à l'aide de l'intelligence Big Language Model. Bien que Cursor ne prenne pas cela en charge par défaut, la bonne nouvelle est que nous pouvons utiliser la fonction .cursorrules Le contrôle direct de l'invite du curseur et le fait qu'il dispose de capacités d'exécution de commandes créent une autre boucle fermée. Nous pouvons préparer des programmes pré-écrits, tels que des bibliothèques Python ou des outils de ligne de commande, puis les ajouter à l'interface du curseur. .cursorrules dans lequel ils sont introduits afin qu'il puisse apprendre instantanément et comprendre naturellement comment utiliser ces outils pour accomplir ses tâches.

En fait, les outils eux-mêmes peuvent être écrits en une minute ou deux à l'aide de Cursor. Par exemple, pour la fonctionnalité de navigation sur le web, je fournis une implémentation de référence dans le projet open source. Il y a quelques décisions techniques à prendre en compte, comme l'utilisation d'un outil d'automatisation du navigateur tel que playwright au lieu de la bibliothèque de requêtes de Python pour les sites web à forte composante JavaScript. En outre, afin de mieux communiquer avec le grand modèle linguistique et de lui permettre de comprendre et d'explorer plus facilement le contenu suivant, nous ne nous contentons pas d'utiliser une belle soupe pour extraire le contenu textuel d'une page web. Au lieu de cela, nous l'avons converti au format markdown selon certaines règles, préservant ainsi des informations de base plus détaillées, telles que les noms de classe et les hyperliens, afin d'aider le modèle de langage à écrire les robots d'exploration ultérieurs à un niveau plus élémentaire.

De même, pour les outils de recherche, il y a une petite mise en garde : Bing et Google ont tous deux des recherches API qui sont de bien moindre qualité que leurs recherches côté client, en grande partie à cause de l'histoire des différentes équipes qui s'occupent des API et des interfaces web. Cependant, DuckDuckGo n'a pas ce problème, et notre implémentation de référence utilise donc l'API gratuite de DuckDuckGo.

Une analyse approfondie de l'utilisation par Cursor de sa propre matière grise est relativement plus complexe. D'une part, Cursor dispose d'un certain degré de cette capacité - dans ces deux outils, lorsque nous imprimons le contenu d'une page web sur stdout, il devient une partie de l'invite que Cursor envoie au Big Language Model, ce qui lui permet d'analyser intelligemment ce contenu textuel. D'un autre point de vue, Devin a la capacité unique de traiter par lots des quantités relativement importantes de texte à l'aide du Big Language Model, ce que Cursor ne peut pas faire. Pour lui donner cette capacité, nous avons mis en place un outil supplémentaire - très simple, il suffit de prédéfinir notre clé API dans le système, puis de demander à l'outil d'appeler GPT ou Claude ou notre API Big Language Models locale pour permettre à Cursor de traiter le texte par lots à l'aide des Big Language Models. Dans mon implémentation de référence, j'utilise ma propre API Big Language Models locale. vllm mais il est très facile à modifier - il suffit de supprimer la ligne base_url.

Cependant, même avec ces modifications, nous ne sommes toujours pas en mesure de mettre en œuvre deux outils en raison des limitations du curseur :

  1. Devin semble comprendre les images, c'est pourquoi il peut effectuer des interactions et des tests frontaux, mais en raison des limitations du curseur, nous ne pouvons pas transmettre d'images en entrée à l'IA back-end - ce qui nécessiterait des changements dans son implémentation.
  2. Devin n'est mystérieusement pas signalé comme un robot par les algorithmes anti-crawler au cours du processus de collecte des données, mais notre outil de recherche sur le web rencontre souvent des CAPTCHA ou est bloqué. Il est possible de remédier à ce problème et je continue d'étudier la question, mais c'est sans aucun doute l'une des forces uniques de Devin.

Exécution entièrement automatisée

La dernière caractéristique intéressante est l'exécution entièrement automatisée. Comme Devin fonctionne dans un environnement cloud entièrement virtualisé, nous pouvons lui faire exécuter en toute sécurité toutes sortes de commandes sans nous soucier des attaques par modèle de langage ou de l'exécution de commandes dangereuses par erreur. Même si vous supprimez un système entier, il suffit de démarrer un nouveau conteneur pour que tout revienne à la normale. Cependant, l'exécution de Cursor sur un système local est un risque sérieux pour la sécurité. C'est pourquoi, dans le mode agent de Cursor, nous devons confirmer manuellement chaque commande avant de l'exécuter. Cela est acceptable pour des tâches relativement simples, mais maintenant que nous disposons de capacités sophistiquées de planification de processus et d'auto-évolution, et que Cursor peut gérer des tâches complexes à long terme, cette méthode d'interaction semble inadaptée aux capacités de Cursor.

Pour y remédier, je n'ai pas trouvé de solution basée sur Cursor (mise à jour : le 17 décembre 2024, Cursor a également ajouté cette fonctionnalité, appelée Yolo Mode, mais il ne supporte toujours pas le développement dans Docker), mais Windsurf a pris cela en compte, et je pense que dans son design, vous pouvez voir que dès le début, il était... de créer une forme de produit semblable à Devin, l'éditeur de code actuel étant une forme intermédiaire. Plus précisément, Windsurf a la capacité de se connecter directement à un conteneur Docker et de s'y exécuter, ou si nous avons le fichier de configuration, il peut vous aider à démarrer un nouveau conteneur Docker, à faire de l'initialisation et à mapper des dossiers locaux. Ainsi, toutes les commandes qu'il exécute, à l'exception des modifications apportées aux dossiers locaux, sont exécutées dans le conteneur Docker sans impact sur le système hôte, ce qui améliore grandement la sécurité.

En outre, il introduit un mécanisme de liste noire/liste blanche qui refuse automatiquement les commandes figurant sur la liste noire et autorise les commandes figurant sur la liste blanche. Pour les commandes qui ne figurent ni sur la liste ni sur la liste noire, le grand modèle linguistique détermine intelligemment s'il y a un risque pour le système hôte - par exemple, s'il veut supprimer un fichier dans un dossier, il demandera confirmation à l'utilisateur, mais des commandes telles que pip install Ces commandes génériques seront autorisées directement. Notez que cette fonctionnalité ne semble être activée que lors de l'exécution dans des conteneurs Docker. Si nous exécutons les commandes sur le système hôte, l'expérience est toujours similaire à Cursor et nécessite des confirmations fréquentes. De plus, l'exécution automatique des commandes doit être activée dans la configuration.

résumés

Ainsi, nous pouvons constater que si le facteur de forme et les concepts de conception du produit Devin sont effectivement très avancés, l'écart entre celui-ci et les outils d'IA existants pour l'intelligentsia n'est pas aussi important que nous pourrions le penser du point de vue de la barrière technique. En utilisant des outils populaires tels que Cursor et Windsurf, qui coûtent entre 15 et 20 dollars par mois, nous pouvons mettre en œuvre les fonctionnalités de Devin 90% en moins d'une heure et l'utiliser pour effectuer des tâches complexes qui étaient auparavant impossibles. Par exemple, j'ai demandé à Cursor d'analyser les rendements de valeurs technologiques populaires au cours des cinq dernières années pour une analyse approfondie des données et il m'a fourni un rapport très détaillé et complet. En outre, j'ai demandé à Windsurf de saisir les heures de publication des 100 premiers articles de mon blog et de les visualiser sous la forme d'un graphique de contribution GitHub, ce qu'il a fait de manière totalement automatique. Ce type de tâches ne peut pas être réalisé avec Cursor et Windsurf traditionnels - seul Devin peut le faire, mais avec ces simples modifications, nous pouvons obtenir les résultats d'un outil à 500 $ par mois avec un outil à 20 $ par mois. J'ai même fait une expérience plus approfondie : en tant que développeur totalement étranger au développement front-end, j'ai passé une heure et demie à créer un jobboard, à la fois front-end et back-end. Ce type d'efficacité est très proche de Devin, si ce n'est meilleur.

Enfin, tous les fichiers mentionnés dans cet article peuvent être téléchargés à partir de l'adresse suivante Règles relatives au curseur de Devin Téléchargement - Copiez simplement le contenu dans le dossier de votre projet actuel et utilisez-le.

© déclaration de droits d'auteur

Articles connexes

Pas de commentaires

Vous devez être connecté pour participer aux commentaires !
S'inscrire maintenant
aucun
Pas de commentaires...