O agente de programação com IA de código aberto.
English | 简体中文 | 繁體中文 | 한국어 | Deutsch | Español | Français | Italiano | Dansk | 日本語 | Polski | Русский | Bosanski | العربية | Norsk | Português (Brasil) | ไทย | Türkçe | Українська | বাংলা | Ελληνικά | Tiếng Việt
O OpenCode pode escolher um modelo para cada passo em vez de manter o mesmo modelo a sessão inteira: um modelo local ou barato faz o trabalho rotineiro e o modelo mais forte fica reservado para as partes que realmente precisam dele. O roteamento fica desligado até você ativar routing.enabled.
Escolha Auto (Routing) no seletor de modelos para rotear uma sessão automaticamente. Ao escolher um modelo específico, a sessão fica fixada nele e o roteamento não a altera.
| Nível | Padrão | Cuida de |
|---|---|---|
| Local | o modelo na sua configuração qwen |
implementação, testes, refatorações e os passos de build e de shell que os verificam |
| Routine | o modelo DeepSeek Flash ativo mais barato | planejamento, análise, revisão, explicações e depuração comum |
| Pro | o modelo DeepSeek ativo mais forte | arquitetura e grandes refatorações, depuração difícil, trabalho sensível a segurança |
- A sua solicitação mais recente define a classificação base e cada passo do turno é reclassificado a partir do que o turno já fez: passos que apenas leem e pesquisam ficam no nível Routine. Assim que um passo altera arquivos ou executa um comando, o restante do turno continua executando no nível Local. Dois passos consecutivos com chamadas de ferramentas malsucedidas são tratados como depuração difícil e vão para o nível Pro. Com
routing.step_routing: false, o turno mantém um único nível. - Um nível só é usado quando o modelo está ativado e saudável, e quando a conversa ainda cabe na sua janela de contexto.
- Depois de
routing.attemptsfalhas, o trabalho sobe para o próximo nível e o modelo que falha é ignorado por um breve período de espera. Interromper uma execução nunca conta como falha do modelo. routing.preferenceequilibra custo e qualidade:cost-first,balanced(padrão) ouquality-first. Cada troca de modelo mostra uma nota com o modelo, o nível e o motivo (routing.diagnostics).
O app configura um espaço de trabalho de projeto inteiro para você: gera os artefatos, verifica-os, abre o projeto e inicia a primeira tarefa em uma sessão. Abra Novo espaço de trabalho do projeto na tela inicial de projetos (o ícone de grade no cabeçalho) ou pela paleta de comandos. O assistente pede a descrição do projeto e o diretório de destino, um idioma de saída, a seleção de modelo (roteamento automático com três modelos ou um modelo fixo com preferência cost-first, balanced, quality-first), opcionalmente um modelo local (URL base, ID do modelo, ID do provedor, chave de API opcional, tempo limite e tokens máximos de saída) com um teste de conexão, e se a compactação antecipada consciente de custo deve ser ativada. Em seguida ele percorre etapas visíveis e deixa aberta a sessão da tarefa inicial; uma etapa com falha pode ser retomada e uma execução cancelada mantém os arquivos já criados.
Nada confidencial é gravado em disco: a chave de API local opcional vai para o armazenamento de credenciais e apenas o nome da sua variável de ambiente pode aparecer no opencode.json do projeto, que aplica as mesmas decisões de roteamento e compactação ao trabalho posterior naquele projeto.
Sessões longas são resumidas em um ponto de verificação durável para que a conversa continue cabendo na janela do modelo. Dois gatilhos independentes compartilham esse mecanismo.
A compactação pelo limite de contexto está ativada por padrão (compaction.auto): é executada quando a solicitação estimada ultrapassa o teto do modelo, mantém literalmente os compaction.keep.tokens mais recentes (15.000 por padrão) e resume o resto.
A compactação antecipada consciente de custo é opcional (compaction.early.enabled) e age antes de o limite estar à vista: só é executada quando todo o contexto soma pelo menos min_tokens (24.000) e a parte removível vale pelo menos min_benefit_tokens (8.000) tokens, no máximo uma vez a cada cooldown_seconds (300) por sessão. require_task_boundary faz com que ela espere uma pausa natural; o padrão é true, mas um turno de chamadas de ferramentas nunca chega a essa pausa, então false é o que faz os turnos agênticos longos serem compactados. local_summarize envia o resumo ao modelo local configurado e registra o uso e o custo desse modelo.
{
"compaction": {
"auto": true,
"keep": { "tokens": 15000 },
"early": { "enabled": true, "min_tokens": 24000, "min_benefit_tokens": 8000, "cooldown_seconds": 300, "require_task_boundary": false, "local_summarize": false },
},
}Uma execução de compactação precisa de espaço de saída para o próprio resumo; um modelo local com um limit.output pequeno pode falhar com Compaction summary reached the output token limit. Nesse caso, aumente esse limite ou deixe local_summarize desativado.
# YOLO
curl -fsSL https://opencode.ai/v2/install | bash
# Gerenciadores de pacotes
npm i -g @opencode/cli@latest # ou bun/pnpm/yarn
brew install anomalyco/tap/opencode-v2 # macOS e Linux (recomendado, sempre atualizado)
brew install opencode # macOS e Linux (fórmula oficial do brew, atualiza menos)
sudo pacman -S opencode # Arch Linux (Stable)
paru -S opencode-beta # Arch Linux (Latest from AUR)
mise use -g opencode # qualquer sistema
nix run github:anomalyco/opencode # NixTip
Remova versões anteriores a 0.1.x antes de instalar.
O OpenCode também está disponível como aplicativo desktop. Baixe em opencode.ai/download.
| Plataforma | Download |
|---|---|
| macOS (Apple Silicon) | opencode-desktop-mac-arm64.dmg |
| macOS (Intel) | opencode-desktop-mac-x64.dmg |
| Windows | opencode-desktop-win-x64.exe |
| Linux | .deb, .rpm ou AppImage |
# macOS (Homebrew)
brew install --cask opencode-desktopO script de instalação respeita a seguinte ordem de prioridade para o caminho de instalação:
$OPENCODE_INSTALL_DIR- Diretório de instalação personalizado$XDG_BIN_DIR- Caminho compatível com a especificação XDG Base Directory$HOME/bin- Diretório binário padrão do usuário (se existir ou puder ser criado)$HOME/.opencode/bin- Fallback padrão
# Exemplos
OPENCODE_INSTALL_DIR=/usr/local/bin curl -fsSL https://opencode.ai/v2/install | bash
XDG_BIN_DIR=$HOME/.local/bin curl -fsSL https://opencode.ai/v2/install | bashO OpenCode inclui dois agents integrados, que você pode alternar com a tecla Tab.
- build - Padrão, agent com acesso total para trabalho de desenvolvimento
- plan - Agent somente leitura para análise e exploração de código
- Nega edições de arquivos por padrão
- Pede permissão antes de executar comandos bash
- Ideal para explorar codebases desconhecidas ou planejar mudanças
Também há um subagent general para buscas complexas e tarefas em várias etapas.
Ele é usado internamente e pode ser invocado com @general nas mensagens.
Saiba mais sobre agents.
Para mais informações sobre como configurar o OpenCode, veja nossa documentação.
Se você tem interesse em contribuir com o OpenCode, leia os contributing docs antes de enviar um pull request.
Se você estiver trabalhando em um projeto relacionado ao OpenCode e estiver usando "opencode" como parte do nome (por exemplo, "opencode-dashboard" ou "opencode-mobile"), adicione uma nota no README para deixar claro que não foi construído pela equipe do OpenCode e não é afiliado a nós de nenhuma forma.

{ "$schema": "https://opencode.ai/config.json", // Qualquer servidor compatível com OpenAI: llama.cpp, Ollama, vLLM, LM Studio, ... "providers": { "local": { "package": "aisdk:@ai-sdk/openai-compatible", "settings": { "baseURL": "http://127.0.0.1:8080/v1" }, "models": { "qwen3-coder": { "limit": { "context": 131072, "output": 8192 } } }, }, }, "qwen": { "base_url": "http://127.0.0.1:8080/v1", "model": "qwen3-coder", "provider": "local" }, "routing": { "enabled": true, "preference": "balanced", // Opcional. Os papéis não definidos vêm do catálogo. "roles": { "local": "local/qwen3-coder", "routine": "deepseek/deepseek-chat", "pro": "deepseek/deepseek-reasoner" }, "step_routing": true, }, }