Eucode IAAgente de inteligencia artificial para engenharia de software, integrado diretamente ao VS Code. Conecta-se a modelos locais via LM Studio ou Ollama, ou diretamente a API Anthropic (Claude) — sem enviar nenhum dado para servidores externos quando em modo local. O que fazO Eucode IA e um agente autonomo com acesso completo ao seu workspace. Ele nao apenas responde perguntas — ele age: le arquivos, edita trechos cirurgicamente, busca simbolos, executa comandos, consulta erros do editor, faz operacoes git e pesquisa na web.
◆ Modo HYBRID — IA local + IA paga como suporte (destaque)O modo HYBRID resolve o maior dilema de quem usa IA para desenvolvimento: custo da API paga vs. capacidade limitada de modelos locais. A ideia e simples: a IA local executa o trabalho principal (~70%) e a IA paga entra como consultor estrategico apenas em momentos criticos onde o local nao da conta — economizando ate 70% do que voce gastaria usando so a API paga, sem abrir mao da qualidade nos pontos de decisao. Quando a IA paga entra (5 gatilhos)
Provedores de suporte suportados
Voce escolhe um provedor de suporte. Sua API key fica armazenada localmente no VS Code ( Como ativar
Transparencia total
Modo Hybrid ≠ Modo AUTO
🎙 Modo JARVIS (BETA) — voz local (Whisper) + leitura em voz alta
Pressione o botao de microfone no chat e fale com o Eucode IA. O audio e transcrito localmente via Whisper rodando no LM Studio (zero custo, sem enviar audio pra cloud). O agente pode responder em voz alta usando o TTS nativo do sistema. Como ativar
Como configurar o Whisper no LM Studio (passo a passo)O LM Studio expoe um endpoint compativel com a API da OpenAI em 1. Baixar o modelo no LM Studio:
2. Carregar o modelo:
3. Identificar o ID do modelo:
4. Testar:
Alternativa para Mac com Apple Silicon — whisper-server standalone (recomendado)O LM Studio na versao 0.4.x tem um bug recorrente no carregamento de modelos ASR ( Setup em 4 comandos:
Deixe o terminal aberto enquanto usar o JARVIS. Se quiser modelos maiores:
Troque o arquivo no comando Configurar no plugin:
O plugin detecta automaticamente o path correto do servidor ( Auto-iniciar no boot do Mac (opcional): Crie
Troque
A partir do proximo boot, o whisper-server sobe automaticamente. Servidor de voz (para app mobile)Dentro da secao JARVIS, ha um sub-toggle "Servidor de voz (para app mobile)". Quando ativado, o plugin sobe um servidor HTTP local na porta
Toggle "Expor na rede local" controla onde o servidor escuta:
Clique em "Mostrar dados de pareamento" para ver:
O app mobile (a desenvolver) consome esses dois endpoints. Mais detalhes do protocolo no codigo: src/services/voice-server.ts. Privacidade
Modo CHAT (conversa livre, sem tools de codigo)No header tem um botao Modos que abre um dropdown com um segmented control DEV | CHAT + toggles de Auto e Hybrid. Em CHAT, o agente vira um assistente conversacional puro — sem acessar arquivos do projeto, sem executar comandos, sem RAG nem memoria de sessao. Quando usar
Comportamento
Como ativar
Para voltar a programar, clique em DEV no mesmo dropdown. Recursos do Editor (autocomplete + fix inline)Alem do agente conversacional, o Eucode IA oferece duas integracoes diretas com o editor — sem precisar abrir o chat. Ambas sao opt-in (desligadas por padrao) e configuraveis no painel de configuracoes na secao colapsavel Recursos do Editor. Autocomplete inline (estilo Copilot)Sugestoes de codigo aparecem como texto fantasma cinza enquanto voce digita. Aceite com Tab.
Fix with EucodeDois pontos de entrada:
Antes de aplicar, voce escolhe entre:
A confirmacao mostra se a correcao veio do modelo local ou do suporte HYBRID (quando configurado). Comportamento com HYBRID ativoAmbos os recursos seguem a mesma logica do modo HYBRID: primeiro tenta o local, e somente se o local retornar vazio ou muito fraco, faz fallback transparente para o provedor pago configurado (Claude/GPT/Gemini). Isso mantem o custo baixo — voce so paga tokens quando o local nao deu conta. Se voce nao tem HYBRID configurado, o resultado do local e usado direto (mesmo que fraco). Se o modelo local estiver fora do ar, a sugestao simplesmente nao aparece — sem mensagens de erro intrusivas. Como ativar
Os toggles funcionam independentemente — voce pode habilitar so um, ou os dois. Comandos personalizaveis (
|
| Campo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
command |
string | sim | Nome do atalho, deve comecar com / |
prompt |
string | sim | Texto enviado ao agente quando voce invoca o comando |
description |
string | nao | Texto curto que aparece no autocomplete |
autoMode |
boolean | nao | Forca o modo AUTO ao rodar este comando |
hybridMode |
boolean | nao | Forca o modo HYBRID ao rodar este comando |
Escopo: workspace ou global
Voce escolhe onde os comandos ficam armazenados nas configuracoes do plugin:
- Workspace (padrao):
eucode.jsonna raiz do projeto. Committable, time compartilha - Global:
~/.eucode/eucode.json. Pessoal do usuario, vale para qualquer projeto aberto
O toggle de escopo nas configuracoes troca qual arquivo o plugin esta usando. Apenas um dos dois esta ativo por vez.
Salvar prompts longos como comando
Sempre que voce escreve um prompt com 30+ palavras e envia, um banner amarelo aparece sugerindo "Salvar como comando". Um clique abre o dialog ja preenchido com o seu prompt, e voce define o nome do comando, descricao, e quais modos ativar.
Como usar
- Digite
/no chat — o autocomplete mostra a lista - Use setas ↑/↓ para navegar, Tab para aceitar, Enter para enviar
- O agente recebe o
promptexpandido, com AUTO/HYBRID aplicados se voce configurou - Voce ve no chat o atalho usado:
/testar ⚡ → Quero que faca o teste...
Hot reload
Quando voce edita o eucode.json (no proprio VS Code ou em qualquer editor externo), o plugin recarrega a lista automaticamente — sem precisar reabrir o chat.
Editar o arquivo
Nas configuracoes do plugin, na secao Comandos personalizaveis, clique em Abrir eucode.json. Se o arquivo nao existir ainda, o plugin cria um vazio.
Memoria persistente por sessao
Cada sessao de chat tem um arquivo proprio em .eucode/memory/session_<id>.json com 3 secoes:
stack— linguagens, frameworks e package manager detectados automaticamente do projeto na primeira rodada (lendopackage.json,Cargo.toml,pom.xml,pubspec.yaml, etc)approvedCommands— comandos que voce aprovou via "Permitir na sessao". Antes ficavam so em memoria e voce precisava aprovar de novo a cada reload. Agora persistemdecisions— notas curtas de decisoes do projeto, gravadas manualmente (voce) ou pelo agente
Um resumo compacto dessa memoria e injetado no system prompt em toda rodada, dando ao agente contexto persistente sem voce precisar repetir. A memoria completa fica disponivel via tool memory_read se o agente quiser conferir detalhes.
Como gravar uma nota manualmente
No chat, digite:
/lembrar Use Zustand no lugar de Redux neste projeto
A nota e salva em .eucode/memory/session_<id>.json e passa a fazer parte do contexto que o agente recebe nas proximas rodadas.
Agente gravando sozinho
Quando voce informa uma decisao importante durante a conversa (ex: "usamos Material UI, nao Tailwind"), o agente pode chamar memory_remember para persistir essa preferencia sem voce precisar pedir.
Apagar uma sessao apaga sua memoria
Quando voce remove uma sessao no painel de sessoes, o session_<id>.json correspondente e apagado junto. Sem garbage collection necessario.
Ver/editar a memoria
Nas configuracoes → secao Memoria da sessao, clique em Abrir memoria da sessao atual. Voce pode editar o JSON diretamente; o conteudo entra no proximo prompt automaticamente.
Provedores suportados
| Provedor | Como conectar |
|---|---|
| LM Studio | Servidor local em http://localhost:1234 (padrao) |
| Ollama | Qualquer endpoint OpenAI-compativel |
| Anthropic (Claude) | API key sk-ant-... — sem precisar configurar host |
| Outro | Qualquer servidor com /v1/chat/completions |
Requisitos
- LM Studio rodando com um modelo carregado, ou Ollama, ou uma API key da Anthropic, ou qualquer servidor OpenAI-compativel
- VS Code 1.87 ou superior
Instalacao
- Instale a extensao pelo marketplace do VS Code
- Configure o provedor: clique na engrenagem no header do chat
- Para LM Studio/Ollama: abra o servidor local antes de usar
- Para Anthropic: insira sua API key e escolha o modelo Claude
Como usar
Chat de texto
Digite sua pergunta ou instrucao no campo de texto e pressione Enter ou clique em Enviar.
O agente trabalha em multiplos passos: lista diretorios, le arquivos, busca simbolos, cria e edita codigo — mostrando o que esta fazendo em tempo real com streaming de texto e checklist de progresso.
Exemplos do que voce pode pedir:
Quais projetos existem nesse workspace e quais tecnologias cada um usa?
Corrija todos os erros de TypeScript que estao aparecendo no editor.
Crie um arquivo de configuracao do ESLint para TypeScript nesse projeto.
Tem algum memory leak no codigo de gerenciamento de eventos? Analise e corrija.
Faca um git commit com as alteracoes atuais e me mostre o diff antes.
Pesquise como usar o Zod para validar schemas em TypeScript e implemente no projeto.
Rode os testes e me explique qualquer falha que aparecer.
Analise de imagens
Clique no botao de camera na area de input para anexar uma imagem. Voce pode enviar:
- Screenshots de erros ou comportamentos inesperados
- Diagramas de arquitetura para implementar
- Wireframes de interfaces para codar
- Prints de logs para depuracao
Aprovacao de alteracoes
Antes de gravar qualquer arquivo, o agente exibe um card no chat com o diff antes/depois. Voce aceita ou rejeita com um clique.
Para comandos de terminal, aparece um dialog com tres opcoes:
- Permitir uma vez — executa e volta a perguntar da proxima vez
- Permitir na sessao — aprova esse comando para o resto da conversa
- Bloquear — cancela a execucao
Modo Automatico (Beta)
Ative o botao Auto (Beta) no header para que o agente escreva arquivos diretamente, rode os testes apos cada edicao e corrija falhas sem interromper. Ideal para refatoracoes longas ou criacao de testes.
Ferramentas do agente
Cada ferramenta pode ser habilitada ou desabilitada individualmente nas configuracoes.
| Ferramenta | O que faz |
|---|---|
list_directory |
Lista arquivos e pastas, ignorando node_modules, dist e similares |
read_local_file |
Le o conteudo completo de qualquer arquivo do workspace |
edit_file |
Substitui um trecho exato do arquivo sem tocar no restante (preferencial para edicoes) |
write_local_file |
Cria arquivos novos ou reescreve o arquivo inteiro |
search_in_workspace |
Busca com ripgrep (ou grep) em todos os arquivos de codigo |
get_diagnostics |
Consulta erros e warnings atuais do editor VS Code |
run_command |
Executa comandos no terminal com aprovacao dinamica |
run_git |
Operacoes git com controle de seguranca por categoria |
web_search |
Pesquisa na web via DuckDuckGo sem chave de API |
todo_update |
Atualiza o checklist de progresso visivel no chat |
Seguranca
Modo local: nenhuma informacao do seu codigo, historico ou workspace e transmitida para servidores externos.
Modo Anthropic: as mensagens sao enviadas diretamente para api.anthropic.com — sem passar por nenhum servidor intermediario.
Comandos de terminal: sem whitelist fixa. Voce aprova cada comando individualmente ou para a sessao. Comandos destrutivos (rm -rf, sudo, pipes remotos, formatacao de disco) sao bloqueados permanentemente.
Operacoes git: read-only (status, log, diff) executam direto. Operacoes que modificam estado (commit, push, checkout) exigem confirmacao. Destrutivas (reset --hard, push --force) sao bloqueadas.
Historico e sessoes
O historico das conversas e persistido por workspace via globalState do VS Code. Voce pode ter multiplas sessoes, carregar conversas anteriores ou iniciar um novo chat sem perder o contexto.
Imagens enviadas sao armazenadas apenas como resumo textual no historico, sem guardar os dados binarios.
Configuracao
Clique na engrenagem no header do chat para abrir o painel de configuracoes.
- Provedor — LM Studio, Anthropic (Claude), ou qualquer servidor OpenAI-compativel
- Host — endereco completo com porta (apenas para LM Studio/Ollama)
- Modelo — nome exato do modelo; chips clicaveis sugerem os modelos Claude ao selecionar Anthropic
- API Key — obrigatoria para Anthropic (
sk-ant-...), opcional para servidores locais - Ferramentas — toggles liga/desliga para cada ferramenta disponivel
.eucode/ — pasta de configuracao do plugin
Tudo que o Eucode IA grava no seu projeto fica organizado em uma unica pasta .eucode/ na raiz do workspace. Ela e criada automaticamente na primeira vez que voce abre o chat:
seu-projeto/
└── .eucode/
├── .gitignore # mantem memory/ fora do versionamento
├── eucodeIgnore # padroes que o agente deve ignorar
├── eucode.json # seus comandos /personalizaveis
└── memory/
└── session_*.json # memoria persistente por sessao
Versoes antigas do plugin gravavam .eucodeIgnore e eucode.json na raiz. Eles sao migrados automaticamente para dentro de .eucode/ na primeira vez que voce abrir o chat — sem perder nenhuma configuracao.
eucodeIgnore — filtrar arquivos do contexto
Edite .eucode/eucodeIgnore para excluir arquivos e pastas que o agente nao deve ler ou listar. A sintaxe e identica ao .gitignore:
# Ignorar pastas de build e dependencias
dist/
node_modules/
.cache/
# Ignorar arquivos gerados
*.min.js
coverage/
# Ignorar segredos e configs locais
.env
*.local
O plugin ja ignora automaticamente node_modules, dist, .git, .next, __pycache__ e similares. O eucodeIgnore e para regras adicionais especificas do seu projeto.
LM Studio em rede local
No LM Studio, va em Server Settings e habilite "Servir na Rede Local". Depois configure o host no Eucode IA com o IP da maquina onde o LM Studio esta rodando.
Configuracao recomendada para modelos locais (LM Studio)
As configuracoes abaixo foram validadas com o Gemma 4 E4B rodando em um MacBook Air M5 16 GB e servem como referencia para maquinas de especificacao similar. Ajuste conforme o modelo e hardware.
| Parametro | Valor recomendado | Observacao |
|---|---|---|
| Context Length | 2048 |
Para o Gemma 4 E4B, use exatamente 2048 — valores maiores causam truncamento silencioso no slot |
| Temperature | 0.4 (Auto) / 0.7 (Chat) |
Menor no modo Auto para mais precisao em codigo |
| Top K Sampling | 40 |
Evita outputs verbosos; melhor que 64 para tarefas de engenharia |
| Top P Sampling | 0.95 |
Mantido alto para diversidade controlada |
| Min P Sampling | 0.05 |
Filtra tokens improvaveis sem restringir demais |
| Repeat Penalty | 1.1 |
Leve — evita repeticao sem distorcer o codigo |
| Limit Response Length | Ativo, 1024 tokens |
Reserva metade do contexto para a resposta; o plugin gerencia o restante |
| Context Overflow | Rolling Window |
Preserva tool results recentes; melhor que "Truncate Middle" para agentes |
| CPU Threads | 4 ou 5 |
No M5, mais threads inclui nucleos de eficiencia que atrasam; 4-5 e o sweet spot |
Estas configuracoes sao feitas no LM Studio, aba Inference do modelo carregado. Nao ha como defini-las pelo plugin — elas ficam salvas como preset no LM Studio.
Nota sobre Context Length: o Eucode IA esta calibrado para janelas de 2048 tokens com o Gemma 4 E4B. Se usar um modelo com contexto maior (ex: 8192), os limites internos de poda do plugin sao conservadores mas funcionam — nao e necessario ajustar nada no plugin.
Escolha de modelo por tipo de tarefa
A capacidade de raciocinio do agente em modo automatico depende diretamente do tamanho do modelo. Recomendacoes baseadas em uso real:
| Tamanho do modelo | Bom para | Limitacao |
|---|---|---|
| < 7B (Gemma 4 E4B, Phi-3-mini, Llama 3.2 3B) | Tarefas pontuais: corrigir um erro especifico, refatorar uma funcao, adicionar um endpoint, edicoes locais com contexto claro | Projetos multi-arquivo: tendem a perder o fio em tarefas que exigem raciocinio causal entre 3+ arquivos. Modo AUTO pode entrar em loop tentando corrigir o arquivo errado |
| 7B-13B (Qwen 2.5 Coder 7B, DeepSeek Coder V2, CodeLlama 13B) | Projetos pequenos e medios: criar features completas (login + dashboard), refatorar modulos, debug com stack trace | Tarefas muito ambiciosas em uma rodada (ex: "construa um SaaS inteiro") ainda pedem intervencao humana |
| 30B+ (Qwen 2.5 Coder 32B, DeepSeek V3) ou Claude API | Projetos grandes, refatoracoes amplas, modo AUTO confiavel por longas execucoes | Recursos: 30B local exige 32GB+ de RAM. Claude API tem custo por token |
Dica pratica: se o modo AUTO ficar pausando com
[AUTO PAUSADO]repetidamente para tarefas que voce considera simples, o modelo provavelmente esta abaixo da capacidade necessaria. Suba uma faixa de tamanho ou divida a tarefa em pedidos menores.
Recomendacao premium: Ministral 3 14B Reasoning (hardware potente)
Para usuarios com hardware mais potente, este modelo entrega uma experiencia significativamente superior em modo AUTO. E um modelo treinado especificamente para raciocinio passo-a-passo, com tool use nativo e janela de contexto de 256k tokens — o que resolve quase todos os problemas de pruning agressivo que afetam modelos menores.
Por que vale a pena:
- Tool calling robusto: chama as ferramentas com consistencia muito maior que modelos < 7B
- Raciocinio causal entre arquivos: entende fluxo de dados entre componentes, reduzindo drasticamente o cenario "modelo edita arquivo errado"
- Contexto gigante (256k): o agente lembra do projeto inteiro entre rodadas
- Faixa doce 14B: suficiente para projetos reais sem exigir 32GB+ de RAM
Requisitos minimos por sistema operacional:
| Sistema | RAM unificada / VRAM | Armazenamento | Observacao |
|---|---|---|---|
| macOS (Apple Silicon) | 16 GB minimo, 24 GB+ recomendado | 10 GB livres | M2/M3/M4 com GPU integrada. No M-series base de 16 GB feche Chrome e outros apps pesados durante uso |
| macOS (Intel) | Nao recomendado | — | Performance inviavel sem GPU dedicada |
| Windows / Linux com GPU NVIDIA | 12 GB VRAM minimo (ex: RTX 3060 12GB, RTX 4070+) | 10 GB livres | Full GPU offload garante velocidade aceitavel (15+ t/s) |
| Windows / Linux com GPU AMD | 16 GB VRAM (ex: RX 7900 XT) | 10 GB livres | Suporte via ROCm/Vulkan no LM Studio; performance varia |
| Windows / Linux CPU-only | 32 GB RAM | 10 GB livres | Funcional mas lento (3-5 t/s) — use apenas para tarefas pontuais |
Configuracao recomendada no LM Studio:
| Parametro | Valor |
|---|---|
| Context Length | 4096 para comecar; suba para 8192 se a maquina aguentar |
| Temperature | 0.5 (equilibrio entre coding preciso e reasoning) |
| Top K Sampling | 40 |
| Top P Sampling | 0.95 |
| Min P Sampling | 0.05 |
| Repeat Penalty | 1.05 (mais leve que para Gemma) |
| Limit Response Length | 2048 (reasoning models precisam de espaco para "pensar") |
| Context Overflow | Rolling Window |
| CPU Threads | Numero de nucleos performance da CPU (4-8 dependendo do chip) |
Aviso: comece com Context Length de 4096. Nao habilite 256k de cara — vai consumir RAM em excesso e cair drasticamente a velocidade por token. Suba gradualmente conforme valida a estabilidade na sua maquina.
Contexto vetorial com RAG (opcional)
O Eucode IA suporta consulta a um banco vetorial local antes de cada resposta. Quando habilitado, ele busca trechos relevantes do seu projeto (documentacao, codigo indexado, notas tecnicas) e os injeta automaticamente como contexto adicional — sem que voce precise colar nada manualmente.
Quando usar: projetos grandes onde o agente precisa conhecer convencoes especificas, APIs internas, arquitetura ou documentacao que nao esta no workspace aberto.
Backends suportados:
| Backend | Como funciona | Embedding |
|---|---|---|
| Chroma | API v1 (/api/v1/collections/{name}/query) |
Chroma embeda o texto da query no servidor |
| Qdrant (BETA) | API REST (/collections/{name}/points/query) |
O plugin gera o embedding antes de consultar (ver abaixo) |
Diferenca importante (Qdrant): o Qdrant self-hosted (imagem oficial
qdrant/qdrant) nao embeda texto — ele e um vector store puro e espera receber um vetor ja calculado. Por isso, no modo Qdrant o Eucode IA primeiro gera o embedding da sua pergunta chamando um endpoint OpenAI-compativel/v1/embeddings(por padrao o mesmo host do LM Studio) e so entao consulta o Qdrant. O modelo de embedding usado na indexacao tem que ser o mesmo configurado no plugin — dimensoes diferentes quebram a busca.
Como configurar
1. Instale o Chroma
pip install chromadb
2. Inicie o servidor local
chroma run --host localhost --port 8000
3. Indexe seu projeto
Crie um script Python para indexar os arquivos que quiser disponibilizar como contexto:
import chromadb
import os
client = chromadb.HttpClient(host="localhost", port=8000)
collection = client.get_or_create_collection("eucode")
docs, ids, metas = [], [], []
for root, _, files in os.walk("./src"):
for f in files:
if f.endswith((".ts", ".py", ".md", ".json")):
path = os.path.join(root, f)
with open(path, encoding="utf-8", errors="ignore") as fh:
content = fh.read()
if content.strip():
docs.append(content[:2000]) # limite por chunk
ids.append(path)
metas.append({"source": path})
collection.upsert(documents=docs, ids=ids, metadatas=metas)
print(f"{len(docs)} arquivos indexados.")
Execute com python index.py a partir da raiz do projeto. Re-execute sempre que o codigo mudar.
4. Ative nas configuracoes do plugin
Abra o painel de configuracoes (engrenagem no header do chat):
- Ative o toggle RAG (Contexto Vetorial)
- Configure o Endpoint:
http://localhost:8000(padrao) - Configure o Collection: nome da colecao criada (ex:
eucode) - Salve
O plugin passa a consultar automaticamente o Chroma a cada nova mensagem, recuperando os trechos mais relevantes e injetando-os no contexto antes da resposta. A consulta tem timeout de 5 segundos e nunca bloqueia o chat se o servidor estiver fora.
Dica: se voce tem multiplos projetos, crie uma collection separada para cada um e altere o nome no config conforme troca de projeto.
Como configurar (Qdrant) — BETA
⚠ Feature em BETA. O caminho Qdrant (embedding local + busca vetorial) funciona, mas ainda esta em estabilizacao. Reporte bugs no GitHub.
1. Suba o Qdrant via Docker
docker pull qdrant/qdrant
docker run -p 6333:6333 -v $(pwd)/qdrant_storage:/qdrant/storage qdrant/qdrant
O dashboard fica em http://localhost:6333/dashboard.
2. Carregue um modelo de embedding no LM Studio
O Qdrant local nao embeda texto, entao o plugin precisa de um modelo de embedding. No LM Studio, baixe e carregue um modelo de embedding (ex: nomic-embed-text, text-embedding-bge-small) junto com o modelo de chat — o LM Studio expoe /v1/embeddings automaticamente.
3. Indexe seu projeto (gerando os embeddings)
Diferente do Chroma, voce precisa calcular os embeddings na indexacao usando o mesmo modelo que o plugin vai usar na query:
import os, requests
from qdrant_client import QdrantClient
from qdrant_client.models import VectorParams, Distance, PointStruct
EMBED_HOST = "http://localhost:1234" # mesmo host do LM Studio
EMBED_MODEL = "nomic-embed-text" # mesmo modelo configurado no plugin
def embed(text: str) -> list[float]:
r = requests.post(f"{EMBED_HOST}/v1/embeddings",
json={"model": EMBED_MODEL, "input": text})
return r.json()["data"][0]["embedding"]
client = QdrantClient(url="http://localhost:6333")
dim = len(embed("probe")) # descobre a dimensao do modelo
client.recreate_collection("eucode",
vectors_config=VectorParams(size=dim, distance=Distance.COSINE))
points, pid = [], 0
for root, _, files in os.walk("./src"):
for f in files:
if f.endswith((".ts", ".py", ".md", ".json")):
path = os.path.join(root, f)
with open(path, encoding="utf-8", errors="ignore") as fh:
content = fh.read()[:2000]
if content.strip():
points.append(PointStruct(id=pid, vector=embed(content),
payload={"content": content, "source": path}))
pid += 1
client.upsert("eucode", points)
print(f"{len(points)} arquivos indexados.")
Instale as deps com pip install qdrant-client requests e rode python index_qdrant.py. Re-execute quando o codigo mudar.
O
payloadprecisa ter as chavescontentesource— e o que o plugin le da resposta da busca.
4. Ative nas configuracoes do plugin
- Ative o toggle RAG (Contexto Vetorial)
- No seletor de backend, escolha Qdrant
- Endpoint:
http://localhost:6333 - Collection:
eucode(ou o nome que voce criou) - Host de embeddings:
http://localhost:1234(mesmo do LM Studio) - Modelo de embedding: o mesmo usado na indexacao (ex:
nomic-embed-text) - Salve
A cada mensagem o plugin embeda sua pergunta via /v1/embeddings, consulta o Qdrant e injeta os trechos mais relevantes no contexto. Mesmo timeout de 5s e degradacao silenciosa se o servidor estiver fora.
Ultimas versoes
0.15.1
- NOVO (BETA): suporte a Qdrant no RAG — backend alternativo ao Chroma. O Qdrant self-hosted nao embeda texto, entao o plugin gera o embedding da pergunta via
/v1/embeddings(mesmo host do LM Studio por padrao) antes de consultar. Seletor de backend + campos de host/modelo de embedding nas configuracoes - Config de RAG com labels — cada campo passou a ter rotulo visivel; antes eram inputs sem label, faceis de confundir
0.10.2
- JARVIS marcado como BETA com selo visual no painel de configuracoes e tooltip do microfone
- Guia completo de whisper-server standalone para Apple Silicon no README — alternativa recomendada ao LM Studio (que tem bug no carregamento ASR), com setup em 4 comandos brew + auto-start via LaunchAgent
0.10.1
- Fallback automatico de endpoint Whisper: tenta
/v1/audio/transcriptions(LM Studio/OpenAI) e cai para/inference(whisper.cpp standalone) se 404 - Permite usar
whisper-serverdo brew como alternativa ao LM Studio sem mudar configuracao do plugin
0.10.0
- NOVO: Modo JARVIS — botao de microfone no chat (push-to-talk), STT 100% local via Whisper no LM Studio, TTS automatico do agente via
speechSynthesis - Servidor de voz local com endpoints
/voice-inpute/transcribe, protegidos por token bearer e bind seletivo (loopback ou rede) - Preparado pra app mobile na mesma WiFi: token de pareamento UUID, header
Authorization, IPs locais detectados automaticamente - README com passo a passo completo de configuracao do Whisper no LM Studio (download, carregamento, id do modelo, teste)
0.9.1
- Texto parcial do streaming preservado quando o stream cai no meio (antes era descartado, mostrando so "Erro de conexao")
- 6 mensagens de erro especificas (rate limit, context too large, auth, timeout, conexao, server error) em vez da generica anterior
- ProjectIntel default reduzido de 40 → 20 arquivos (libera ~700 tokens em todo prompt)
- Novo toggle "ProjectIntel" na nova secao "Otimizacao de contexto" das configuracoes
0.9.0
- 3 novos servicos especializados focados em sustentar tarefas longas com LLMs locais <= 10B:
ProjectIntelService: indice leve de simbolos exportados por arquivo do workspace, injetado no system prompt — agente encontra arquivos sem precisar ler todosExecutionGuardService: 6 guards de invariante centralizados (build pendente, arquivo errado, codigo no chat, etc), funcoes puras testaveisTaskDecomposerService: detecta macro-tarefas, quebra em 2-8 sub-tarefas auto-contidas (com ajuda do pago), inclui step validation entre sub-tarefas
- Slider de Intensidade HYBRID (25/50/75/100%): usuario calibra quanto o LLM pago e invocado. Gating automatico por gatilho — 25% so usa pago em recovery critico, 100% usa em todos os gatilhos
- AUTO mode mais resiliente: cap aumentado de 5 para 15 tentativas, recovery via HYBRID em cada multiplo de 4 (4, 8, 12)
- ProjectIntel summary injetado em todo system prompt (skip em CHAT)
0.8.11
- AUTO + HYBRID mais robusto para tarefas de build/package: regras criticas no system prompt forcam sequencia read → edit → run_command → verify, sem editar duas vezes seguidas sem rodar build no meio
- Plano HYBRID inicial agora e mais conciso (3-7 steps, paths relativos, sob 200 palavras) — libera ~700 tokens a mais no contexto do modelo local
- Detector
buildPendingNoCommand: se a tarefa pede build/package mas o modelo so editou sem rodar comando, nudge especifico orienta a executarrun_command+ verificar artefato no disco
0.8.6
- NOVO: Modo CHAT — toggle DEV/CHAT no novo dropdown "Modos" do header. Em CHAT o agente conversa livremente, sem acessar arquivos ou comandos. Util para perguntas gerais, brainstorming, analise de URL (com web_search se habilitado)
- Em CHAT: Auto e Hybrid sao automaticamente desligados (sem perder a preferencia do usuario — volta ao estado anterior em DEV)
- Tools de codigo escondidas em CHAT: so web_search disponivel
- Badge "CHAT" + borda lateral azul-violeta nas mensagens enviadas em modo CHAT
- Header reorganizado: botoes Hybrid e Auto agora ficam em um unico dropdown "Modos" com toggles individuais, indicador compacto do estado ativo
- BETA removido do botao Auto
0.8.4
- NOVO: Memoria persistente por sessao —
.eucode/memory/session_<id>.jsoncom stack detectado, comandos aprovados e decisoes; resumo injetado no system prompt + toolsmemory_remember/memory_read - Comando
/lembrar <texto>no chat para gravar notas manualmente - Detecao automatica de stack (linguagens, frameworks, package manager) na primeira rodada da sessao
- Comandos "Permitir na sessao" agora persistem entre reloads
- Reorganizacao: todos os arquivos do plugin agora ficam em
.eucode/na raiz do workspace (eucodeIgnore, eucode.json, memory/, .gitignore) - Migracao automatica e silenciosa dos arquivos antigos (
.eucodeIgnoreeeucode.jsonna raiz) para dentro de.eucode/na primeira abertura do chat - Notificacao com botao "Abrir pasta" quando arquivos antigos sao migrados
.eucode/.gitignorecriado automaticamente para mantermemory/fora do versionamento- Deletar uma sessao apaga o arquivo de memoria correspondente
- Botao "Abrir memoria da sessao atual" nas configuracoes
0.8.3
- Botao HYBRID do header agora respeita o master switch das configuracoes — desabilitado se HYBRID nao estiver ligado em Configuracoes
- Desativar HYBRID nas configs forca o botao do header para off automaticamente
- Tooltip e alerta orientam o usuario quando ele tenta usar o botao desabilitado
0.8.2
- NOVO: Comandos personalizaveis via
eucode.json— atalhos/comandoque expandem em prompts completos com AUTO/HYBRID opcionais - Autocomplete inline ao digitar
/no chat (setas ↑/↓ para navegar, Tab para aceitar) - Escopo configuravel:
eucode.jsonno workspace OU global em~/.eucode/ - Hot reload automatico quando o arquivo e editado
- Banner inline "Salvar como comando" aparece em prompts com 30+ palavras
- Dialog para criar comando com toggles individuais (nome, descricao, AUTO, HYBRID, escopo)
- Botao "Abrir eucode.json" na nova secao colapsavel "Comandos personalizaveis" do config
0.8.1
- NOVO: Autocomplete inline — sugestoes de codigo como texto fantasma cinza, aceita com Tab (estilo Copilot)
- NOVO: Fix with Eucode — Quick Fix em erros + item no menu de contexto para refatorar selecao
- Ambos seguem a logica HYBRID: local primeiro, suporte como fallback automatico
- Confirmacao do Fix com 3 botoes (Aplicar / Visualizar / Cancelar)
- Painel de config tem nova secao colapsavel "Recursos do Editor" com toggles individuais
- "Ferramentas disponiveis" tambem agora e colapsavel — painel mais limpo
0.8.0
- NOVO: Modo HYBRID — IA local + IA paga (Anthropic / OpenAI / Gemini) como suporte estrategico em momentos criticos
- 5 gatilhos: planejamento inicial, verificacao apos escrita, recuperacao de erro de comando/sintaxe, recuperacao quando o local trava
- Botao HYBRID no header e secao dedicada nas configuracoes
- Timeline com items de suporte cyan azul-neon alinhados a direita, com badge do provedor + motivo + meta
- Telemetria comparativa final: divisao Local x Suporte em 3 dimensoes (chamadas / tokens / tempo)
0.7.4
- Detector de arquivo errado em modo AUTO: agente para de "corrigir" o arquivo errado quando o erro aponta para outro
- Stack trace destacado nos nudges de erro: arquivos + mensagem extraidos da saida do comando
- Runtime errors em dev servers (TypeError, 500) detectados em processos long-running
- Botao "Tentar mais 5 vezes" quando o modo AUTO pausa
- Status visivel para retry de resposta vazia
- Status "Compactando contexto..." removido (ruido)
- Recomendacao de modelo premium no README: Ministral 3 14B Reasoning com requisitos por SO
0.7.3
- Todos os nomes de arquivo na timeline destacados em amarelo, nao apenas o primeiro
0.7.2
- Arquivos criados ou editados pelo agente abrem automaticamente em evidencia no editor
- Modo AUTO nao desiste mais ao receber erro de comando: continua corrigindo ate o build passar com exit code 0
- Detector de codigo dumped no chat: forca o modelo a salvar codigo via tool em vez de colar no chat
- edit_file mais tolerante: old_string vazio cria arquivo novo automaticamente; mensagens de erro didaticas guiam o modelo a se autocorrigir
- Hard timeout de 5 min em comandos: evita travamento do loop em comandos pendurados
- Loop guard de tool repetida: 3 chamadas identicas disparam correcao forcando mudanca de abordagem
- [AUTO PAUSADO] com diagnostico especifico quando o agente nao consegue concluir
0.7.1
- Modo AUTO: eliminado loop infinito de leitura repetida (modelo ficava relendo package.json indefinidamente)
- Modo AUTO: cache de leituras por round — read_local_file e list_directory retornam resultado cacheado sem custo de contexto
- Modo AUTO: verificacao de erros do editor apos resposta final — se o modelo escrever arquivo com erro de sintaxe, o loop continua automaticamente ate corrigir
- Modo AUTO: warnings do editor ignorados — somente erros reais ([ERROR]) bloqueiam o loop; warnings de schema do VS Code nao causam mais travamento
- Modo AUTO: modelo que planeja sem agir e forcado a executar imediatamente
- Telemetria ao vivo durante streaming: contador de tokens e tokens/s atualizados em tempo real na timeline
0.7.0
- Suporte a RAG opcional via Chroma — banco vetorial local configuravel nas settings
.eucodeIgnore: arquivo de filtro gitignore-style para excluir arquivos/pastas do contexto do agente- Telemetria de desempenho na timeline: tokens/s, prompt tokens e tempo total de resposta
- Distincao entre erro de infraestrutura (OOM, conexao) e contexto cheio — recuperacao automatica sem mensagem de erro para o usuario
0.6.3
- Timeline persistente: texto do LM permanece visivel ao iniciar nova tool call e ao finalizar a tarefa
- Recuperacao automatica de contexto: poda progressiva e retry silencioso quando o modelo retorna resposta vazia
- Notificacao nativa do macOS quando o VS Code nao esta em foco
- Timeline colorida por resultado: verde (sucesso), vermelho (erro), amarelo no nome do arquivo
0.6.2
- Timeline colorida por tipo de acao: leituras, escritas e comandos com cores distintas
- Classificacao automatica pelo prefixo do status
0.6.1
- Suporte nativo a API Anthropic (Claude) com streaming SSE
- Streaming de respostas em tempo real para todos os provedores
- Controle granular de ferramentas com toggles por ferramenta
- Modelos Claude sugeridos como chips clicaveis no config
Historico completo de versoes em CHANGELOG.md.
Licenca
MIT