DEV Community

Tiago Vilas Boas (Montanha)
Tiago Vilas Boas (Montanha)

Posted on Edited on Originally published at dev.to

Cursor, Kiro, ChatGPT: três harness, uma arquitetura

Toda semana alguém me pergunta: "qual IDE com IA você usa? Cursor, Kiro ou ChatGPT?".

A resposta rápida é: o Cursor e o Kiro são apenas a interface de digitação. O ChatGPT é apenas um chat interativo. O que realmente faz a mágica acontecer no dia a dia não é o editor, mas o harness pessoal do desenvolvedor: uma memória central compartilhada, skills portáveis que funcionam em qualquer ferramenta e um modelo mental claro de orquestração.

Se você está pagando \$20 em uma ferramenta aqui, \$60 em outra ali, e cada sessão começa do zero como se a IA tivesse amnésia matinal, este artigo é para você. Vamos descomplicar como unificar essas ferramentas sob uma única arquitetura sem gastar rios de dinheiro em infraestrutura.


Atualização (out/2026): de três para seis harness

O título conta a história original, com três harness: Cursor, Kiro e ChatGPT. O ChatGPT hoje é o Codex, o mesmo harness da OpenAI, agora também com automações e POCs. A arquitetura sobreviveu e o setup cresceu: entraram Claude Code, Antigravity e Grok Bot. Hoje são seis harness, agrupados por contexto, todos lendo do mesmo harness-core (uma fonte da verdade e um adapter por harness) e todos ligados ao Downshift.

Quem tem pressa: o texto original, mais abaixo, explica o porquê da arquitetura; esta seção mostra como ela ficou. Separei por contexto, porque é o contexto que define o papel de cada um:

Trabalho (Cogna)

Harness Papel Modelos Observação
Kiro Pro+ Squads, PRs e incidentes Sonnet 5.5, Opus 5.5 e modelos menores Duas licenças da Cogna: o Pro+ (2.000 créditos no plano) e o Kiro padrão, que uso quando os créditos acabam. Sonnet 5.5 no dia a dia de PRs, Opus 5.5 em incidentes e decisões difíceis, modelos menores em execução simples. Estou avaliando seriamente deixar de usar no futuro.

Projetos, POCs e código

Harness Papel Modelos Onde rende mais
Claude Code (novo) Código profundo, skills, POCs e estudos; criação do Montanha Zero Day. Só projetos pessoais e estudos, nunca o trabalho da Cogna Opus 5.5 e Sonnet 5.5 (conta pessoal, Claude Pro) Opus 5.5 em análise de segurança e investigações profundas, com várias skills; Sonnet 5.5 na implementação
Cursor Edição rápida e protótipos Grok 4.7 e modelos da Anthropic Grok 4.7 na edição rápida; Anthropic quando a tarefa pede mais raciocínio
Codex (antes ChatGPT) Automações, estudos e POCs de modelos 3D GPT 6 ou superior (uso bastante) GPT 6+ em automações e estudos; Astra nos POCs de modelos 3D

Estudos

Harness Papel Modelos Observação
Antigravity (novo) Estudos, documentação e relatórios, em perfil separado Gemini 3.8 Flash Uso para estudos por causa do subsídio do Google para estudantes. Rende em texto longo e rápido.

Pessoal

Harness Papel Modelos Onde rende mais
Grok Bot (novo) 11 agentes pessoais (detalhes abaixo). O de engenharia usa o Cursor Grok Tarefas recorrentes e de baixo risco, sempre com o meu OK final

Por que tantos? Eu poderia ficar com apenas três. Mantenho os outros de propósito: gosto de testar cada harness com seus modelos para entender, na prática, onde cada um rende mais. Isso é observação de uso, não benchmark: não tenho métricas de custo ou qualidade por ferramenta. Medir créditos e tokens por harness é o próximo passo.

