Saiba como o Skyscanner turbinou o Codex CLI da OpenAI ao integrá-lo às IDEs da JetBrains, dando ao seu assistente de IA as mesmas ferramentas de depuração e testes que os desenvolvedores humanos usam.
No Skyscanner, estamos sempre buscando formas de acelerar o desenvolvimento sem comprometer a qualidade. Nos últimos meses, venho experimentando o Codex da OpenAI como parceiro de programação no meu fluxo de trabalho diário.
O diferencial? Conectei o Codex CLI às IDEs da JetBrains usando o servidor Model Context Protocol (MCP) da empresa, permitindo, na prática, que a IA veja e use os recursos da IDE. Essa integração tem feito toda a diferença. Neste post, vou compartilhar como dar ao Codex acesso às ferramentas da JetBrains melhorou sua capacidade de resolver problemas e acelerou nosso desenvolvimento.
Dando ao Codex o contexto de uma IDE
Trabalhar com o Codex usando o servidor MCP da JetBrains permite que a IA aproveite o amplo contexto do meu ambiente de desenvolvimento, incluindo informações que normalmente não conseguiria “ver”.
Com o MCP da JetBrains, o Codex pode pedir mais contexto à IDE, por exemplo:
- Encontrar problemas em arquivos: analisar um arquivo em busca de erros e avisos usando as inspeções do IntelliJ e retornar os problemas exatos (com mensagens de erro e suas localizações).
- Executar configurações de execução: executar configurações de execução predefinidas (como testes unitários, linters ou formatadores) e obter os códigos de saída e a saída gerada.
Isso tem se mostrado extremamente poderoso: ao aproveitar os mesmos ciclos de feedback que os desenvolvedores humanos usam para escrever, compilar e testar código, o Codex consegue usar o contexto da IDE para conferir e validar o que produz com mais eficácia, reduzindo o tempo de iteração.
Identificando erros mais rápido: um exemplo real
Enquanto escrevia testes unitários para o tratamento de erros no nosso código que usa o SDK Java da Databricks, pedi ao Codex que me ajudasse a simular um cenário de exceção. Ele gerou com confiança uma linha de código Java mais ou menos assim:
var stubError = new NotFound("dummy error");
À primeira vista, isso parece razoável: queremos simular um erro NotFound. Mas, instantes depois, o IntelliJ destacou essa linha com um grande sublinhado vermelho.
O problema: a classe de exceção NotFound do SDK da Databricks não tem um construtor que aceite um único argumento do tipo string (você pode conferir isso no código-fonte do SDK da Databricks: NotFound.java). Em outras palavras, o código sugerido pelo Codex jamais compilaria.
Por padrão, o Codex não saberia desse erro. Talvez só percebesse que algo estava errado mais tarde, ao tentar executar os testes. Porém, graças à integração com o MCP da JetBrains, o Codex percebeu o erro imediatamente. Nos bastidores, o Codex chamou a ferramenta get_file_problems da IDE para inspecionar o arquivo, e ela retornou na hora o problema de compilação (nenhum construtor compatível).
Sem o MCP, o fluxo provavelmente teria sido:
- Gerar código
- Descobrir como executar os testes unitários
- Executar os testes unitários (possivelmente precisando pedir aprovação ao usuário para executar comandos)
- Ler e interpretar a mensagem de falha
- Tentar corrigir o erro
Com o MCP da JetBrains, esse ciclo fica muito mais curto:
- Gerar código
- Consultar a IDE da JetBrains sobre problemas no arquivo
- Corrigir exatamente o erro informado pelo IntelliJ
Isso economizou tempo e contexto, e a sensação foi muito parecida com programar em dupla com um engenheiro que diz na hora: “Ah, essa classe não tem um construtor assim. Na verdade, ela exige algo diferente. Deixa eu corrigir isso rapidinho”.
Testes e formatação predefinidos
Outra vantagem que tenho aproveitado é deixar o Codex operar nossas ferramentas de compilação e testes diretamente pela IDE. Para a maioria dos nossos projetos, já defini configurações de execução locais na minha IDE, como execução de testes, formatação e linting. Com o MCP da JetBrains, o Codex consegue descobrir e executar essas configurações sob demanda.
Na prática, isso reduz o tempo e o contexto necessários para o Codex descobrir como executar essas operações, ajudando-o a manter o foco no problema original. Com essa mudança, observei que o Codex já não se atrapalha ao executar testes, formatação ou linting.
Por isso, nas minhas instruções personalizadas para o agente, oriento o Codex a executar testes, linting e formatação após cada alteração.
## Code edit instructions
After you've finished editing
- Use the jetbrains mcp (if available) to find any problems
- Run format command if available
- Run lint command if available
Percebi que agora o Codex costuma resolver problemas por conta própria, sem que eu precise intervir. Como desenvolvedor, considero isso um enorme ganho:
- Não preciso executar testes, linting e formatação manualmente toda vez que o Codex altera algo.
- Não preciso copiar e colar mensagens de erro no chat.
- O Codex recebe feedback rápido e preciso sobre o funcionamento real de suas alterações, reduzindo o número de ciclos de feedback.
Isso me dá mais tempo para focar na tarefa em questão: entregar software de alta qualidade que funcione.
O que isso muda na nossa forma de desenvolver
Integrar o Codex ao MCP da JetBrains tornou nosso assistente de IA muito mais capaz e confiável no nosso processo de desenvolvimento. Alguns dos benefícios práticos que observamos são:
- Ciclos de feedback mais rápidos: o Codex recebe feedback imediato da IDE sobre erros de compilação e testes que falham.
- Menos trocas de prompts: o Codex nem sempre precisa esperar que eu execute algo e cole uma mensagem de erro, pois pode consultar a IDE diretamente.
- Sugestões de maior qualidade: como o Codex consegue ver o que a IDE vê, há mais chance de suas correções compilarem e passarem nos testes logo na primeira tentativa.
- Melhor alinhamento com os fluxos de trabalho existentes: o Codex se integra às ferramentas que já usamos, em vez de inventar as próprias.
No geral, isso transformou o Codex de uma ferramenta independente em uma parte mais integrada do nosso ecossistema de desenvolvimento.
Resumo
Para nós do Skyscanner, o principal aprendizado foi simples: contexto é tudo. O Codex por si só é poderoso, mas, com acesso ao contexto da IDE, ele é muito mais eficaz. Esse contexto amplia ainda mais a compreensão do Codex, permitindo que ele produza correções precisas mais rapidamente e aumentando ainda mais minha confiança no que ele gera.
Esperamos que nossa história inspire outras pessoas a experimentar essas integrações. A sensação é realmente muito menos a de usar uma ferramenta e muito mais a de colaborar com um parceiro de programação de IA que consegue ver o que vemos.