Este artigo faz parte de uma série sobre Compreensão e implementação de IA inteligente:
- Intelligent Body AI Series 1: Comparação entre Devin e Agent Cursor
- Intelligent Body AI Series 2: From Thinker to Doer - Revolução de paradigma e arquitetura tecnológica para IA de corpo inteligente
- 智能体 AI 系列 3:将 20 美元变成 500 美元 – 一小时内将 Cursor mudar para Devin (Este artigo)
- Intelligent Body AI Series 4: Usando o Cursor como um portal comum para IA
Em uma postagem anterior, falamos sobre o Devin, uma IA de corpo inteligente capaz de programação totalmente automatizada. Assim como o Cursor e o Windsurf Ele tem alguns pontos fortes principais no planejamento de processos, na autoevolução, no uso de ferramentas estendidas e em operações totalmente automatizadas em comparação com outras ferramentas de IA para corpos inteligentes, como o Devin. Isso faz com que o Devin pareça uma ferramenta de última geração, diferenciando-o das ferramentas de IA de corpos inteligentes existentes.
No entanto, depois de usá-lo por algum tempo, minha "mentalidade de construtor" foi reacendida e fui levado a modificar o Windsurf e o Cursor para implementar a funcionalidade do Devin 90%. Também abri o código aberto dessas modificações para que você possa converter o Cursor ou o Windsurf em Devin em apenas um minuto, e este artigo se concentra nos detalhes de como essas modificações foram feitas, e esse exemplo demonstra como a construção e o dimensionamento podem ser eficientes na era da IA inteligente. Para simplificar nossa discussão, usaremos o Cursor para nos referirmos a essas ferramentas e, por fim, discutiremos quais pequenos ajustes precisam ser feitos se você quiser usar o Windsurf.
artefato | planejamento de processos | auto-evolução | Extensão da ferramenta | Implementação automatizada | preços |
---|---|---|---|---|---|
Devin | Sim (automático, completo) | Sim (estudo autônomo) | suficiente | apoiar algo | $500/mês |
Cursor (antes da modificação) | restrições | entupido | Conjunto de ferramentas limitado | Confirmação manual | $20/mês |
Cursor (modificado) | Perto de Devin. | ser | Próximo ao Devin, escalável | Confirmação ou solução alternativa ainda necessária | $20/mês |
Windsurf (modificado) | Perto de Devin. | Sim, mas indiretamente | Próximo ao Devin, escalável | Suporte para automação completa em contêineres do Docker | $15/mês |
Planejamento de processos e autoevolução
Conforme mencionado no post anterior, um aspecto interessante do Devin é que ele se comporta mais como um estagiário organizado. Ele sabe que primeiro deve criar um plano e depois continuar atualizando o progresso do plano à medida que ele é executado. Isso torna mais fácil para nós, como gerentes de IA, acompanhar o progresso atual da IA e, ao mesmo tempo, evitar que ela se desvie do plano original, o que leva a um pensamento mais profundo e à qualidade da conclusão da tarefa.
Embora esse recurso pareça impressionante, na verdade é muito fácil de implementar usando o Cursor.
Para o Cursor, há um arquivo no diretório raiz da pasta aberta chamado .cursorrules
Em outras palavras, tudo nesse arquivo se torna parte do prompt enviado para a IA de back-end (por exemplo, GPT ou GPT). O que há de especial nisso é que ele permite modificar os prompts que o Cursor envia para o modelo de linguagem grande de back-end; em outras palavras, tudo nesse arquivo se torna um prompt que é enviado para a IA de back-end (por exemplo, GPT ou Claude) faz parte do prompt. Isso nos dá muita flexibilidade para personalização.
Por exemplo, podemos colocar o conteúdo do plano nesse arquivo para que, toda vez que interagirmos com o Cursor, ele receba a versão mais recente do plano. Também poderíamos dar instruções mais detalhadas nesse arquivo, como fazer com que ele pense e planeje no início da tarefa e atualize o plano após cada etapa. Como o Cursor pode usar o agente para modificar arquivos, e o .cursorrules
É um arquivo em si, que cria um loop fechado. Ele lê automaticamente o conteúdo do arquivo todas as vezes para descobrir quais são as atualizações mais recentes e, ao refletir, grava o progresso atualizado e as próximas etapas nesse arquivo, garantindo que sempre recebamos as atualizações mais recentes.
Uma abordagem semelhante pode ser usada para obter uma função autoevolutiva. Na .cursorrules
adicionamos alguns prompts para fazer com que o Cursor reflita sobre seus erros quando corrigidos pelo usuário e considere se há alguma lição reutilizável a ser registrada. Em caso afirmativo, ele atualizará o arquivo .cursorrules
parte relevante do documento. Dessa forma, ele acumula conhecimento específico do projeto.
一个典型的例子是,当前的大语言模型由于知识截止日期相对较早,很多都不知道 GPT-4o 模型。如果你要求它们调用 GPT-4o,它们会删除 ‘o’,认为这是一个错别字。但如果你纠正它们:“这个模型实际上存在,你只是不知道它”,它们会将这个经验教训记录在 .cursorrules
的相关部分,并且不会再犯同样的错误,从而实现学习和改进。然而,这仍然取决于 prompt 是否有效 – 有时它可能会遗漏一些要点,并且不一定会记录我们认为应该注意的知识。在这种情况下,我们也可以使用自然语言来提示它,直接告诉它记下这一点。这种更直接的方法也可以实现 AI 的经验积累和成长。
Portanto, ao usar apenas o .cursorrules
e alguns truques de prontidão, podemos adicionar os impressionantes recursos de planejamento de processos e autoevolução do Devin às ferramentas de programação de IA existentes para inteligências.
Se o Windsurf for usado, há uma diferença: provavelmente por motivos de segurança, ele não permite que a IA modifique diretamente o .windsurfrules
arquivo. Portanto, precisamos dividi-lo em duas partes, usando outro arquivo, como o scratchpad.md
. Em .windsurfrules
No documento, mencionamos que, antes de cada processo de pensamento, você deve verificar o Scratchpad e atualizar o plano lá. Essa abordagem indireta pode não ser tão boa quanto colocá-la diretamente no .cursorrules
Isso funciona na prática porque ainda exige que a IA ligue para o agente e pense com base no feedback, mas funciona na prática.
Uso prolongado da ferramenta
Uma das principais vantagens do Devin em relação ao Cursor é sua capacidade de usar mais ferramentas. Por exemplo, ele pode chamar o navegador para pesquisar, navegar na Web e até mesmo usar seu próprio cérebro para analisar o conteúdo usando a inteligência do Big Language Model. Embora o Cursor não ofereça suporte a isso por padrão, a boa notícia é que, como podemos usar o .cursorrules
O controle direto do prompt do Cursor e o fato de ele ter recursos de execução de comandos criam outro loop fechado. Podemos preparar programas pré-escritos, como bibliotecas Python ou ferramentas de linha de comando, e depois adicioná-los ao prompt do .cursorrules
em que são introduzidas, para que ele possa aprender instantaneamente e entender naturalmente como usar essas ferramentas para realizar suas tarefas.
De fato, as próprias ferramentas podem ser escritas em um ou dois minutos usando o Cursor. Por exemplo, para a funcionalidade de navegação na Web, forneço uma implementação de referência no projeto de código aberto. Há algumas decisões técnicas que devem ser levadas em conta, como o uso de uma ferramenta de automação de navegador, como o playwright, em vez da biblioteca de solicitações do Python para sites com muito JavaScript. Além disso, para nos comunicarmos melhor com o modelo de linguagem grande e facilitar a compreensão e o rastreamento do conteúdo subsequente, não usamos simplesmente uma sopa bonita para extrair o conteúdo textual de uma página da Web. Em vez disso, nós o convertemos para o formato markdown de acordo com determinadas regras, preservando, assim, informações básicas mais detalhadas, como nomes de classes e hiperlinks, para dar suporte ao Big Language Model na escrita de rastreadores subsequentes em um nível mais básico.
Da mesma forma, para as ferramentas de pesquisa, há uma pequena ressalva: tanto o Bing quanto o Google têm pesquisas na API que são muito inferiores em qualidade às suas pesquisas no lado do cliente, em grande parte devido ao histórico de diferentes equipes que lidam com APIs e interfaces da Web. Entretanto, o DuckDuckGo não tem esse problema, portanto, nossa implementação de referência usa a API gratuita do DuckDuckGo.
关于 Cursor 使用自己的脑力进行深入分析,这相对更复杂。一方面,Cursor 确实具有一定程度的这种能力 – 在上述两个工具中,当我们向 stdout 打印网页内容时,它会成为 Cursor 发送给 大语言模型 的 prompt 的一部分,使其能够对该文本内容进行智能分析。但从另一个角度来看,Devin 具有一种独特的能力,可以使用 大语言模型 对相对大量的文本进行批量处理,而 Cursor 无法做到这一点。因此,为了赋予它这种能力,我们实现了一个额外的工具 – 非常简单,只是预先在系统中设置我们的 API 密钥,然后让这个工具调用 GPT 或 Claude 或我们本地的 大语言模型 API,从而使 Cursor 能够使用 大语言模型 批量处理文本。在我的参考实现中,我使用我自己的本地 vllm 集群,但修改起来非常简单 – 只需删除 base_url 行即可。
No entanto, mesmo com essas modificações, ainda não conseguimos implementar duas ferramentas devido às limitações do Cursor:
- Devin 似乎具有图像理解能力,这就是为什么它可以执行前端交互和测试,但由于 Cursor 的限制,我们无法将图像作为输入传递给后端 AI – 这需要对其实现进行更改。
- Misteriosamente, o Devin não é sinalizado como um bot por algoritmos anti rastreadores durante o processo de coleta de dados, mas nossa ferramenta de recuperação da Web frequentemente encontra CAPTCHA ou é bloqueada. Isso pode ser corrigido e ainda estou explorando o assunto, mas é definitivamente um dos pontos fortes exclusivos do Devin.
Execução totalmente automatizada
O último recurso interessante é a execução totalmente automatizada. Como o Devin é executado em um ambiente de nuvem totalmente virtualizado, podemos fazer com que ele execute com segurança todos os tipos de comandos sem nos preocuparmos com grandes ataques a modelos de linguagem ou com a execução de comandos perigosos por engano. Mesmo que você exclua um sistema inteiro, basta iniciar um novo contêiner e tudo voltará ao normal. No entanto, a execução do Cursor em um sistema localhost representa um sério risco de segurança. É por isso que, no modo de agente do Cursor, precisamos confirmar manualmente cada comando antes de executá-lo. Isso é aceitável para tarefas relativamente simples, mas agora que temos um planejamento de processo sofisticado e recursos de autoevolução, o Cursor também pode lidar com tarefas complexas de longo prazo, fazendo com que esse método de interação pareça inadequado para os recursos do Cursor.
Para resolver isso, não encontrei uma solução baseada no Cursor (atualização: em 17 de dezembro de 2024, o Cursor também adicionou esse recurso, chamado Yolo Mode, mas ainda não oferece suporte ao desenvolvimento no Docker), mas o Windsurf levou isso em consideração e acho que, pelo seu design, você pode ver que, desde o início, ele o objetivo de criar uma forma de produto semelhante ao Devin, sendo o atual editor de código uma forma intermediária. Mais especificamente, o Windsurf tem a capacidade de se conectar diretamente a um contêiner do Docker e ser executado nele ou, se tivermos o arquivo de configuração, ele pode ajudá-lo a iniciar um novo contêiner do Docker, fazer alguma inicialização e mapear as pastas locais. Assim, todos os comandos que ele executa, exceto as alterações nas pastas locais, são executados no contêiner do Docker sem nenhum impacto no sistema host, o que aumenta muito a segurança.
在此基础上,它还引入了黑名单/白名单机制,自动拒绝黑名单上的命令,允许白名单上的命令。对于既不在列表中也不在黑名单上的命令,大语言模型 会智能地判断是否存在对主机系统的风险 – 例如,如果它想删除文件夹中的文件,它会要求用户确认,但像 pip install
Esses comandos genéricos serão permitidos diretamente. Observe que esse recurso parece estar habilitado somente quando executado em contêineres do Docker. Se executarmos os comandos no sistema host, a experiência ainda será semelhante à do Cursor e exigirá confirmações frequentes. Além disso, a execução automática de comandos precisa ser ativada na configuração.
resumos
因此,我们可以看到,虽然 Devin 的产品形式和设计理念确实非常先进,但从技术壁垒的角度来看,它与现有智能体 AI 工具之间的差距并不像我们想象的那么大。使用每月花费 15-20 美元的流行工具,如 Cursor 和 Windsurf,我们可以在一小时内实现 Devin 90% 的功能,并用它来完成以前不可能完成的复杂任务。例如,我给 Cursor 分配了一个任务,分析过去 5 年热门科技股的回报率,进行深入的数据分析,它提供了一份非常详细而全面的报告。此外,我让 Windsurf 抓取我博客上排名前 100 的文章的发布时间,并以 GitHub 贡献图表的形式将其可视化,它可以完全自动完成。这些类型的任务是传统的 Cursor 和 Windsurf 无法完成的 – 只有 Devin 可以完成它们,但在进行了这些简单的修改之后,我们可以用每月 20 美元的工具实现每月 500 美元工具的效果。我甚至做了一个更深入的实验:作为一个完全不熟悉前端开发的开发者,我花了一个半小时创建了一个招聘网站,包括前端和后端。这种效率非常接近甚至高于 Devin。
Por fim, todos os arquivos mencionados neste artigo podem ser baixados do site Regras do Devin Cursor 下载 – 只需将内容复制到您当前的项目文件夹中即可使用。