Fronteira de dados. O trabalho da Cogna passa só pelo Kiro, nas duas licenças da Cogna, ambas em ZDR (zero data retention). Claude Code (conta pessoal, Claude Pro), Cursor, Codex e Antigravity ficam para projetos pessoais, POCs e estudos. Nada do trabalho passa por eles.

Créditos do Kiro. O Kiro Pro+ tem um limite: 2.000 créditos no plano, subsidiados pela Cogna. Quando acabam, uso a outra licença da Cogna, o Kiro padrão, e o trabalho continua só no Kiro. Por isso o resto do setup não depende dele: o harness-core é compartilhado, e projetos pessoais, POCs e estudos rodam nos outros harness. Estou avaliando seriamente deixar de usar o Kiro Pro+ no futuro.

Todos ligados ao Downshift. Em todos os harness, as tarefas simples descem para o modelo menor e só o que é complexo sobe para o frontier. Por isso a coluna "Modelos" mostra o teto de cada ferramenta, não o que roda em cada chamada. O Downshift decide na minha máquina, com um classificador local (MiniLM), e o OpenRouter entrega o modelo. Jev e Laya, que estudei neste artigo, usei só em POCs locais. Detalhei a escolha de modelo em Model Routing para Software Engineers.

                 harness-core  (fonte única: skills, steerings, sensores)
                      │  adapters (um por harness)
   ┌──────────┬───────┼─────────┬────────────┬───────────┐
 Kiro      Claude Code Cursor   Codex     Antigravity    Grok Bot
   └──────────┴───────┴────┬────┴────────────┴───────────┘
                            │
        MCP compartilhado: logseq-kb (memória), dev-to, sentry, grafana, atlassian
                            │
        Roteamento de modelos: Downshift + OpenRouter
          trivial/simples → modelo barato
          complexo (auth, pagamento, arquitetura) → frontier + revisão humana
Enter fullscreen mode Exit fullscreen mode

Princípios que se mantiveram: cada harness tem um papel; código e dados do trabalho só passam pelo Kiro, em ZDR, e o que é sensível fica na máquina; guias (steerings e skills) antes, sensores (hooks, testes e agente de revisão) depois; memória no Logseq como barramento compartilhado.

O que aprendi com a mudança

  1. Crédito de plano é restrição de arquitetura. Com 2.000 créditos no plano, o Kiro Pro+ tem teto. Um core compartilhado evita que o setup dependa de uma ferramenta só.
  2. O contexto de dados define o harness, não o modelo. Trabalho no Kiro, tudo o mais fora dele. Essa regra decide mais do que qualquer comparação entre modelos.
  3. Mais harness só ajuda se der para comparar. Hoje a comparação é observação de uso. Sem medição, é opinião informada.

Grok Bot: 11 agentes pessoais com papéis separados

São 11, em três camadas: quem coordena não executa, e quem executa tem escopo fechado.

Coordenação (não escreve código)
├── Chefe de gabinete  prioriza, decide e entrega resumos
├── Mesa               canal Staff: Eng, Vitrine, Cibersec, Inbox, Carreira
└── Apps               canal de produto: donos de app

Execução
├── Eng        PRs pequenos, cloud agents, Cursor e Codex, OSS, Dependabot
├── Vitrine    perfil e pins no GitHub, DEV.to, READMEs (nota mínima 8,5)
├── Cibersec   AppSec e parte técnica da LGPD; OK de risco antes do merge
├── Inbox      Gmail, Calendar, Outlook e WhatsApp em lote; não envia sem OK
└── Carreira   filtra oportunidades profissionais e prepara rascunhos; sem envio em massa

Donos de app
├── Quinto     fechamento mensal, ledger, sync online, lista de compras
├── LotRace    PWA de tabuleiro com boardgame.io, 2 a 6 jogadores
└── IronToy    caça miniaturas diecast com bom custo-benefício
Enter fullscreen mode Exit fullscreen mode

