13 KiB
Kimi K2 Handoff: Codigo Fuente y Qué Hay Que Arreglar
IMPORTANT:
Read these files first:
C:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\KIMI_K2_START_HERE.mdC:\ProgramData\Ableton\Live 12 Suite\Resources\MIDI Remote Scripts\KIMI_K2_ACTIVE_HANDOFF.md
This document is now historical context.
Some statements below are outdated because the project moved forward. Examples of things that changed after this document was written:
- the active runtime now prefers
abletonmcp_init.py server.pyno longer has duplicate MCP tool registrations
Use this file for background only, not as the first source of truth.
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:
300archivos de codigo/config/docs detectados por extension.122archivos bajoAbletonMCP_AI.56archivos dentro del arbol backupAbletonMCP_AI_BAK_20260328_200801.40modulos Python en el arbol activoAbletonMCP_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.jsony/opencode.jsonapuntan a/mcp_wrapper.py/mcp_wrapper.pyresuelve 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.pyno 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.pySyntaxError: 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:
93tools registradas85nombres unicos
Duplicados confirmados:
apply_clip_fadesapply_sidechain_pumpgenerate_with_human_feelhumanize_setinject_pattern_fillsreset_diversity_memorysuggest_key_changewrite_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_memoryreset_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éneroraÃzquÃmicaIntegració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
chdireinsertdePYTHONPATHaAbletonMCP_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 toolhola/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.pyplace_perc_audio.pyscan_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.pyen runtime canonico - mover a ese runtime los aliases y la logica minima que hoy existen solo en el backup
- cambiar
/AbletonMCP_AI/__init__.pyy/AbletonMCP_AI/Remote_Script.pypara que carguen primeroabletonmcp_init.py - dejar
AbletonMCP_AI_BAK_20260328_200801fuera del path activo
Razon:
abletonmcp_init.pyya tiene un modelo mas ordenado deschedule_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_infoget_tracksget_all_trackscreate_trackcreate_midi_trackcreate_audio_trackcreate_clipadd_notes_to_clipadd_notesplaystopstart_playbackstop_playbackgenerate_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_messageo cola, una operacion corta por vez - evitar bloques largos de
delete/create/load browser/add notesen 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.pymcp_1429/abletonmcp_server.py- scripts utilitarios legacy del root
- arbol backup una vez migrado lo necesario
Orden Recomendado De Trabajo
- Congelar la topologia del repo y definir
source of truth - Cambiar los shims de Ableton para dejar de cargar el backup primero
- Portar/ajustar los comandos faltantes al runtime canonico
- Arreglar
generate_trackcon mutaciones cortas y seguras para Live - Limpiar tools duplicadas en
server.py - Borrar o archivar
server_v2.pysi no se va a rescatar - Normalizar encoding UTF-8 sin mojibake
- Reemplazar rutas absolutas innecesarias por resolucion relativa
- Crear una verificacion reproducible
Validacion Minima Que Kimi K2 Tiene Que Poder Dejar
MCP
claude mcp listmuestraableton-mcp-aiconectadoopencode mcp listmuestraableton-mcp-aiconectadoinitializeytools/listdevuelven la lista esperada sin warnings de duplicados
Socket Ableton
get_session_inforesponde en menos de 2sget_tracksresponde establecreate_midi_trackycreate_clipno 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.pycomo si fuera el entrypoint principal - No confiar en el backup como fuente de verdad de largo plazo
- No tocar solo
server.pydel 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_trackbloquea 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.