Files
ableton-mcp-ai/KIMI_K2_CODEBASE_FIXES.md
2026-03-30 02:35:02 -03:00

12 KiB
Raw Blame History

Kimi K2 Handoff: Codigo Fuente y Qué Hay Que Arreglar

Objetivo

Este documento es un handoff tecnico para que Kimi K2 pueda entrar al proyecto sin perder tiempo en arboles duplicados ni archivos muertos. El foco es el codigo fuente que afecta al MCP, al Remote Script de Ableton y a la generacion musical.

Alcance leido

Leido/inventariado en este workspace:

  • 300 archivos de codigo/config/docs detectados por extension.
  • 122 archivos bajo AbletonMCP_AI.
  • 56 archivos dentro del arbol backup AbletonMCP_AI_BAK_20260328_200801.
  • 40 modulos Python en el arbol activo AbletonMCP_AI/AbletonMCP_AI/MCP_Server.

El arbol activo del MCP Server contiene estos modulos:

  • Core: server.py, server_v2.py, start_server.py, __init__.py
  • Generacion: song_generator.py, human_feel.py, enhanced_device_automation.py, full_integration.py, self_ai.py, validation_system_fix.py
  • Samples/audio: sample_index.py, sample_manager.py, sample_selector.py, audio_analyzer.py, audio_arrangement.py, audio_fingerprint.py, audio_key_compatibility.py, audio_mastering.py, audio_organizer.py, audio_resampler.py, audio_soundscape.py, reference_listener.py, reference_stem_builder.py, role_matcher.py, vector_manager.py, segment_rag_builder.py
  • Diagnostico/QA: socket_smoke_test.py, health_check.py, benchmark.py, retrieval_benchmark.py, sample_system_demo.py, scan_audio.py, template_analyzer.py, validate_key_detection.py
  • Tests: tests/test_human_feel.py, tests/test_integration.py, tests/test_sample_selector.py

Source Of Truth Real

Hoy el sistema no tiene una sola fuente de verdad.

Claude Code y opencode

  • /.mcp.json y /opencode.json apuntan a /mcp_wrapper.py
  • /mcp_wrapper.py resuelve el codigo y termina levantando:
    • /AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server.py

Ableton Live

  • Ableton carga:
    • /AbletonMCP_AI/__init__.py
    • /AbletonMCP_AI/Remote_Script.py
  • Ambos son shims.
  • Esos shims priorizan:
    • /AbletonMCP_AI/AbletonMCP_AI_BAK_20260328_200801/Remote_Script.py
  • Solo si eso no existe, hacen fallback a:
    • /abletonmcp_init.py

Consecuencia

El MCP de Claude/opencode usa una implementacion y Ableton Live ejecuta otra. Ese desacople es hoy el problema principal del proyecto.

Hallazgos Verificados

P0. El runtime activo de Ableton sigue siendo un backup

Archivos:

  • /AbletonMCP_AI/__init__.py
  • /AbletonMCP_AI/Remote_Script.py

Ambos cargan primero AbletonMCP_AI_BAK_20260328_200801/Remote_Script.py. Mientras eso siga asi:

  • los arreglos hechos en abletonmcp_init.py no son necesariamente los que corre Live
  • el MCP Server y el Remote Script evolucionan por caminos distintos
  • Kimi K2 puede editar el archivo "correcto" y no mover el runtime real

P0. generate_track hace que Ableton entre en Audio queue timeout

Evidencia observada en C:\Users\ren\AppData\Roaming\Ableton\Live 12.0.15\Preferences\Log.txt:

  • Comando recibido: generate_track
  • ~3 segundos despues: Internal Error: From 5 to Audio queue timeout.

Esto ya no es un problema de deteccion del puerto ni de MCP handshake. Es un problema de ejecucion del Remote Script dentro de Live.

Hipotesis mas fuerte y consistente con el codigo:

  • el Remote Script activo ejecuta operaciones largas de Live API durante generate_track
  • parte de ese trabajo se hace en el hilo principal de Live en bloques demasiado grandes
  • Live se queda sin respuesta y termina cerrando la conexion o entrando en recovery

Archivos involucrados:

  • /AbletonMCP_AI/AbletonMCP_AI_BAK_20260328_200801/Remote_Script.py
  • /abletonmcp_init.py

P0. Hay dos topologias del repo compitiendo al mismo tiempo

git status --short muestra sintomas de reubicacion parcial:

  • muchos archivos aparecen como D AbletonMCP_AI/MCP_Server/...
  • al mismo tiempo hay archivos nuevos bajo ?? AbletonMCP_AI/AbletonMCP_AI/...

