Skip to main content
O OpenCode é um agente de IA no terminal que lê o contexto do seu repositório e executa tarefas de desenvolvimento de ponta a ponta — escreve, edita, testa e refatora código com base em instruções em linguagem natural. Na IplanRio, o OpenCode é configurado via Bifrost, nosso proxy centralizado de IA. Você não gerencia credenciais de cloud: basta sua Virtual Key.

Como Solicitar Acesso

  1. Acesse o canal #peça-permissão no Discord da IplanRio
  2. Envie sua solicitação:
🤖 Solicitação de Acesso - OpenCode

Nome: [Seu nome completo]
Email: [seu.email@prefeitura.rio]
Área/Projeto: [Ex: Escritório de Dados, SMS, etc.]
Justificativa: [Para que você pretende usar]
  1. Aguarde aprovação da equipe de IA
  2. Receba por email sua Virtual Key e os comandos de instalação

Limites de Uso

O acesso ao Bifrost é compartilhado e possui limites diários de tokens por Virtual Key. Ao atingir o limite, as requisições retornam erro até a renovação automática no dia seguinte. Se precisar de mais cota antes da renovação, solicite no canal #peça-permissão do Discord da IplanRio informando sua necessidade.
Use modelos mais leves para tarefas simples — isso preserva cota para quando você precisar de mais capacidade.

Instalação Automática

curl -fsSL https://storage.googleapis.com/iplanrio-opencode/install.sh | bash -s -- [sua-virtual-key]
O script detecta seu sistema, instala o OpenCode e cria ~/.config/opencode/config.json com o Bifrost configurado.
A Virtual Key é pessoal e intransferível. Re-executar o script atualiza providers e modelos preservando todas as outras configurações existentes.

Atualizar a configuração

Re-execute o script a qualquer momento para aplicar novos providers ou modelos. A Virtual Key existente é reutilizada automaticamente — não é obrigatório passá-la novamente. Mesmo assim, passe-a explicitamente para evitar ambiguidades:
# Sem a chave — usa a chave já configurada
curl -fsSL https://storage.googleapis.com/iplanrio-opencode/install.sh | bash

# Recomendado: passe a chave explicitamente
curl -fsSL https://storage.googleapis.com/iplanrio-opencode/install.sh | bash -s -- [sua-virtual-key]

Configuração Manual

Para quem prefere configurar manualmente, usa o OpenCode Desktop, ou quer adicionar o Bifrost a uma instalação existente.

Instalar o OpenCode

brew install anomalyco/tap/opencode

Arquivo de configuração

Crie ou edite o arquivo abaixo com sua Virtual Key:
{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-haiku-4-5",
  "provider": {
    "anthropic": {
      "name": "Bifrost IplanRio (Anthropic)",
      "options": {
        "apiKey": "[sua-virtual-key]",
        "baseURL": "https://bifrost.iplan.dados.rio/anthropic/v1"
      },
      "models": {
        "claude-haiku-4-5": {
          "limit": {
            "context": 200000,
            "output": 64000
          }
        }
      }
    }
  }
}

Verificar

opencode --version
Abra o OpenCode e confirme com /status:
> /status
API Provider: Anthropic (Bifrost IplanRio)
Model: claude-haiku-4-5

Como Usar

Início rápido

Execute opencode dentro do diretório do projeto. O agente lê o repositório e fica pronto para instruções:
cd meu-projeto
opencode
Digite qualquer instrução em linguagem natural. O agente lê os arquivos relevantes, propõe e executa edições, roda comandos de build e lint para verificar e itera até concluir.

Comandos internos

Dentro do OpenCode, use / para acessar funções do sistema:
ComandoO que faz
/statusExibe provider, modelo e uso da sessão
/clearLimpa o histórico da conversa atual
/compactComprime o histórico para economizar contexto
/helpLista todos os comandos disponíveis
/exitEncerra o OpenCode

Modo não-interativo

Ideal para automações e integração com outros comandos:
# Instrução pontual
opencode -p "Explique o que a função calculate_tax faz e seus edge cases"

# Passando arquivo via stdin
opencode -p "Revise este código e aponte problemas" < src/handler.go

# Encadeando com git
git diff HEAD~1 | opencode -p "Resuma as mudanças deste diff em português"

Permissões

Para projetos onde você quer que o agente trabalhe com mais autonomia, sem confirmar cada passo, adicione ao config.json:
{
  "permission": {
    "bash": "allow",
    "edit": "allow",
    "write": "allow",
    "read": "allow"
  }
}
Use permissões abertas apenas em repositórios onde você tem controle total. Em repositórios compartilhados, prefira o modo padrão com confirmação a cada ação.

Modelos Disponíveis e Otimização de Custo

