🤖 Assistente de IA#

O Codis integra um painel de chat com IA diretamente na sidebar. Suporta múltiplos provedores, streaming de respostas, ferramentas de contexto e skills personalizáveis.


Abrindo o Painel de IA#

  • Activity Bar → ícone [IA]
  • Menu Exibir → "Assistente IA"
  • Ctrl+Shift+A

Provedores Suportados#

Provedor Tipo Requer Chave
Anthropic (Claude) API Anthropic Sim
OpenAI (ChatGPT) API OpenAI Sim
Google Gemini API Gemini Sim
OpenAI Compatible Qualquer /v1/chat/completions Opcional
Ollama HTTP local (localhost:11434) Não
LocalLib llama-cpp-python direto Não

O provedor OpenAI Compatible funciona com: LM Studio, Jan, Groq, Together AI, OpenRouter, Perplexity, e qualquer servidor compatível com a API OpenAI.

Configurando um Provedor#

  1. No painel de IA, clique no ícone de configuração (⚙) ao lado do seletor de provedor.
  2. Insira a chave de API, modelo e URL base (quando aplicável).
  3. Clique em Testar para verificar a conectividade.

As configurações de cada provedor são salvas em config.json.


Contexto de Código#

O assistente pode receber contexto automático do editor ativo. Selecione o tipo de contexto no seletor:

Opção Descrição
Nenhum Sem contexto de código
Arquivo Conteúdo completo do arquivo ativo
Seleção Apenas o texto selecionado no editor
Manual Você escreve o contexto manualmente

Além do que é selecionado manualmente, o ContextBuilder (src/ia/context_builder.py) monta automaticamente um bloco de contexto bem mais rico, injetado no system prompt antes de cada requisição - toda a coleta é projetada para falhar silenciosamente caso alguma informação não esteja disponível, sem nunca travar o envio da mensagem:

Nível de projeto: nome, caminho e tipo de projeto (detectado por arquivos de configuração como pyproject.toml, package.json etc.), linguagens predominantes com contagem de arquivos, árvore de arquivos relevante (filtrada e limitada em tamanho), branch e último commit Git, status de arquivos modificados, dependências declaradas e um resumo das primeiras linhas do README.

Nível de arquivo ativo: caminho relativo, linguagem, imports/includes do arquivo (para entender suas dependências internas), e o conteúdo da janela ao redor do cursor.

Com esse contexto automático, o modelo normalmente não precisa perguntar em qual workspace está, qual arquivo foi aberto, qual linguagem é usada ou como o projeto se estrutura - ele já recebe isso de forma implícita em cada requisição.


Skills (Ações Rápidas)#

Skills são prompts pré-configurados que fornecem instruções especializadas ao modelo antes da mensagem do usuário. O seletor de skills fica na barra de ferramentas do painel de IA.

Skills Padrão#

Skill Finalidade
ask Pergunta geral de programação
generate Gerar novo código
explain Explicar código selecionado
fix Corrigir bugs identificados
refactor Refatorar código
review Revisão de código (code review)
document Gerar documentação (docstrings, JSDoc)
tests Gerar testes unitários
optimize Otimizar performance
translate Traduzir código entre linguagens
commit Gerar mensagem de commit
security Análise de segurança
sql Auxiliar com queries SQL
regex Construir/explicar expressões regulares
architecture Discussão de arquitetura de software

Skills Personalizadas#

Crie skills próprias em ~/.codis/skills/:

---
name: minha-skill
description: Descrição da skill
i18n_key: ia.skill_minha_skill
prompt_prefix: "Você é um especialista em..."
---

Instruções detalhadas para o modelo...

Skills do usuário aparecem no seletor após as skills padrão.


Ferramentas de Contexto (Tool Use)#

O painel de IA usa function calling para que o modelo possa agir sobre o workspace automaticamente, em vez de depender só de texto colado pelo usuário. As ferramentas são executadas via ToolExecutor (src/ia/toolbox.py) em thread separada, e são organizadas em níveis de risco - o Approval Gate define cinco (SAFE, LOW, MEDIUM, HIGH e CRITICAL) e as ferramentas atuais usam SAFE, MEDIUM, HIGH e CRITICAL; cada nível tem um tratamento diferente pelo Approval Gate, descrito na próxima seção.

Leitura - SAFE (executam sem confirmação)#

read_file, read_active_file, get_cursor_context, list_files, search_in_files, find_definition, get_project_summary, read_diagnostics, read_symbols, read_git_diff, read_git_log, find_references, preview_rename, workspace_symbols, get_env_info, check_dependency, diff_files, read_file_tree, get_clipboard.

