Files
ForgeLM/.planning/debug/segunda-mensagem-chat.md
Evandro Fonseca Junior 9a093dca15 feat: Tier-1 Model Manager with Hot-Swapping, HF Download Engine, bug fixes, and test repairs
- 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
2026-03-31 02:03:55 -03:00

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_BATCH explicam diretamente o bug da segunda mensagem no app desktop. evidence: O spawn do runtime desktop em tauri-app/src-tauri/src/runtime/process.rs so envia LOCALLLM_MODEL, LOCALLLM_ADDR, LOCALLLM_GPU_LAYERS e LOCALLLM_CTX; o app nao repassa LOCALLLM_PROFILE nem LOCALLLM_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.rs e crates/inference-server/src/main.rs; arquivos alterados no frontend visivel sao cosmeticos. Nenhum .planning/debug/knowledge-base.md existe. 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.rs e crates/inference-server/src/main.rs found: Os defaults de RuntimeProfile foram elevados para contextos muito grandes (Turbo4B 131072, Balanced9B 65536) e resolve_batch_size passou a desacoplar n_batch de n_ctx, com cap automatico em 4096 e override explicito por LOCALLLM_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.rs e tauri-app/src-tauri/src/runtime/types.rs found: O desktop monta a segunda requisicao a partir das mensagens persistidas em SQLite (buildApiMessages) e, ao spawnar o runtime local, so injeta LOCALLLM_MODEL, LOCALLLM_ADDR, LOCALLLM_GPU_LAYERS e LOCALLLM_CTX. Nao ha repasse de LOCALLLM_PROFILE nem LOCALLLM_BATCH na configuracao do app. implication: Alteracoes de profile/batch size no servidor dificilmente explicam sozinhas o bug reproduzido pelo app desktop; o payload/historico do ChatView vira 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 --noEmit found: O resumo da quick task e o codigo atual convergem para a mesma cadeia causal: llama_get_memory pode retornar NULL na segunda sessao; o codigo antigo seguia em frente e deixava o KV cache anterior contaminando o prefill. Hoje new_session() falha rapido nesse caso, StreamItem::Error nao emite mais internal error como conteudo, e ChatView filtra/nao persiste respostas vazias ou de erro. Os commits d919879, 44875aa, abb9db0 e 9da25c3 registram 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"]