v2.10.0 — Proveedor LLM local multi-GPU (llama.cpp) + descarga de modelos HF - #9
Merged
Merged
Conversation
Para que los asistentes AI (Codex, Copilot) encuentren las instrucciones del proyecto en CLAUDE.md al clonar en otra maquina.
…nado) + passthrough Anthropic nativo
…) con Anthropic Messages API nativa Dominio: - Nuevo services/llamacpp_service.py: detección de GPUs (llama-server --list-devices), tensor-split proporcional a VRAM libre por GPU, estimación de ajuste modelo+KV vs VRAM (warning, no gate), start/stop/status con PID file y guard de slots ocupados antes de matar el server. - models/provider.py: campos anthropic_native (provider expone /v1/messages nativo) y local_launch (config de lanzamiento local). - providers_service: nuevo provider por defecto llamacpp (Vulkan multi-GPU heterogéneo, puerto 4002, anthropic_native). Aplicación: - api/llamacpp.py: router /api/llamacpp — devices, status, start, stop (409 si hay slots procesando y no se fuerza). - api/messages.py: tercera rama en /v1/messages — passthrough verbatim para providers anthropic_native (llama-server, LM Studio >=0.4.1, Ollama 2026+) sin litellm ni traducción OAI; reescritura de model al active_model; error accionable si el server local no responde. - api/settings.py: endpoint /settings/connection-info con IP LAN detectada para configurar Claude Code en PCs remotos. Infraestructura: - Frontend: componente LlamaCppPanel (GPUs detectadas con VRAM, config GGUF/exe/ctx, start/stop con confirmación de force), tipos LlamaDevice/LlamaStatus/LocalLaunchConfig, llamacppApi, hooks useLlamaCpp; Settings muestra la IP LAN real en el snippet de conexión remota. - CLAUDE.md: fila de llamacpp_service y párrafo de anthropic_native en el registry. Pruebas: - tests/test_llamacpp_service.py: 15 tests (parse de devices, tensor-split proporcional, fit, cmdline single/multi GPU y split manual, guard de stop con force). - tests/test_messages_native.py: 5 tests (URL destino, reescritura de model, dedupe de sufijo /v1, relay SSE, sin headers de auth sin env var). Cobertura global del proyecto: suite backend 82 passed; tsc frontend sin errores.
…rranque y logs de llama-server
Dominio:
- Nuevo services/hf_models_service.py: búsqueda de repos GGUF en HF API, listado de archivos con agrupación de multi-parte (-NNNNN-of-NNNNN), descargas en background con progreso/velocidad en memoria, resume por Range sobre .part, cancelación y listado de modelos locales.
- llamacpp_service: tail_logs (lectura eficiente de últimos 64KB de out/err) y autostart_if_configured (arranque al boot solo con flag autostart explícito y model_path válido).
Aplicación:
- api/llamacpp.py: endpoints /hf/search, /hf/files, /hf/download, /hf/downloads, DELETE /hf/download/{id}, /models, /use-model y /logs.
- main.py: hook de autostart en lifespan (task en background, sin bloquear arranque).
Infraestructura:
- Frontend: componente ModelDownloader (búsqueda HF, descarga con barra de progreso y velocidad, cancelar, modelos locales con "Usar"), secciones colapsables de Modelos y Logs en LlamaCppPanel, toggle de auto-arranque; tipos HFRepo/HFFile/HFDownload/LocalModel y llamacppApi ampliado.
Pruebas:
- tests/test_hf_models_service.py: 11 tests (group_multipart, expand_parts, download_id, list_local_models con multi-parte, cancel, headers HF_TOKEN, dedupe de start_download).
Cobertura global del proyecto: suite backend 93 passed; tsc frontend sin errores.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Resumen
llama-serverlocal con detección de GPUs y--tensor-splitautomático proporcional a VRAM libre (multi-GPU heterogénea AMD via Vulkan, ej. R9700 32GB + RX 7800 XT 16GB).anthropic_native(llama-server, LM Studio ≥0.4.1, Ollama 2026+) reciben/v1/messagesverbatim — sin litellm ni traducción OAI; tool-use e imágenes intactos./settings/connection-info(IP LAN real) para conectar Claude Code desde otros PCs.force.Test plan
tsc --noEmitfrontend limpioSpec:
docs/superpowers/specs/2026-08-18-local-llm-multigpu-provider-design.md🤖 Generated with Claude Code