Escrita - MEDIUM (pedem aprovação)#

write_file, apply_edit, insert_after_line, format_code, patch_files.

Execução - HIGH (bloqueiam e aguardam aprovação explícita)#

run_command, run_script, run_tests, create_directory, delete_file, move_file, copy_file, init_project, install_dependency, git_commit, git_stage, git_branch, open_terminal_tab.

Crítico - CRITICAL (alerta vermelho, exige confirmação extra)#

delete_directory, git_reset, git_clean.

No total, são 40 ferramentas disponíveis ao agente, cobrindo leitura de contexto, edição, execução de comandos, integração Git, inicialização de projetos e instalação de dependências - um nível de capacidade comparável a assistentes como Cursor ou Zed Agent.


Approval Gate (Aprovação de Ações)#

O Approval Gate (src/ia/approval_gate.py) pausa a execução da IA e exige confirmação explícita do usuário antes de qualquer ação com efeitos colaterais. Ele é o que torna seguro deixar a IA operar com 40 ferramentas, incluindo exclusão de arquivos e comandos shell.

Categoria de risco Exemplos de ferramenta Comportamento
SAFE Leitura, busca, análise Executa imediatamente, sem interromper o fluxo
LOW Análises pesadas Confirmação opcional, configurável pelo usuário
MEDIUM Escrita de arquivo, formatação Pede aprovação antes de aplicar
HIGH Comandos shell, criar/deletar arquivos, operações Git Bloqueia a execução e aguarda decisão do usuário
CRITICAL Delete recursivo, git reset --hard Alerta vermelho - exige confirmação extra, mesmo tendo aprovado HIGH anteriormente

Quando uma ação cai em MEDIUM ou acima, o painel de IA exibe um card de aprovação descrevendo exatamente o que será feito (arquivo afetado, comando exato, diff da escrita) antes de qualquer execução real. O usuário pode aprovar, rejeitar, ou - no Modo Agente (tarefas multi-passo autônomas) - configurar um nível de confiança que aprova automaticamente certas categorias por sessão.


Streaming#

As respostas do modelo são exibidas em streaming - o texto aparece progressivamente enquanto o modelo gera a resposta. Um indicador de carregamento animado é exibido durante a geração.

Para cancelar uma resposta em andamento, clique no botão ✕ Cancelar.


Inserir Código no Editor#

Quando a resposta do modelo contém blocos de código (```linguagem ... ```), o Codis extrai esses blocos automaticamente.

Dois botões aparecem após a resposta:

  • 📋 Copiar - copia o código para o clipboard.
  • ⤵ Inserir no Editor - abre um diálogo de diff (DialDiff) mostrando as diferenças entre o código atual e o código sugerido pela IA. Você pode aceitar, rejeitar ou editar antes de aplicar.

Histórico de Chat#

Cada sessão mantém um histórico de mensagens que é enviado ao modelo a cada turno (contexto acumulado). O histórico é mantido em memória durante a sessão e não é persistido entre reinicializações.

Para iniciar uma nova conversa do zero, clique em 🗑 Limpar Histórico.


Configuração Inline de Provedor#

Clique no botão ⚙ Configurar ao lado do seletor de provedor para abrir um painel inline de configuração. Os campos disponíveis variam por provedor:

  • Anthropic / OpenAI / Gemini: chave de API + modelo
  • OpenAI Compatible: chave de API (opcional) + URL base + modelo
  • Ollama: URL base (padrão: http://localhost:11434) + modelo
  • LocalLib: caminho do modelo GGUF + parâmetros de inferência

Prompt de Sistema#

O assistente de IA usa um prompt de sistema padrão otimizado para programação:

  • Responde no mesmo idioma que o usuário escreve.
  • Usa sempre blocos de código com a linguagem correta.
  • Utiliza o contexto automático fornecido sem pedir informações repetidas.
  • Usa as ferramentas proativamente quando o contexto é insuficiente.

O prompt de sistema padrão pode ser customizado via configuração avançada (campo sistema em config.json, lido por todos os 6 provedores em src/ia/providers.py).


Disponibilidade#

O painel de IA é carregado de forma condicional: se a importação de src.ia.iaspace falhar por qualquer motivo (dependências ausentes, erro de importação), o Codis inicia normalmente sem o painel, registrando apenas um aviso no log. Nenhuma funcionalidade do editor é afetada.