Sobre o projeto
## Visão geral
`prod-code` é um servidor remoto de inteligência de código projetado para frotas de agentes de codificação com IA. Ele move a análise de linguagem, builds e testes do laptop do desenvolvedor para um nó da LAN, mantendo a experiência de edição local. O sistema espelha checkouts para um gateway que mantém analisadores aquecidos (rust-analyzer em processo; gopls, clangd, TypeScript, pyright, sourcekit-lsp como filhos) e executa comandos ali. Agentes acessam via ferramentas MCP, e editores podem usá-lo como um language server substituto direto.
## Principais recursos
- **Análise remota**: Language servers rodam num nó da LAN, não no laptop, reduzindo a carga local de CPU e memória.
- **Integração MCP**: Expõe ferramentas para agentes de IA (Claude, Codex, Gemini) via Model Context Protocol.
- **Suporte a editores**: Funciona como language server para editores como Zed, com ponte de protocolo para configurações e eventos de salvamento.
- **Multi-linguagem**: Suporta Rust, Go, C/C++, TypeScript/JavaScript, Python e Swift.
- **Refatoração segura**: Ferramentas para renomeação semântica, mudanças de assinatura, mover, extrair e mais, com validação num segundo analisador.
- **Execução de build/teste**: Comandos rodam no nó com caches aquecidos; resultados e mudanças de arquivos sincronizam de volta.
- **Suporte a cluster**: Múltiplos nós podem fazer gossip e distribuir workspaces com base em carga e suporte de linguagem.
## Ferramentas para agentes
O servidor MCP fornece um conjunto abrangente de ferramentas:
- **Encontrar código**: `code_search`, `code_symbols`, `code_definition`, `code_references`, `code_callers`, `code_callees`, `code_implementations`, `code_supertypes`, `code_outline`, `code_source`.
- **Entender**: `code_slice`, `code_hover`, `code_type_at`, `code_impact`, `code_dead_code`, `code_prune_orphans`.
- **Alterar com segurança**: `code_validate_edit`, `code_diagnostics`, `code_rename`, `code_safe_delete`, `code_change_signature`, `code_move`, `code_extract_function`, `code_introduce_parameter_object`, `code_migrate_type`, `code_generify`, `code_invert_boolean`, `code_make_static`, `code_inline_parameter`, `code_extract_delegate`, `code_extract_trait`, `code_loop_to_iterator`, `code_introduce_variable`, `code_convert_to_method`, `code_wrap_return`, `code_extract_field`, `code_encapsulate_field`, `code_schema_rename`, `code_assists`, `code_codemod`, `code_generate_fixture`, `code_shadow_run`.
- **Executar**: `code_check`, `code_lint`, `code_test`, `code_benchmarks`, `code_exec`, `code_diagnose_failure`.
- **Operar**: `code_status`, `code_sync`.
Todas as ferramentas baseadas em posição também aceitam um argumento `symbol` em vez de arquivo/linha, então agentes não precisam usar grep para números de linha.
## Como funciona
- **Checkouts espelhados**: O primeiro contato envia um manifesto de caminhos, tamanhos e hashes; o gateway semeia um worktree a partir do repositório de origem e sincroniza apenas arquivos ausentes. Sincronizações subsequentes usam marcas d'água e diffs.
- **Um analisador por worktree**: Cada git worktree recebe seu próprio workspace de servidor e banco de dados, evitando contaminação cruzada. Os motores permanecem residentes até ficarem ociosos por 30 minutos.
- **Validação num segundo analisador**: Propostas de edição são verificadas num motor separado para evitar poluir o estado do analisador principal.
- **Builds e testes no nó**: Comandos rodam no diretório `target/` do próprio workspace, mantendo caches aquecidos. Arquivos alterados são gravados de volta no checkout.
- **Gossip de cluster**: Nós fazem gossip a cada 5 segundos; um cliente precisa de um endereço semente. O posicionamento considera posses existentes e carga.
## Instalação
```sh
# Cliente (um binário; o gateway é irmão do mesmo binário)
cargo install --path crates/prod-code-client
# Registrar com Claude
claude mcp add --scope user prod-code -e PROD_CODE_REMOTE=192.0.2.10:9400 -- prod-code mcp
# Registrar com Codex
codex mcp add prod-code --env PROD_CODE_REMOTE=192.0.2.10:9400 -- prod-code mcp
# Num nó
prod-code-server --bind 0.0.0.0:9400 --storage /srv/prod-code/workspaces \
--advertise <this host>:9400 --peers <other nodes>
```
## Uso no editor
`prod-code lsp` atua como o language server de um editor. O servidor da própria linguagem roda no nó, e a ponte carrega o protocolo nos dois sentidos. Para Zed, há uma extensão dedicada em `editors/zed`, ou você pode apontar o rust-analyzer do Zed para `prod-code lsp --language rust`.
## Configuração
Opções por repositório podem ser definidas num `prod-code.toml` na raiz do checkout, por exemplo, flags de feature do Rust, uso de sysroot e seleção de target.
## Métricas e operações
Cada consulta, comando e rodada de sincronização é registrada como um evento (agente, host, workspace, método, duração, sucesso) num arquivo JSONL. `prod-code metrics` agrega pelo cluster com p50 e p95. Um script de deploy para nós macOS cuida de assinatura e configuração do launchd.
## Avaliações de campo
O projeto inclui avaliações contra repositórios open-source proeminentes (ripgrep, tantivy, tokio, polars, uv, bevy, prometheus, kubernetes, etcd, django, black) usando um protocolo padronizado de 67 ferramentas, com relatórios detalhados de blog vinculados.
## Requisitos
A compilação requer Rust 1.95.0 ou mais recente. Instale com rustup:
```sh
rustup toolchain install 1.95.0 --profile minimal -c rustfmt -c clippy
```
## Licença
Licença dupla MIT / Apache-2.0.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.