Ejecute CrucibleForge con sus propios modelos: Guía de instalación
- Categoría
- IA y LLM Local
- Publicado
- 5 noviembre 2026
- Actualizado
- 5 noviembre 2026
- Por
- Jacob Lloyd — escrito con ayuda de IA, después del proyecto
- Tiempo de lectura
- 9 min de lectura

En palabras simples: CrucibleForge es la herramienta gratuita y de código abierto que genera todas las puntuaciones en el tablero de MakoBench. En esta página se explica cómo instalarla, conectarla a un modelo local o alojado, ejecutar una prueba rápida y leer los resultados. Si no cuenta con una GPU, puede solicitarnos que ejecutemos su modelo en nuestro propio hardware.
CrucibleForge es la herramienta de código abierto que genera todas las puntuaciones en el MakoBench board. Es gratuita (licencia MIT-0, sin condiciones) y puede utilizarse con sus propios modelos, en su propia máquina. Esta página explica cómo instalarla y ejecutarla por primera vez. Todos los comandos que se muestran a continuación se ejecutaron en una copia recién clonada del repositorio público; el resultado de dichas ejecuciones se incluye aquí tal cual. ¿No cuenta con GPU o no tiene tiempo? Solicítenos que ejecutemos su modelo en nuestro equipo.
¿No dispone de GPU? Solicítenos que ejecutemos su modelo en nuestro equipo.
Solicite la ejecución de un modelo Voten por el siguiente modelo a probar
No necesita una GPU para ejecutar CrucibleForge; solo requiere un endpoint para realizar las pruebas. El formulario de solicitud está pensado para modelos que usted no pueda alojar por sí mismo.
Resumen rápido
- Cuatro comandos son suficientes para pasar de la clonación del repositorio a la ejecución del benchmark:
uv sync,config --init,status,all. - Cualquier endpoint compatible con OpenAI sirve. Ollama, LM Studio, llama.cpp, vLLM o cualquier API alojada.
- La máquina donde se ejecuta CrucibleForge no necesita GPU. Un modelo local tarda aproximadamente entre 25 y 30 minutos en procesarse, incluyendo la evaluación.
- Pruebe primero la prueba rápida. Nuestra ejecución duró 1,6 minutos y costó $0,0229.
- La prueba rápida no genera una puntuación. Solo cubre 4 de los 33 casos de prueba del MakoBench, por lo que no se obtiene ni un total ni un ranking.
¿Qué necesita antes de comenzar?
- Python 3.12 o una versión más reciente con
uv, o Docker.uvse encargará de instalar Python por usted. - Un modelo para probar que esté detrás de un endpoint
/chat/completionscompatible con OpenAI. - Un “juez”, que puede ser cualquier modelo de instrucciones capaz, ya sea local o alojado en la nube. El código se evalúa ejecutándolo, pero para Chat se requiere un juez.
- En Linux,
bubblewrap(bwrap). El código generado por el modelo se ejecuta dentro de este entorno. En Windows y macOS no existe bubblewrap; en ese caso debe usar--allow-unsandboxedo utilizar la imagen de Docker, donde el contenedor actúa como sandbox.
¿Cómo se instala?
Esta es la forma nativa en Linux. Docker es el método más sencillo si prefiere no instalar herramientas de Python. El archivo README incluye bloques de código listos para copiar en Windows, Linux y macOS; en todos los casos, Docker Desktop o Compose se presentan como el método 1. Para esta página, no utilizamos el método basado en Docker.
git clone https://github.com/LaserLloyd/CrucibleForge.git
cd CrucibleForge
uv sync --python 3.13
uv run crucibleforge --version
crucibleforge 4.0.1
Se trata de la versión 4.0.1, la versión pública actual al momento de redactar este texto. Ahora, cree su archivo de configuración:
uv run crucibleforge config --init
wrote models.yaml - edit providers/models, then `crucibleforge status`
El archivo de ejemplo incluye proveedores como LM Studio, Ollama, llama.cpp o cualquier servidor local, DeepSeek, OpenRouter, OpenAI y Open WebUI; además, hay cuatro modelos de ejemplo. Nada se ejecutará hasta que active uno de ellos.
¿Cómo se conecta el modelo?
models.yaml necesita un proveedor, un modelo y un “juez”.
- Proveedor. Es el lugar donde se sirve el modelo. Cualquier servidor que siga el protocolo
/chat/completionsfunciona contype: openai. Ejemplos locales del README:http://localhost:11434/v1para Ollama,http://localhost:1234/v1para LM Studio,http://localhost:8000/v1para vLLM. Una API alojada requiereapi_key_env: NAME_OF_ENV_VAR. La clave en sí nunca debe incluirse en el archivo. - Modelo. Debe ser una entrada que incluya un
name, elprovider, elmodel_idque conoce el servidor y uncontext_length. - Juez. Se indica en cada ejecución mediante
--judge provider:model_id.
Para ver qué ofrece un servidor, hágale una consulta. Este es un proveedor alojado cuyo acceso se gestiona mediante una clave en el entorno:
uv run crucibleforge models discover deepseek
* deepseek-flash
* deepseek-v4-pro
2 models on deepseek (* = in registry)
El asterisco indica que el modelo ya está registrado. El archivo de ejemplo incluye habilitado deepseek-flash, por lo que no fue necesario realizar ninguna modificación para nuestra prueba. Para su propio modelo, agregue una entrada similar a esta:
models:
- name: my-model
provider: ollama
model_id: qwen3:8b
context_length: 32768
¿Cómo se verifica la configuración?
export DEEPSEEK_API_KEY=... # only for a hosted provider or judge
uv run crucibleforge status
Si la clave no está configurada, el resultado del estado para el proveedor hospedado se ve así (se han omitido las líneas irrelevantes):
suite revision: 4.0.1+e3d1c6fb
providers:
ollama openai http://localhost:11434/v1 DOWN conc=8
deepseek openai https://api.deepseek.com/v1 UP conc=8 key: $DEEPSEEK_API_KEY (NOT SET)
reachable, but it wants an API key: set $DEEPSEEK_API_KEY (HTTP 401)
registry (models):
[enabled ] deepseek-flash deepseek deepseek-flash $0.14/0.28 per 1M
cases: 393 total (235 hard)
smoke subset: 37 cases
benchmark (bench): 33 cases
DOWN significa que no hubo respuesta desde esa dirección; esto es lo esperado en el caso de servidores locales que no estábamos ejecutando. UP con un 401 indica que el host es accesible, pero requiere una clave para funcionar. El número de casos es importante: el conjunto completo cuenta con 393 casos, y el sistema utiliza 33 de ellos.
¿Cuánto cuesta ejecutar una tarea antes de iniciarla?
Agregue --plan a cualquier tarea y no se ejecutará nada. El sistema mostrará qué se ejecutaría y una estimación del tiempo necesario:
uv run crucibleforge all --models deepseek-flash --judge deepseek:deepseek-v4-flash --plan
T1 - every model: 29 rows (29 cases) + 4 perf probes
one round - hosted API (nothing loaded): 29 rows, 8 requests at once
estimate: generation 18.5 min; judge 16.0 min ... -> ~34 min
(plan only - no model, provider or judge was called; times are estimates)
Esa es la ejecución completa de una tarea en un modelo alojado: según la propia estimación de la herramienta, toma unos 34 minutos. Se trata de una estimación, no de una medición real. Para un modelo local, el README indica que el tiempo aproximado es de 25 a 30 minutos en una GPU potente.
¿Cómo se ve una ejecución de prueba?
El indicador --smoke ejecuta un pequeño conjunto de datos etiquetados de principio a fin: generación, evaluación e informe. Es la forma más rápida de comprobar que su configuración funciona correctamente. Utilizamos DeepSeek Flash tanto como modelo como juez; esta es la combinación que se indica en la guía de inicio rápido del README. La ejecución se realizó fuera de las horas pico de DeepSeek.
uv run crucibleforge all --smoke --models deepseek-flash --judge deepseek:deepseek-v4-flash --yes
... profile bench: 4 cases, thinking cap 24576, judge deepseek:deepseek-v4-flash
... link check passed: deepseek reachable, data channel OK
... run: models=['deepseek-flash'] cases=4 smoke=True fresh=False
... [deepseek-flash] RD1-marisol r1 done (15 rows)
... judging done: 1 rows, 0 unparsable judge verdicts, 0 empty generations, 0 errored
run summary:
deepseek-flash: 15 rows, load 0.0s (deepseek), $0.0229
timing: generation 1.2 min, judge 14 s, report 8 s, total 1.6 min
wrote results/report.md, results/failures.md, results/report.html
La ejecución duró 1,6 minutos y costó $0,0229. Los 15 registros incluyen un caso de role-play y varias pruebas de velocidad. Hay dos advertencias que vale la pena conocer:
- La API del juez rechazó una solicitud de salida estructurada; por eso CrucibleForge recurrió a un formato JSON de texto libre para esa sesión. Aun así, se obtuvieron las puntuaciones correspondientes.
- El juez no superó la verificación de calibración en el caso de textos con contenido para adultos. En consecuencia, CrucibleForge evaluó únicamente los demás registros y dejó pendientes los relacionados con contenido para adultos, a la espera de un juez capaz de manejarlos. Según el README, la mayoría de los jueces alojados se comportan de esta manera. Esas puntuaciones aparecen junto al tablero de resultados, pero nunca se suman al total general.
¿Cómo se interpreta el resultado?
Abra results/report.html en un navegador, o lea results/report.md. Nuestra prueba de verificación imprimió una sola fila:
| Model | Overall | Class | Coding | Chat | tok/s | Suite | Notes |
| deepseek-flash | - | - | - | 2.5 +/- 0.1 | 159.7 | 4.0.1 | partial (4/33 cases); judged by deepseek-v4-flash |
El valor de 2.5 correspondiente a Chat no es una puntuación del modelo. Se trata del único caso de role-play que se ejecutó, dentro de la parte de Chat a la que pertenece ese caso. La fila indica parcial (4/33 casos); un modelo parcial no tiene valor “Overall”, ni “Class” ni clasificación alguna. Esa es también la regla en el tablero principal. Ejecute el conjunto completo de pruebas para obtener un Total real (Código más Chat, 20 en total). Para saber qué significa cada columna, lea Cómo funciona MakoBench y Qué prueba MakoBench.
La velocidad (tok/s) solo sirve para comparar modelos ejecutados en el mismo hardware. La velocidad de un modelo alojado depende de su proveedor y del grado de carga que este tenga en ese momento.
¿Cómo se ejecuta el benchmark completo?
uv run crucibleforge all --models my-model --judge my-provider:my-judge --yes
Agregue --fresh para archivar primero la transcripción anterior del modelo. Los resultados se guardan en results/, junto a models.yaml: el informe de puntuaciones, las incidencias, el informe HTML y una transcripción de cada prompt y respuesta. La interfaz web se inicia con un único comando (uv run crucibleforge gui) y, por defecto, solo escucha en el loopback.
Algunas cosas que hay que saber antes
- Los casos de programación ejecutan código escrito por el modelo. Use bubblewrap en Linux o la imagen de Docker en otros sistemas.
--allow-unsandboxedpermite ejecutar ese código como usted, con acceso a sus propios archivos. - Las ejecuciones alojadas tienen un costo. Ejecute primero
--plany la prueba de humo. - El conjunto de pruebas incluye casos de ficción para adultos que aparecen en el tablero pero nunca se suman al Total. El README contiene una nota sobre su contenido.
- El juez modifica las puntuaciones de Chat. En el tablero de MakoBench, el juez es Gemma 4 31B (versión “hereje” sin censura, Q8) en nuestro propio equipo con GPU. Sus valores de Chat solo coincidirán con los del tablero si utiliza el mismo juez; el código se califica mediante su ejecución, por lo que la comparación es posible en cualquier caso.
- Las puntuaciones se comparan dentro de una misma versión del conjunto de pruebas. Esta página trata sobre la versión 4.0; consulte qué cambió en la Suite 4.0.
¿Se verificó todo correctamente?
Casi. También ejecutamos uv run crucibleforge cases verify, que vuelve a calcular las respuestas correctas de forma offline. Este proceso revisó 393 casos y reportó uno con problemas: un caso del banco de código cuya solución de referencia excedió el tiempo límite en una prueba de señales. Esa ejecución compartió nuestra máquina con otras tareas, por lo que no podemos determinar si se trata de un error real o simplemente de un equipo lento. Aún no hemos informado de ello a los desarrolladores. Si usted se encuentra con el mismo caso, no está solo.
¿Quiere que lo ejecutemos por usted?
¿No cuenta con GPU para esto? Solicítenos que ejecutemos su modelo en nuestro equipo.
Solicite un modelo Voten por lo que vendrá después
Nosotros decidimos qué modelos se ejecutan, ya que un modelo grande debe caber en nuestro hardware. Los votos determinan el orden predeterminado en la pestaña de votaciones. Los resultados se muestran en el tablero de MakoBench.
Relacionado: Cómo funciona MakoBench, Suite 4.0: qué ha cambiado y el tablero.