Segunda Opinião (Codex + Antigravity + Claude)
Dispara a mesma pergunta para os agentes de IA instalados na máquina, coleta as respostas e devolve um comparativo honesto. Cada CLI roda em processo separado e começa com contexto ZERO, então a qualidade da resposta depende inteiramente do briefing que você escrever.
Quando usar
- O usuário pediu a opinião de outro modelo, por nome ou em geral.
- Você está inseguro num diagnóstico técnico e quer confronto de verdade.
- A decisão é cara e vale saber se um modelo diferente enxerga outra coisa.
- O usuário desconfia de uma resposta sua e quer conferir com fonte independente.
Quando NÃO usar
- Pergunta trivial ou de fato único. Responda você.
- Você quer lentes diferentes, não modelos diferentes. Se o que falta é olhar o mesmo problema por vários ângulos, faça isso com subagentes. Esta skill serve para diversidade de treinamento, que é outra coisa.
- Texto que precisa sair na voz do usuário. As regras de voz não vão junto no briefing, e os outros modelos devolvem texto fora do padrão.
Os três agentes
| Agente | Empresa | Comando base | Traço |
|---|---|---|---|
codex |
OpenAI | codex exec |
Forte em código, execução e rastreamento de bug |
agy |
Google (Antigravity) | agy -p |
Contexto longo, bom em leitura de material extenso |
claude |
Anthropic | claude -p |
Mesmo padrão de rigor, mesma casa que você |
Aviso honesto sobre o terceiro: o Claude é o mesmo fornecedor de quem está escrevendo o briefing. Ele não acrescenta diversidade de treinamento, acrescenta um leitor sem o viés de quem escreveu o recorte. Vale como assento, mas se os três concordarem, lembre que dois deles não são independentes de você.
Se o usuário pediu só um, rode só aquele. Não force os três.
Passo 1: monte o briefing autocontido
Este é o passo que decide a qualidade da entrega. Eles não veem esta conversa, não veem os arquivos abertos e não sabem nada do usuário.
Crie a pasta da rodada e escreva o briefing:
<scratchpad>\segunda-opiniao\<slug-da-pergunta>\briefing.md
O briefing precisa conter, nesta ordem:
- A pergunta objetiva, na primeira linha, já no formato de decisão ("Este diagnóstico está certo?", "Qual das duas abordagens?").
- O contexto mínimo necessário: o código relevante colado, o erro completo, os números, as restrições reais.
- O que já foi tentado e o resultado de cada tentativa.
- O formato da resposta: peça veredito na primeira linha e justificativa depois, em no máximo 300 palavras.
Regras do briefing:
- Artefato bruto ganha de paráfrase sua. Cole o stack trace inteiro, o diff
inteiro, a tabela de números inteira. Não resuma "o erro é de encoding": cole o
erro. O briefing é o funil por onde tudo passa, e o que você resumir vira o
teto da rodada. Se o material for grande, grave cada peça como arquivo na pasta
da rodada (
erro.txt,trecho.py) e diga no briefing que estão ali: os três rodam com o cwd nessa pasta e conseguem abrir. - Não conte qual é a sua hipótese antes de perguntar. Se você entregar sua conclusão junto, eles concordam com você e a rodada não vale nada.
- Não diga que a pergunta veio de outra IA. Isso enviesa.
Variante falsificação (mais forte quando você já tem hipótese)
Pergunta aberta convida os três a concordarem com o recorte que você fez. Quando você já tem um diagnóstico e quer testá-lo, inverta: entregue a hipótese como se fosse de terceiro e peça para derrubarem.
A conclusão abaixo foi apresentada como diagnóstico final. Sua tarefa é derrubá-la. Aponte qual evidência a contradiz e qual teste a falsificaria. Se não conseguir derrubar, diga o que precisaria ser verdade para ela estar errada.
Isso vale mais que opinião aberta, porque troca votação por tentativa de achar o furo que você não viu.
Passo 2: dispare os três em paralelo
Faça as três chamadas PowerShell numa única mensagem, para rodarem ao mesmo tempo. Sequencial triplica a espera sem ganho nenhum.
Use $d como a pasta da rodada. Rodar com o cwd dentro dessa pasta isola os
três: se algum resolver escrever arquivo, escreve no descartável.
# Codex (OpenAI)
$d='<pasta-da-rodada>'; Push-Location $d
$OutputEncoding = [System.Text.UTF8Encoding]::new($false)
Get-Content "$d\briefing.md" -Raw | & codex exec --skip-git-repo-check --sandbox read-only -o "$d\r-codex.md" - 2>&1 | Out-Null
Pop-Location; "EXIT=$LASTEXITCODE"; Get-Content "$d\r-codex.md"
# Antigravity (Google)
$d='<pasta-da-rodada>'; Push-Location $d
$p = (Get-Content "$d\briefing.md" -Raw) + "`n`nIMPORTANTE: responda de memoria, em texto puro. Nao execute comandos, nao leia nem escreva arquivos, nao use nenhuma ferramenta."
& agy -p $p 2>&1 | Out-File "$d\r-agy.md" -Encoding utf8
Pop-Location; "EXIT=$LASTEXITCODE"; Get-Content "$d\r-agy.md"
# Claude (Anthropic)
$d='<pasta-da-rodada>'; Push-Location $d
$p = (Get-Content "$d\briefing.md" -Raw) + "`n`nIMPORTANTE: responda de memoria, em texto puro. Nao execute comandos, nao leia nem escreva arquivos, nao use nenhuma ferramenta."
& claude -p $p 2>&1 | Out-File "$d\r-claude.md" -Encoding utf8
Pop-Location; "EXIT=$LASTEXITCODE"; Get-Content "$d\r-claude.md"
Cada flag acima existe por um motivo verificado, não decore como enfeite:
- Bloco anti-ferramenta no Antigravity e no Claude: sem isso o
agydevolveno output produced, a tool required the "command" permission, porque tenta usar ferramenta e o modo headless não tem quem aprove. A instrução em texto resolve sem precisar de--dangerously-skip-permissions, que daria execução livre na máquina. --skip-git-repo-checkno Codex: fora de um repositório git ele recusa rodar.-o <arquivo>no Codex: o stdout dele vem sujo de log de MCP, hooks e contagem de tokens. Leia o arquivo, nunca o stdout.-no fim do comando do Codex: manda ele ler o prompt do stdin. Sem isso ele trava esperando entrada.$OutputEncodingno Codex: trava UTF-8 sem BOM no pipe, para acento não virar lixo.
O agy também aceita --sandbox (restringe o terminal) e --print-timeout
(padrão 5 minutos). Use se o bloco de texto não bastar.
Timeout: use 300000 (5 min) em cada chamada. Resposta longa demora.
Passo 3: entregue o comparativo
Nunca cole as três respostas cruas e mande o usuário ler. O valor da skill está na síntese. Formato:
## Veredito de cada um
| Agente | Veredito | Argumento central |
## Onde os três concordam
[Convergência independente é o sinal mais forte que essa rodada produz.]
## Onde divergem
[A divergência real, com os dois lados. Não suavize.]
## O que eu acho depois de ler
[Sua posição. Se você mudou de ideia, diga o que mudou. Se continua discordando
dos três, diga por quê.]
Convergência dos três não prova nada sobre o mundo, só que o briefing foi persuasivo. Eles leram o mesmo recorte, escrito por você. Se os três concordarem, a primeira pergunta é se você não induziu a resposta no enquadramento. Diga isso ao usuário em vez de vender consenso.
Regra de leitura: resposta de agente não é fonte. Se algum deles afirmar fato verificável (versão de biblioteca, número, comportamento de API), cheque de forma independente antes de repassar como verdade. Três modelos concordando ainda pode ser três modelos errados.
Desconfie em dobro quando ele disser "verifiquei". Caso real: numa crítica de artigo, o Codex afirmou ter consultado a fonte e sentenciou que a página citada "não bate", apontando outra faixa de páginas. Conferindo o PDF que o autor de fato usava, a citação estava certa ao número. O Codex tinha comparado com uma edição diferente da declarada, e não avisou. Se aquele achado tivesse sido repassado, teria feito o autor estragar uma citação correta. Quando um deles contestar uma fonte, abra o arquivo antes de repassar.
Armadilhas verificadas
Todas foram encontradas rodando de verdade, não deduzidas.
| Sintoma | Causa | Correção |
|---|---|---|
Not inside a trusted directory and --skip-git-repo-check was not specified |
Codex fora de repo git | Sempre passar --skip-git-repo-check |
Codex cospe log de MCP, hook: SessionStart, tokens used no meio |
Ruído no stdout | Usar -o <arquivo> e ler o arquivo |
| Codex trava esperando entrada | codex exec lê stdin quando falta prompt |
Passar - como prompt e alimentar por pipe |
no output produced, a tool required the "command" permission |
Antigravity tentou usar ferramenta em modo headless | Anexar o bloco anti-ferramenta ao prompt |
Eligibility check failed: UNAVAILABLE (code 503) |
Serviço do Antigravity fora do ar ou conta sem elegibilidade no momento | Não é a skill. Reportar e seguir com os outros dois |
| Aspas e cifrão do prompt quebram o comando | Escape do PowerShell | Prompt sempre por arquivo, nunca inline |
| Acento sai corrompido no arquivo de resposta | Encoding | Out-File -Encoding utf8 |
| Resposta genérica e inútil | Briefing pobre | Voltar ao Passo 1. É sempre isso. |
Se um dos três falhar, entregue a rodada com os que responderam e diga qual caiu e por quê. Rodada parcial declarada vale mais que rodada travada.
Custo
Cada rodada consome crédito de contas diferentes. Rodada de três em pergunta trivial é desperdício. Se a pergunta não vale três respostas, ela não vale a skill.
Limites conhecidos
- Sem memória entre rodadas. Cada chamada é um contexto novo. Follow-up exige briefing novo com o histórico dentro.
- Escrita concorrente é conflito. Se algum deles editar arquivo do projeto ao mesmo tempo que você, dá conflito. O cwd isolado no scratchpad evita, mas se o usuário pedir para algum deles mexer no código de verdade, faça um por vez.
- Sandbox read-only foi verificado só no Codex. Antigravity e Claude ficam contidos pelo cwd descartável e pelo bloco anti-ferramenta, não por flag de sandbox.