Eso significa que el repo quedo en una migracion a medias:

  • arbol viejo borrado
  • arbol nuevo agregado
  • wrappers y scripts mezclados entre ambos

Hasta normalizar esto, cualquier agente se puede equivocar de path.

P1. server_v2.py no compila

Comando usado:

python -m compileall AbletonMCP_AI\AbletonMCP_AI\MCP_Server

Error objetivo:

  • /AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server_v2.py
  • SyntaxError: name '_ableton_connection' is used prior to global declaration

El mismo error existe en la copia backup:

  • /AbletonMCP_AI/AbletonMCP_AI_BAK_20260328_200801/MCP_Server/server_v2.py

server_v2.py hoy es codigo muerto o roto. No debe usarse como base hasta corregirlo o retirarlo.

P1. server.py registra tools duplicadas

Chequeo AST sobre el archivo activo:

  • 93 tools registradas
  • 85 nombres unicos

Duplicados confirmados:

  • apply_clip_fades
  • apply_sidechain_pump
  • generate_with_human_feel
  • humanize_set
  • inject_pattern_fills
  • reset_diversity_memory
  • suggest_key_change
  • write_volume_automation

Archivo:

  • /AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server.py

Esto explica los warnings de duplicados y hace mas dificil mantener el contrato MCP.

P1. song_generator.py tiene helpers duplicados

Duplicados detectados en el mismo archivo:

  • _get_pattern_variant_penalty
  • _record_pattern_variant_usage
  • _decay_pattern_variant_memory
  • reset_pattern_variant_memory

Archivo:

  • /AbletonMCP_AI/AbletonMCP_AI/MCP_Server/song_generator.py

No necesariamente rompe en runtime, pero hace el comportamiento ambiguo y facilita regresiones.

P1. Hay mojibake/encoding roto en varios modulos

Ejemplos visibles:

  • género
  • raíz
  • química
  • Integración

Archivos con señales claras:

  • /AbletonMCP_AI/AbletonMCP_AI/MCP_Server/song_generator.py
  • /AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server_v2.py
  • /AbletonMCP_AI/AbletonMCP_AI_BAK_20260328_200801/Remote_Script.py
  • algunos scripts utilitarios legacy

Esto afecta:

  • logs
  • descripciones de tools
  • prompts internos
  • mantenibilidad general

P1. start_server.py apunta a paths viejos

Archivo:

  • /AbletonMCP_AI/AbletonMCP_AI/MCP_Server/start_server.py

Problema:

  • hace chdir e insert de PYTHONPATH a AbletonMCP_AI\MCP_Server
  • ese ya no es el arbol real usado por mcp_wrapper.py

Conclusion:

  • es un entrypoint obsoleto
  • puede levantar el codigo equivocado

P1. Hay mas de un servidor MCP en el repo

Servidores detectados:

  • /AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server.py -> FastMCP real
  • /AbletonMCP_AI/AbletonMCP_AI/MCP_Server/server_v2.py -> roto
  • /mcp_1429/server.py -> servidor de prueba con tool hola
  • /AbletonMCP_AI/mcp_1429/server.py -> misma idea, duplicado
  • /abletonmcp_server.py -> servidor FastMCP legacy en root

Esto no es necesariamente un bug funcional inmediato, pero si es deuda tecnica fuerte. Un nuevo agente puede arrancar el servidor incorrecto muy facil.

P1. El Remote Script backup tiene warning por string mal escapado

Durante compileall aparecio:

  • SyntaxWarning: "\P" is an invalid escape sequence

Archivo:

  • /AbletonMCP_AI/AbletonMCP_AI_BAK_20260328_200801/Remote_Script.py

No es el crash principal, pero confirma que ese runtime backup no esta limpio.

P2. Tests existen pero no hay runner disponible en el entorno actual

Intento realizado:

python -m pytest -q

Resultado:

  • No module named pytest

Hay tests, pero hoy no existe una via reproducible de correrlos desde este entorno Windows tal como esta.

P2. Hay muchas rutas absolutas hardcodeadas

Ejemplos:

  • C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\...
  • 127.0.0.1:9877
  • scripts root que asumen layout fijo

Archivos afectados:

  • start_server.py
  • place_perc_audio.py
  • scan_audio.py
  • scripts socket de root
  • shims y wrappers

Esto vuelve fragil cualquier cambio de layout.

P2. Hay scripts auxiliares legacy que usan protocolos viejos o parciales