Duas regras valem para todos: nenhum agente envia mensagem ou dispara candidatura sem o meu OK, e o que toca segurança passa pelo Cibersec antes do merge.

O restante do artigo abaixo é o texto original, mantido como estava. Onde ele fala de ChatGPT, leia como o Codex, que é o mesmo harness.


O Problema das "Ilhas Isoladas"

Imagine a seguinte situação: às 10h da manhã você gasta 20 minutos explicando as regras de negócio de um microsserviço no Kiro para resolver um bug de produção. Às 14h, você abre o Cursor para construir uma tela ou um script em outro projeto e precisa digitar todo o contexto de arquitetura e regras novamente. Às 20h, no chat pessoal, você tenta tirar uma dúvida e vê código confidencial da empresa misturado no histórico.

Esse caos acontece porque tratamos ferramentas como ilhas desconectadas:

[ Kiro ]           [ Cursor ]         [ ChatGPT ]
   │                    │                  │
(Amnésia diária)    (Amnésia diária)    (Contexto solto)
   │                    │                  │
   ▼                    ▼                  ▼
Explica tudo         Explica tudo       Copia e cola
do zero todo dia    do zero todo dia    sem padrão
Enter fullscreen mode Exit fullscreen mode

O que nós realmente precisamos?

  1. Uma memória centralizada: Um cérebro versionado onde decisões, regras do time e incidentes fiquem salvos.
  2. Skills e regras reaproveitáveis: Uma regra de Clean Code ou AppSec escrita uma única vez deve valer no Cursor, no Kiro e no terminal.
  3. Fronteira limpa entre trabalho e vida pessoal: Sem vazamento acidental de dados sensíveis da empresa.
  4. Roteamento inteligente de esforço: Saber quando usar uma chamada local barata ou acionar um modelo de raciocínio profundo via OpenRouter.

A Arquitetura: Três Ferramentas, Um Único Cérebro

Em vez de deixar cada IA isolada, invertemos a lógica. As ferramentas viram simples clientes que leem da mesma fonte de verdade:

                     ┌───────────────────────────────┐
                     │    Logseq Vault (Markdown)    │
                     │   Hub-First: Regras & Memória │
                     └───────────────┬───────────────┘
                                     │
             ┌───────────────────────┼───────────────────────┐
             │ (Leitura / MCP)       │ (Leitura / MCP)       │ (Consulta isolada)
             ▼                       ▼                       ▼
     ┌───────────────┐       ┌───────────────┐       ┌───────────────┐
     │  Kiro (Trabalho)│     │ Cursor (Projetos)│    │ ChatGPT (Vida)│
     │  Squads / N3  │       │ Open Source   │       │ Mentoria      │
     └───────┬───────┘       └───────┬───────┘       └───────────────┘
             │                       │
             ▼                       ▼
    [~/.kiro/skills/]       [~/.cursor/skills/]
             │                       │
             └───────────┬───────────┘
                         ▼
             [ Repo Central de Skills ]
             (SKILL.md compartilhado)
Enter fullscreen mode Exit fullscreen mode

O ponto de virada: O Cursor e o Kiro consultam o mesmo repositório de markdown local via MCP (logseq-kb). O ChatGPT fica isolado para mentorias e estudos pessoais. Se uma regra de negócio muda, eu altero um único arquivo Markdown e todas as IEs passam a respeitá-la instantaneamente.


1. O Cérebro: Memória Hub-First (Sem Overengineering de Embeddings)

Muitos times acreditam que para criar uma memória persistente para IAs é obrigatório subir um banco vetorial com Pinecone, pgvector e pipelines complexos de embeddings.

Para a maioria dos desenvolvedores e squads, isso gera custo alto, latência desnecessária e alucinação silenciosa (o famoso "drift" vetorial).

Adotamos a estratégia Hub-First em arquivos Markdown no Logseq:

vault/
├── ops/
│   ├── _hub.md           <-- Ponto de entrada: links para squads e runbooks
│   └── incidentes/       <-- Histórico de post-mortems e decisões
├── carreira/
│   ├── _hub.md           <-- Metas técnicas e projetos
└── meta/
    └── rag-contract.md   <-- Como o agente deve pesquisar no vault
Enter fullscreen mode Exit fullscreen mode

Como a IA navega pelo Hub?

Quando o agente precisa investigar um problema, ele não faz uma busca cega por palavras soltas. Ele segue o contrato:

  1. Abre primeiro o arquivo _hub.md daquele domínio.
  2. Lê os links canônicos indicados no índice.
  3. Se e somente se não encontrar a resposta direta, faz um grep cirúrgico nos arquivos relacionados.

Isso custa zero reais de infraestrutura, é 100% versionado com Git e permite saber com exatidão cirúrgica por que o agente tomou determinada decisão.


2. Skills e Steerings: Regras que Funcionam em Qualquer Editor

Um dos maiores erros ao adotar IA no desenvolvimento é digitar no prompt: "Por favor, seja sênior, siga Clean Code e não adicione dependências desnecessárias".

No dia seguinte, você esquece de digitar isso e o agente comete os mesmos deslizes.

A solução é o padrão aberto de Agent Skills (pastas com SKILL.md padronizado). Cursor e Kiro sabem ler essas pastas:

  • Cursor lê de: ~/.cursor/skills/
  • Kiro lê de: ~/.kiro/skills/

Basta criar links simbólicos (symlinks) apontando para o seu repositório central de governança (harness-core). Você refina o arquivo uma única vez e todas as ferramentas herdam a melhoria:

# Apontando ambas as ferramentas para a mesma fonte canônica de skills
ln -s ~/Github/harness-core/skills/clean-code-review ~/.cursor/skills/clean-code-review
ln -s ~/Github/harness-core/skills/clean-code-review ~/.kiro/skills/clean-code-review
Enter fullscreen mode Exit fullscreen mode

Qual a diferença entre Skill e Steering (Rules)?

Conceito Como é ativado? Quando usar? Analogia
Skill (SKILL.md) O modelo ativa sob demanda ao ler a descrição (ou quando você digita /nome) Tarefas amplas e especializadas (ex: auditoria AppSec, revisão de incidente) Uma ferramenta especializada na caixa de ferramentas
Steering / Rules Sempre ativo ou disparado automaticamente por extensão de arquivo (fileMatch) Regras inegociáveis de formatação, lint e convenções de pastas A placa de trânsito que obriga a parar no cruzamento

3. Orquestração e Bots Especializados

Em vez de manter um único chat gigante tentando fazer tudo (e falhando miseravelmente por poluição de contexto), separamos os papéis:

Orquestrador Geral
   │
   ├── Especialista em Código (PRs enxutos, TDD, CI verde)
   ├── Especialista em AppSec (Análise de vulnerabilidades e OWASP)
   ├── Especialista em Incidentes (Correlação de logs no Grafana e Sentry)
   └── Especialista em Escrita (Artigos técnicos e documentação)
Enter fullscreen mode Exit fullscreen mode

Por que manter poucos subagentes simultâneos?

Subagentes custam caro em consumo de tokens e latência de rede. Manter 6 ou 8 agentes conversando entre si em paralelo consome contexto em minutos.

A regra de ouro é: no máximo 2 a 3 agentes ativos. Se uma tarefa requer conhecimento especializado de banco de dados ou infraestrutura, não crie um agente novo: crie uma Skill sob demanda. A skill é apenas texto injetado no momento exato, sem o overhead de orquestração.

Para tarefas locais de classificação rápida, como avaliar a complexidade de um prompt antes de mandá-lo para a nuvem, você pode usar um classificador local em Go como o Downshift (harness-downshift), decidindo na sua máquina se a requisição merece um modelo pesado ou uma chamada rápida via OpenRouter.


