- Phase 4: Hugging Face Download Engine — streaming GGUF downloads with progress, cancellation, and managed-model storage - Phase 5: Model Source Validation — source-mode compatibility, path/file validation, inline error UI with recovery guidance - Hot-swap: stop runtime → update model_path → restart atomic command - Model library: folder open, delete model file, local model management - SettingsPage unified hub: local models list + HF search with 3-state action buttons - Bug fixes: send button text restored (4 failing tests), reasoning-toggle aria-label, Rust warnings - All 89 tests passing, cargo check clean
5.4 KiB
status, trigger, created, updated
| status | trigger | created | updated |
|---|---|---|---|
| resolved | /gsd:debug continuar investigacao do erro de segunda mensagem no chat, retomando alteracoes pendentes em n_ctx/profile/batch size e validando causa raiz antes de editar | 2026-03-30T00:00:00Z | 2026-03-30T00:42:00Z |
Current Focus
hypothesis: A causa raiz ja foi identificada e corrigida no estado atual do codigo; o que resta e validar em ambiente real que o runtime local nao volta a falhar no segundo turno. test: Conferir codigo/commits de correcoes, confirmar que os checks passam e pedir verificacao humana do fluxo multi-turno no app. expecting: Se o app responder a segunda mensagem normalmente, a investigacao pode ser encerrada sem novas edicoes. next_action: comunicar diagnostico confirmado e orientar verificacao manual no ForgeLM
Symptoms
expected: O chat deve aceitar e responder multiplas mensagens consecutivas sem falhar na segunda interacao.
actual: Ha um erro na segunda mensagem do chat; investigacao anterior menciona alteracoes pendentes em n_ctx, profile e batch size.
errors: nao consolidado ainda
reproduction: enviar uma primeira mensagem no chat e depois uma segunda mensagem na mesma sessao
started: investigacao em andamento; ponto exato ainda nao consolidado
Eliminated
- hypothesis: As alteracoes pendentes em
LOCALLLM_PROFILE/LOCALLLM_BATCHexplicam diretamente o bug da segunda mensagem no app desktop. evidence: O spawn do runtime desktop emtauri-app/src-tauri/src/runtime/process.rsso enviaLOCALLLM_MODEL,LOCALLLM_ADDR,LOCALLLM_GPU_LAYERSeLOCALLLM_CTX; o app nao repassaLOCALLLM_PROFILEnemLOCALLLM_BATCH. timestamp: 2026-03-30T00:30:00Z
Evidence
-
timestamp: 2026-03-30T00:15:00Z checked: estado do repositorio e base de conhecimento de debug found: Alteracoes pendentes relevantes estao em
crates/inference-core/src/profile.rsecrates/inference-server/src/main.rs; arquivos alterados no frontend visivel sao cosmeticos. Nenhum.planning/debug/knowledge-base.mdexiste. implication: A investigacao deve priorizar o backend/runtime e nao assumir causa no frontend visual. -
timestamp: 2026-03-30T00:22:00Z checked: diffs locais em
crates/inference-core/src/profile.rsecrates/inference-server/src/main.rsfound: Os defaults deRuntimeProfileforam elevados para contextos muito grandes (Turbo4B131072,Balanced9B65536) eresolve_batch_sizepassou a desacoplarn_batchden_ctx, com cap automatico em 4096 e override explicito porLOCALLLM_BATCH. implication: Mudancas recentes atuam diretamente sobre memoria/prefill da runtime e podem aparecer apenas quando o historico da conversa cresce na segunda mensagem. -
timestamp: 2026-03-30T00:30:00Z checked:
tauri-app/src/components/ChatView.tsx,tauri-app/src-tauri/src/runtime/process.rsetauri-app/src-tauri/src/runtime/types.rsfound: O desktop monta a segunda requisicao a partir das mensagens persistidas em SQLite (buildApiMessages) e, ao spawnar o runtime local, so injetaLOCALLLM_MODEL,LOCALLLM_ADDR,LOCALLLM_GPU_LAYERSeLOCALLLM_CTX. Nao ha repasse deLOCALLLM_PROFILEnemLOCALLLM_BATCHna configuracao do app. implication: Alteracoes deprofile/batch sizeno servidor dificilmente explicam sozinhas o bug reproduzido pelo app desktop; o payload/historico doChatViewvira suspeito principal. -
timestamp: 2026-03-30T00:42:00Z checked:
.planning/quick/1-investigar-e-corrigir-bug-de-internal-er/1-SUMMARY.md,crates/inference-core/src/engine.rs,crates/inference-server/src/routes.rs,tauri-app/src/components/ChatView.tsx,git log,cargo check -p inference-core -p inference-server,npx tsc --noEmitfound: O resumo da quick task e o codigo atual convergem para a mesma cadeia causal:llama_get_memorypode retornar NULL na segunda sessao; o codigo antigo seguia em frente e deixava o KV cache anterior contaminando o prefill. Hojenew_session()falha rapido nesse caso,StreamItem::Errornao emite maisinternal errorcomo conteudo, eChatViewfiltra/nao persiste respostas vazias ou de erro. Os commitsd919879,44875aa,abb9db0e9da25c3registram essa correcao e os checks locais passam. implication: A causa raiz esta validada no codebase atual; o risco remanescente e apenas confirmar no fluxo real do app que o runtime/modelo local nao volta a expor o problema em execucao.
Resolution
root_cause: Na segunda requisicao, alguns builds de llama.cpp retornam NULL em llama_get_memory; o codigo anterior apenas registrava warning e continuava, reaproveitando um KV cache sujo da sessao anterior. O prefill da nova sessao entao falhava em llama_decode, e o caminho de stream acabava poluindo o historico com internal error.
fix: O estado atual do codigo ja contem a correcao em camadas - InferenceEngine::new_session() falha rapido se llama_get_memory vier NULL, routes.rs encerra StreamItem::Error sem emitir conteudo acumulavel, e ChatView.tsx filtra/pula persistencia de mensagens vazias ou de erro.
verification: Confirmado por leitura do codigo, resumo/commits da quick task (d919879, 44875aa, abb9db0, 9da25c3), cargo check -p inference-core -p inference-server e npx tsc --noEmit. Falta somente validacao manual no app real com multiplas mensagens sequenciais.
files_changed: ["crates/inference-core/src/engine.rs", "crates/inference-core/src/session.rs", "crates/inference-server/src/routes.rs", "tauri-app/src/components/ChatView.tsx"]