An open API service indexing awesome lists of open source software.

https://github.com/alanpcf/cocada-core

Toda IA opina. A Cocada julga. — Multi-family judge for your diffs: Claude, Codex and Gemini review independently and cross-examine each other; you only decide where they disagree.
https://github.com/alanpcf/cocada-core

ai cli code-review developer-tools llm rust

Last synced: 3 days ago
JSON representation

Toda IA opina. A Cocada julga. — Multi-family judge for your diffs: Claude, Codex and Gemini review independently and cross-examine each other; you only decide where they disagree.

Awesome Lists containing this project

README

          

# Cocada

[![Crates.io](https://img.shields.io/crates/v/cocada.svg)](https://crates.io/crates/cocada)
[![CI](https://github.com/alanpcf/cocada-core/actions/workflows/ci.yml/badge.svg)](https://github.com/alanpcf/cocada-core/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)

> **C**ross-examination **O**f **C**ode by **A**dversarial **D**iverse **A**gents

Toda IA opina. A Cocada julga.

Qualquer IA revisa o seu codigo e devolve uma lista de achados em tom
confiante — uns reais, varios ruido plausivel. O trabalho de descobrir em
qual achado confiar sobra pra voce. O `cocada judge` resolve essa parte:
familias de modelo diferentes (Claude, Codex/GPT, Antigravity/Gemini) revisam
o MESMO diff de forma independente, cruzam os achados em cross-exame, e sobra
um veredito classificado — **voce so decide onde elas discordam**.

| Ferramenta | Pergunta que responde | Como |
|---|---|---|
| teste (`cargo test`, `pytest`...) | "o comportamento que eu previ continua valendo?" | roda o codigo |
| revisor IA (1 familia) | "o que PODE estar errado?" | le o diff e opina, com falsos positivos |
| `cocada judge` | "em quais achados da pra CONFIAR?" | familias diferentes se cross-examinam |

Tese, mecanica e roadmap: [`docs/JUDGE.md`](docs/JUDGE.md). Medicao com bugs
plantados: [`eval/`](eval/).

## Quick start

```bash
cargo install cocada # via crates.io

# ou a partir do fonte:
git clone https://github.com/alanpcf/cocada-core
cd cocada-core
cargo install --path . --force

cd /qualquer/projeto/com/git
cocada judge . # julga o diff local (working tree vs HEAD)
```

Pre-requisito por maquina: os CLIs oficiais das familias no PATH e logados
nos planos que voce ja paga — bastam 2 entre `claude`, `codex` e `agy`.
Confira com `cocada doctor`.

## O comando central: `judge`

```bash
cocada judge . # diff local
cocada judge . --staged # so o que esta em staging
cocada judge . --range main..HEAD # diff da branch
cocada judge . --with c,x,g # escolhe as familias (default: c,x)
cocada judge . --dry-run # plano + prompts exatos, sem chamar modelo
cocada judge . --json # relatorio machine-readable no stdout
cocada judge . --gate # exit 2 se sobrar achado HIGH (uso em CI)
```

Como funciona, em duas ondas de LLM (ambas paralelas):

```text
1. revisao INDEPENDENTE cada familia revisa o diff sem ver as outras
2. convergencia (local) mesmo problema achado por 2+ familias de forma
independente -> confirmado sem gastar chamada
3. CROSS-EXAME (batched) cada familia tenta REFUTAR os achados solo das
outras, todos numa unica chamada por familia
4. veredito confirmado | refutado | EM DISPUTA (sua pauta)
```

Custo maximo: 2 chamadas por familia, independente do numero de achados.
Read-only de fato em Claude e Codex; o agy so tem sandbox (permite escrita
no workspace) e o judge avisa quando ele entra no time.

O veredito sai no terminal (disputas primeiro) e fica salvo em
`~/.agent-harness/projects//judge/-report.{md,json}`.

### Acoplavel a qualquer projeto

O judge julga `git diff` — qualquer linguagem, qualquer repo. Tres acoples
prontos (receitas completas em [`docs/JUDGE.md`](docs/JUDGE.md)):

```bash
cocada judge ~/outro/projeto # binario global
cocada judge . --range origin/main..HEAD --gate # hook pre-push
cocada judge . --gate --json > judge.json # CI/ferramentas
```

### O judge ja julgou a si mesmo

Nos dois primeiros runs reais, o proprio diff que criou o judge foi julgado:
5 achados reais confirmados em cross-exame (incluindo uma promessa falsa de
read-only e um bug de convergencia dependente de ordem) — todos viraram fixes
com teste. Historia completa em [`docs/JUDGE.md`](docs/JUDGE.md); medicao
sistematica em [`eval/`](eval/).

## Por baixo do judge

O judge chama os CLIs oficiais (`claude`, `codex`, `agy`) com os logins
locais. Por padrao tudo usa `--auth subscription`: as variaveis de API
(`OPENAI_API_KEY`, `ANTHROPIC_API_KEY`, credenciais Google etc.) sao removidas
do ambiente dos subprocessos para nao cair em billing por API sem querer.
`--auth inherit` herda o ambiente de proposito.

Suporte ao judge:

```bash
cocada doctor # CLIs no PATH, versoes, env de API
cocada models # modelos/perfis reais por familia
cocada config show
cocada config set codex --model gpt-5.5 --effort xhigh
cocada config set claude --model opus --effort max
cocada config unset codex
```

Defaults ficam em `~/.config/cocada/config.json`. Precedencia: flag explicita
(`--with c:opus`) > default salvo do provider > default do proprio CLI.

## Logs

Cada execucao real grava em
`~/.agent-harness/runs/-/-/`:
`prompt.txt`, `command.txt`, `status.json` (atualizado ao vivo), `stdout.txt`,
`stderr.txt`, `result.json` e `summary.md`. Dry-run nao cria logs nem chama
modelo.

## Por que Rust

Binario rapido de iniciar, distribuicao sem runtime, controle fino de
subprocessos (streaming, timeout, kill de process group, env limpo) e
tipagem forte para providers e modos de acesso.

## Politica de idioma

Comandos, subcomandos, flags e aliases em ingles — CLI previsivel e
documentavel. Prompts e documentacao em portugues; versao EN dos docs e parte
do plano de abertura do repositorio.

## Estado atual

- `cocada judge`: julgamento multi-familia de diffs, acoplavel a qualquer
repo git — ver `docs/JUDGE.md`;
- eval com bugs plantados em `eval/` (corpus + runner + scorer + resultados);
- ~5 mil linhas de Rust focadas: o legado da era harness/sala foi removido
(vive no historico do git e nos documentos historicos);
- zero warnings de clippy (gate de CI com -D warnings) e 69 testes, incluindo
E2E que dirigem o binario real contra providers stub;
- licenca MIT em `LICENSE`.