Agente de programação para VS Code, com chat integrado, execução de ferramentas (arquivos, terminal, git) e suporte a múltiplos modelos via OpenRouter.
Interface e implementação originais — inspiradas no fluxo de uso de extensões como Cline, Roo Code e OpenCode, mas sem reaproveitar código, textos ou ícones de nenhuma delas.
Estrutura
src/ → extensão VS Code (registro de views, comandos)
extension.ts
chatViewProvider.ts → ponte entre webview <-> agente
webview/ → interface (React + Vite + Tailwind)
src/components/
agent/ → núcleo do agente, independente do VS Code
core/agent.ts → orquestra prompt, streaming e loop de ferramentas
core/context.ts → contexto automático do projeto
providers/openrouter.ts
tools/ → read_file, write_file, run_terminal, git_*, etc.
executor/ → executa ferramentas chamadas pelo modelo
planner/ → extrai o plano de execução da resposta
memory/ → histórico e resumo do projeto em SQLite
shared/types.ts → tipos e protocolo de mensagens webview <-> extensão
Interface
Visual escuro, minimalista e "voltado ao agente" — inspirado no estilo de Antigravity/OpenCode: barra de título compacta com badge do modelo atual e indicador de modo (Plan/Build), bolhas de mensagem com blocos de código destacados, e um card por ferramenta chamada (com status, aprovação e saída).
Comandos de barra (/)
Digite / no campo de mensagem para ver sugestões. Comandos disponíveis:
/models— abre um seletor com todos os modelos disponíveis na OpenRouter (busca em tempo real por nome/id, contexto e preço por 1M de tokens). Basta digitar/models(com ou sem termo de busca depois, ex.:/models claude) que o seletor abre automaticamente. Também dá para abrir clicando no badge do modelo no cabeçalho./mode— alterna entre o modo Plan (somente leitura/pesquisa) e Build (acesso completo a arquivos, terminal e git)./clear— inicia uma nova conversa.
A lista de modelos é buscada do endpoint público
GET https://openrouter.ai/api/v1/models e fica em cache por 10 minutos no
lado da extensão.
Como funciona o protocolo do modelo
O modelo recebe um prompt de sistema com a lista de ferramentas disponíveis e é instruído a:
- Abrir tarefas complexas com um bloco de plano:
```plan
- Ler projeto
- Criar autenticação ```
- Chamar ferramentas emitindo blocos: ```tool { "name": "read_file", "args": { "path": "package.json" } } ```
A extensão intercepta esses blocos, executa a ferramenta (pedindo aprovação quando sensível — escrita, terminal, git, exclusão), devolve o resultado ao modelo e repete o ciclo até a resposta final, num loop com limite de 8 iterações por turno.
Rodando em desenvolvimento
npm install
npm run compile # compila extensão + build da webview
No VS Code, abra esta pasta e pressione F5 (usa .vscode/launch.json)
para abrir uma nova janela com a extensão carregada.
Configure sua chave do OpenRouter pelo painel de configurações da extensão
(ícone ⚙ na sidebar) ou em Configurações > AI Agent.
Empacotando
npm install -g @vscode/vsce
npm run package # gera .vsix
Próximos passos sugeridos
- Streaming incremental de blocos
tool/plan(hoje são extraídos só ao final da resposta) - Suporte a MCP como fonte adicional de ferramentas
- Segundo e terceiro agentes (Arquiteto → Executor → Revisor) orquestrando o mesmo core
- Diff visual real (hoje
show_diffretorna texto simples) usando a API nativa de diff do VS Code - Testes automatizados para
agent/toolseagent/executor