Ejemplos:

  • /generate_song.py
  • /generate_track.py
  • /fix_connection.py
  • /check_status.py
  • /temp_socket_cmd.py
  • /validate_script.py

No parecen ser la ruta principal del producto, pero si se usan para diagnostico pueden inducir falsos positivos porque mezclan comandos legacy y supuestos viejos.

Recomendacion De Arquitectura Para Kimi K2

1. Elegir una sola implementacion canonica del Remote Script

Recomendacion:

  • convertir /abletonmcp_init.py en runtime canonico
  • mover a ese runtime los aliases y la logica minima que hoy existen solo en el backup
  • cambiar /AbletonMCP_AI/__init__.py y /AbletonMCP_AI/Remote_Script.py para que carguen primero abletonmcp_init.py
  • dejar AbletonMCP_AI_BAK_20260328_200801 fuera del path activo

Razon:

  • abletonmcp_init.py ya tiene un modelo mas ordenado de schedule_message + cola de respuesta para comandos Live API
  • el backup hoy concentra la logica que esta rompiendo Live

2. Hacer que MCP Server y Remote Script compartan el mismo contrato

Contrato minimo que debe quedar estable:

  • get_session_info
  • get_tracks
  • get_all_tracks
  • create_track
  • create_midi_track
  • create_audio_track
  • create_clip
  • add_notes_to_clip
  • add_notes
  • play
  • stop
  • start_playback
  • stop_playback
  • generate_track

No depender de traducciones ambiguas si el runtime no las soporta de verdad.

3. Rehacer generate_track para no bloquear el hilo de Live

Objetivo:

  • nunca correr toda la generacion en un solo bloque de hilo principal
  • hacer operaciones pequenas sobre Live API
  • si hay trabajo pesado de CPU o de planificacion, dejarlo fuera del hilo principal

Patron recomendado:

  • planificacion/configuracion fuera del hilo principal
  • mutaciones de Live via schedule_message o cola, una operacion corta por vez
  • evitar bloques largos de delete/create/load browser/add notes en una sola llamada monolitica

4. Limpiar duplicados de server.py

Hay que dejar un solo registro por tool y una sola definicion por helper. Mientras haya 93 registros para 85 tools:

  • los warnings van a seguir
  • el contrato MCP va a seguir siendo ambiguo

5. Retirar o aislar codigo muerto

Mover fuera del camino activo o documentar como obsoleto:

  • server_v2.py
  • mcp_1429/
  • abletonmcp_server.py
  • scripts utilitarios legacy del root
  • arbol backup una vez migrado lo necesario

Orden Recomendado De Trabajo

  1. Congelar la topologia del repo y definir source of truth
  2. Cambiar los shims de Ableton para dejar de cargar el backup primero
  3. Portar/ajustar los comandos faltantes al runtime canonico
  4. Arreglar generate_track con mutaciones cortas y seguras para Live
  5. Limpiar tools duplicadas en server.py
  6. Borrar o archivar server_v2.py si no se va a rescatar
  7. Normalizar encoding UTF-8 sin mojibake
  8. Reemplazar rutas absolutas innecesarias por resolucion relativa
  9. Crear una verificacion reproducible

Validacion Minima Que Kimi K2 Tiene Que Poder Dejar

MCP

  • claude mcp list muestra ableton-mcp-ai conectado
  • opencode mcp list muestra ableton-mcp-ai conectado
  • initialize y tools/list devuelven la lista esperada sin warnings de duplicados

Socket Ableton

  • get_session_info responde en menos de 2s
  • get_tracks responde estable
  • create_midi_track y create_clip no cierran Live

Generacion

  • generate_track(genre=\"reggaeton\", bpm=92, key=\"Dm\", style=\"perreo\", structure=\"standard\")
  • no produce Audio queue timeout
  • no cierra Ableton
  • devuelve respuesta MCP valida

Que No Hacer

  • No editar primero server_v2.py como si fuera el entrypoint principal
  • No confiar en el backup como fuente de verdad de largo plazo
  • No tocar solo server.py del MCP esperando que eso arregle Live
  • No dejar wrappers apuntando a un arbol y Live cargando otro

Resumen Ejecutivo

El problema real ya no es "Claude no ve el MCP" ni "Ableton no escucha en 9877". El problema real es de arquitectura:

  • MCP y Live corren implementaciones distintas
  • Live sigue cargando un runtime backup
  • generate_track bloquea o satura el hilo de Live
  • el repo tiene duplicados, tools duplicadas y codigo legacy compitiendo

Si Kimi K2 arregla eso en ese orden, el resto pasa de caos operativo a mantenimiento normal.