4. MCP: As Mãos e os Olhos da IA nos Seus Sistemas

Sem o Model Context Protocol (MCP), você é o garçom da IA: abre o Jira, copia a descrição do bug, cola no chat; abre o Sentry, copia o stacktrace, cola no chat; roda o comando no terminal e cola o resultado.

Com MCPs configurados no Cursor e no Kiro, o agente ganha conectores nativos:

[ Desenvolvedor ] ──> "Investiga o incidente VSUS-410"
                             │
                             ▼
                    ┌─────────────────┐
                    │  Kiro / Cursor  │
                    └────────┬────────┘
                             │
            ┌────────────────┼────────────────┐
            ▼                ▼                ▼
     [ MCP Jira ]    [ MCP Sentry ]    [ MCP Grafana ]
     (Lê descrição)  (Pega stacktrace) (Analisa logs P95)
            │                │                │
            └────────────────┼────────────────┘
                             │
                             ▼
            [ Salva hipótese no Vault Logseq ]
Enter fullscreen mode Exit fullscreen mode

Em vez de trocar 15 vezes de aba no navegador, a IA reúne as evidências e redige o diagnóstico técnico enquanto você foca no julgamento crítico da solução.


5. Como Isso Funciona em um Dia Típico de Engenharia

Para entender como a engrenagem roda na prática:

  • 08h30 - Triagem de PRs: O Kiro consulta os repositórios via MCP. O steering de convenções do time formata as sugestões de review cirurgicamente, respeitando os padrões de arquitetura adotados pela squad.
  • 10h15 - Incidente em Produção: Aciono a skill /incident-analysis. O modelo pesquisa os logs de erro no Sentry e Grafana via MCP, checa as regras de concorrência e gera a documentação do post-mortem direto no vault.
  • 14h00 - Escrita Técnica e Open Source: Abro o Cursor para evoluir um utilitário ou artigo. A skill editorial valida a clareza do texto e os exemplos de código.
  • 19h30 - Estudos e Mentoria: Uso o ChatGPT isoladamente. Meus dados profissionais e credenciais corporativas nunca tocam essa sessão pessoal.

O Que Não Funcionou (Para Você Não Perder Tempo)

  1. Bancos vetoriais pesados para uso pessoal: O custo de manutenção e a dificuldade de auditar por que um chunk de texto foi recuperado não compensaram o ganho em relação a um vault Markdown bem estruturado.
  2. Proliferação descontrolada de agentes: Criar um agente para cada microsserviço gerou lentidão extrema. Agentes devem ser enxutos; a especialização deve viver nas skills.
  3. Usar a mesma sessão para trabalho e vida pessoal: Contextos longos confundem as instruções do sistema e aumentam o risco de segurança. Isole as instâncias.

Referências Didáticas e Vídeos Recomendados

Para aprofundar nos conceitos de arquitetura de contexto, ferramentas e MCP:


Checklist Prático para Começar Hoje

Você não precisa mudar todo o seu setup de uma vez. Comece pelo essencial nesta semana:

- [ ] 1. Crie uma pasta `~/vault/` com arquivos Markdown simples (`_hub.md`) para registrar decisões e notas.
- [ ] 2. Configure 1 MCP útil na sua IDE favorita (ex: conector Git ou conector de arquivos locais).
- [ ] 3. Crie sua primeira pasta de skill padronizada (`SKILL.md`) com as regras de Clean Code do seu time.
- [ ] 4. Isole o chat corporativo do pessoal para manter seus dados seguros.
Enter fullscreen mode Exit fullscreen mode

A pergunta que define sua produtividade não é "qual IDE você assina", mas sim: as suas ferramentas de IA conversam entre si através de uma arquitetura central de regras e memória?

Se elas ainda não conversam, você está pagando caro por ilhas isoladas.

Top comments (0)