O Bifrost IplanRio dá acesso a múltiplos modelos. Escolha o modelo adequado à tarefa para preservar sua cota diária.
ModeloQuando usar
anthropic/claude-haiku-4-5Padrão — tarefas do dia a dia, explicar código, commits, perguntas rápidas
anthropic/claude-sonnet-4-6Features complexas, revisões profundas, refatorações grandes
bifrost-google/gemini-3.5-flashAlternativa rápida e econômica para tarefas de baixa complexidade
bifrost-google/gemini-3.1-pro-previewRaciocínio avançado, análise de arquiteturas complexas
bifrost-google/kimi-k2-thinkingProblemas que exigem raciocínio profundo passo a passo
bifrost-google/glm-5Alternativa de baixo custo para tarefas gerais

Trocar o modelo na sessão

Dentro do OpenCode, use o seletor de modelo para escolher sem editar o arquivo de configuração.

Definir um modelo padrão diferente

Edite o campo model em ~/.config/opencode/config.json (Linux/macOS) ou %APPDATA%\opencode\config.json (Windows):
{
  "model": "anthropic/claude-sonnet-4-6"
}
O padrão claude-haiku-4-5 cobre bem a maioria das tarefas. Mude para claude-sonnet-4-6 quando precisar de raciocínio mais profundo — desenvolvimento de features complexas, revisões de arquitetura ou refatorações grandes.

Contexto de projeto com AGENTS.md

Crie um AGENTS.md na raiz do repositório para dar contexto permanente ao agente — o OpenCode lê este arquivo automaticamente em toda sessão.

Estrutura recomendada

# [Nome do Projeto]

## Stack
- [Linguagem e versão]
- [Framework principal]
- [Banco de dados / infra]

## Comandos importantes
- `just build` — compila
- `just test` — roda testes
- `just lint` — verifica qualidade

## Estrutura do projeto
[Breve descrição das pastas principais]

## Convenções
[Padrões de código, nomenclatura, commits]

## O que NÃO fazer
[Antipadrões, arquivos que não devem ser alterados]

Exemplos por tipo de repositório IplanRio

# API [Nome]

## Stack
- Go 1.24 + Gin
- PostgreSQL via Cloud SQL (driver pgx)
- Autenticação via JWT (Keycloak)
- Deploy em GKE

## Comandos
- `just build` — compila o binário
- `just test` — roda testes com cobertura
- `just lint` — golangci-lint
- `just run` — inicia localmente com .env

## Estrutura
- `cmd/` — entrypoints (main.go)
- `internal/handlers/` — handlers HTTP
- `internal/service/` — lógica de negócio
- `internal/repository/` — acesso ao banco

## Convenções
- Handlers retornam apenas HTTP; lógica fica em service/
- Erros sempre propagados com contexto: `fmt.Errorf("...: %w", err)`
- Testes ao lado dos arquivos (`_test.go`)
- Commits em Conventional Commits (feat/fix/chore)

Fluxo de trabalho típico

Desenvolvimento de feature

git checkout -b feat/nova-feature
opencode
# Descreva o que quer construir:
> Implemente o endpoint POST /api/vagas com campos [título, descrição, secretaria],
  validação no padrão dos handlers existentes e persistência no banco.
  Escreva os testes de integração junto.

# O agente lê os handlers existentes, cria o novo, escreve os testes e roda just test

Code review antes do PR

git diff main | opencode -p "
Revise este diff como code reviewer experiente em Go.
Aponte bugs, problemas de segurança, desvios das convenções e melhorias de performance.
Seja direto e específico com número de linha.
"

Depuração de erro

opencode -p "
Estou recebendo este erro em produção:
[cole o stack trace aqui]

Analise o código em internal/service/payment.go e identifique a causa raiz.
"

Escrita de commits

git diff --staged | opencode -p "
Escreva uma mensagem de commit em Conventional Commits para este diff.
Seja específico sobre o que mudou e por quê.
"

Exemplos no contexto IplanRio

# Revisar modelo dbt antes do PR
opencode -p "Revise models/fct_servidores.sql: nomenclatura, testes ausentes e otimizações"

# Criar handler Go seguindo padrão do projeto
opencode -p "Crie GET /api/cidadao/:cpf seguindo o padrão de internal/handlers/servidor.go"

# Otimizar query BigQuery lenta
opencode -p "Esta query demora 45s. Reescreva usando particionamento e clustering adequados"

# Documentar endpoints
opencode -p "Gere a spec OpenAPI 3.0 para todos os endpoints em internal/handlers/"

# Migração de dados
opencode -p "Escreva script Python que migra ergon.servidores para o formato RMI com validação e relatório de erros"

Recursos


Troubleshooting

opencode: command not found após instalação no Linux O binário foi instalado em ~/.local/bin. Adicione ao PATH:
export PATH="$HOME/.local/bin:$PATH"
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc  # ou ~/.zshrc
401 Unauthorized ao usar o OpenCode A Virtual Key expirou ou foi revogada. Solicite uma nova no #peça-permissão. Erro de conexão com o Bifrost O Bifrost (bifrost.iplan.dados.rio) requer HTTPS na porta 443. Verifique sua conexão ou VPN. Modelo errado aparecendo Confirme que "model": "anthropic/claude-haiku-4-5" está no nível raiz do config.json. Reexecute o script de instalação se necessário. Agente editando arquivos que não deveria Remova o bloco "permission" do config.json para voltar ao modo com confirmação a cada ação.