Ornith-1.0: modelo open source de automejora para codificación agéntica
(github.com/deepreinforce-ai)- Ornith-1.0 es un modelo open source de automejora para codificación agéntica; ofrece configuraciones 9B Dense, 31B Dense, 35B MoE y 397B MoE, y fue postentrenado sobre Gemma 4 y Qwen 3.5
- Su framework de entrenamiento usa aprendizaje por refuerzo para aprender a generar no solo rollouts de soluciones, sino también el scaffold que guía esos rollouts, optimizando en conjunto el scaffold y la solución resultante
- Según el README, Ornith-1.0 logra rendimiento de punta frente a modelos open source de tamaño similar en benchmarks de codificación como Terminal-Bench 2.1, SWE-Bench, NL2Repo y OpenClaw
- Todos los checkpoints exponen una interfaz compatible con OpenAI y admiten una ventana de contexto de 256K tokens; pueden ejecutarse con vLLM, SGLang, Hugging Face Transformers, llama.cpp, Ollama, entre otros
- Tiene licencia MIT, es accesible en todo el mundo sin restricciones regionales, y puede conectarse a frameworks agénticos y CLI de codificación separando bloques de razonamiento y llamadas a herramientas mediante reasoning_content y tool_calls
Resumen del modelo y método de entrenamiento
- Ornith-1.0 es una familia de modelos open source de automejora para codificación agéntica
- Los tamaños disponibles son 9B Dense, 31B Dense, 35B MoE y 397B MoE, postentrenados sobre Gemma 4 y Qwen 3.5
- El framework de entrenamiento de automejora usa aprendizaje por refuerzo
- El modelo aprende a generar no solo rollouts de soluciones, sino también el scaffold que guía esos rollouts
- Optimiza en conjunto el scaffold y la solución resultante para encontrar mejores trayectorias de búsqueda y soluciones de mayor calidad
- La licencia es MIT, con acceso global y sin restricciones regionales
Resultados de benchmarks
- Cada modelo se comparó con modelos de referencia acordes a su tamaño, y los tres modelos usaron el mismo harness y la misma configuración de decodificación
-
Ornith-1.0-9B
- En Terminal-Bench 2.1 registró 43.1 con referencia Terminus-2 y 40.6 con referencia Claude Code
- Registró 69.4 en SWE-bench Verified, 42.9 en SWE-bench Pro y 52 en SWE-bench Multilingual
- Registró 27.2 en NL2Repo y 63.1 de promedio en Claw-eval
- En SWE Atlas registró 17.9 en QnA, 16.6 en RF y 15.3 en TW
-
Ornith-1.0-35B
- En Terminal-Bench 2.1 registró 64.2 con referencia Terminus-2 y 62.8 con referencia Claude Code
- Registró 75.6 en SWE-bench Verified, 50.4 en SWE-bench Pro y 69.3 en SWE-bench Multilingual
- Registró 34.6 en NL2Repo y 69.8 de promedio en Claw-eval
- En SWE Atlas registró 37.1 en QnA, 29.7 en RF y 27.8 en TW
-
Ornith-1.0-397B
- En Terminal-Bench 2.1 registró 77.5 con referencia Terminus-2 y 78.2 con referencia Claude Code
- Registró 82.4 en SWE-bench Verified, 62.2 en SWE-bench Pro y 78.9 en SWE-bench Multilingual
- Registró 48.2 en NL2Repo y 77.1 de promedio en Claw-eval
- En SWE Atlas registró 41.2 en QnA, 42.6 en RF y 39.1 en TW
Configuración de evaluación
- La evaluación Terminal-Bench 2.1 Terminus-2 usa el framework Harbor/Terminus-2, parser=json, temperature=1.0, top_p=1.0 y una ventana de contexto de 128K
- Cada ejecución usa un timeout de 4 horas, 32 núcleos de CPU y 48 GB de RAM, y el resultado es el promedio de 5 ejecuciones
- El Qwen chat template se ajustó para mantener la consistencia entre entrenamiento e inferencia, y Harbor se modificó para alinearse con la clave reasoning_content de vLLM
- La evaluación Terminal-Bench 2.1 Claude Code usa Claude Code 2.1.126, parser=json, temperature=1.0, top_p=1.0, max_new_tokens=131072, y reporta el promedio de 5 ejecuciones
- SWE-bench Verified / Pro / Multilingual usa el harness OpenHands, temperature=1.0, top_p=0.95 y una ventana de contexto de 256K
- SWE Atlas QnA / RF / TW usa el harness mini-SWE-agent, temperature=1.0, top_p=0.95 y una ventana de contexto de 128K, con promedio de 5 ejecuciones
- NL2Repo usa temperature=1.0, top_p=1.0, contexto de 400K, salida de 48K y anti-hacking filters
- ClawEval es un benchmark de código agéntico basado en la distribución de tareas reales de usuarios, y usa temperature=0.6 y contexto de 256K
Ejecución y checkpoints
- Ornith-1.0 es un reasoning model y, por defecto, el turno del assistant empieza con un bloque
<think> … </think>antes de devolver la respuesta final - La receta de serving activa el reasoning parser para devolver el chain-of-thought en un campo separado
reasoning_content, y activa el tool-call parser para exponer los bloques<tool_call>comotool_callsal estilo OpenAI - Las versiones de runtime requeridas son las siguientes
- Transformers ≥ 5.8.1
- vLLM ≥ 0.19.1
- SGLang ≥ 0.5.9
- Los parámetros de muestreo recomendados son
temperature=0.6,top_p=0.95,top_k=20- Para reproducir la configuración de los benchmarks reportados se usa
temperature=1.0
- Para reproducir la configuración de los benchmarks reportados se usa
- Todos los checkpoints exponen la misma interfaz compatible con OpenAI y admiten una ventana de contexto de 256K, es decir, 262,144 tokens
- Dense 9B es adecuado para una sola GPU de 80 GB
- Los checkpoints MoE se dividen en shards en nodos multi-GPU mediante tensor parallelism
- Checkpoints disponibles
- Ornith-1.0-9B: Dense de aproximadamente 9B, bf16, para serving en una sola GPU y fine-tuning
- Ornith-1.0-9B-GGUF: Dense de aproximadamente 9B, cuantización GGUF, para inferencia local con llama.cpp / Ollama
- Ornith-1.0-35B: MoE 35B, bf16, para serving multi-GPU en full precision
- Ornith-1.0-35B-FP8: MoE 35B, FP8, para serving que reduce la VRAM aproximadamente a la mitad en GPU con soporte FP8
- Ornith-1.0-35B-GGUF: MoE 35B, cuantización GGUF, para inferencia local con llama.cpp / Ollama
- Ornith-1.0-397B: MoE 397B, bf16, para serving multi-GPU en full precision
- Ornith-1.0-397B-FP8: MoE 397B, FP8, para serving eficiente en memoria en GPU con soporte FP8
API compatible con OpenAI y uso agéntico
- Cuando se ejecuta un servidor vLLM o SGLang, se puede llamar al endpoint
/v1/chat/completionscon un cliente compatible con OpenAI - El ejemplo de servidor local usa
base_url="http://localhost:8000/v1",api_key="EMPTY",model="Ornith-1.0" - En el mensaje de respuesta, reasoning_content contiene el trace de razonamiento de
<think>, ycontentcontiene la respuesta final - Si se pasan herramientas, Ornith-1.0 genera llamadas a funciones bien formadas, y el servidor las parsea al campo estándar tool_calls
- Los SDK compatibles con OpenAI pueden usar el mismo endpoint desde Python, Node.js,
curl, etc.
Frameworks compatibles y CLI de codificación
- Ornith-1.0 está optimizado para llamadas a herramientas y funciones de codificación agéntica
- Al ofrecer endpoint compatible con OpenAI y tool calling, puede usarse con frameworks agénticos estándar
- El README incluye ejemplos de conexión de herramientas mediante un servidor MCP y ejemplos de llamadas a herramienta de función
run_shell - Los harnesses y runtimes agénticos mostrados como ejemplo son los siguientes
- Hermes Agent: configuración de
OPENAI_BASE_URL,OPENAI_API_KEY,MODEL="Ornith-1.0" - OpenHands: uso de la ruta
openai/Ornith-1.0de LiteLLM y una base URL local - llama.cpp / Ollama: carga de builds GGUF de 9B y 35B para inferencia local
- Unsloth Studio: inferencia local o fine-tuning con
FastLanguageModel.from_pretrained - OpenClaw: configuración de un endpoint compatible con OpenAI apuntando al servidor Ornith
- Hermes Agent: configuración de
- Las CLI de codificación pueden conectarse configurando
OPENAI_BASE_URLyOPENAI_API_KEYhacia el endpoint de Ornith-1.0 - El ejemplo de OpenCode registra un provider local de Ornith en
~/.config/opencode/opencode.jsony usa el modeloOrnith-1.0
1 comentarios
Comentarios de Hacker News
Discusión anterior: https://news.ycombinator.com/item?id=48709744
https://swelljoe.com/post/will-it-mythos/: “El rendimiento no es muy bueno; solo encontró un bug que casi todos los modelos encontraron. Aun así, su desempeño en otros benchmarks en relación con su tamaño es sobresaliente. […] Incluso en chat sin herramientas rinde mal y alucina bastante. Ahora mismo estoy reproduciendo las pruebas con acceso completo a herramientas, incluyendo bash/Python; en ese caso este modelo podría ser competitivo”
Este es el primer fine-tuning de Qwen que no fue rechazado de inmediato por la comunidad de LLMs locales, e incluso en algunos casos lo recomiendan. Por el uso limitado que le di, está bien y propone soluciones creativas para problemas de programación. No esperaría que modelos de 9~35B te construyan una app completa con un clic. Parece que la mayoría de las quejas venían de esa expectativa
Con la mayoría de los modelos como Qwen, Gemma, Llama y gpt-oss, ahora mismo es realmente tedioso descubrir pequeñas trampas como tokens especiales, estructura del prompt y preferencias del modelo. Aun así, si te tomas el trabajo de ajustar un entorno de ejecución de agentes con prompts y parámetros bien aprendidos, puedes conseguir modelos que funcionen muy bien
¿Por qué estos modelos de “auto-mejora” nunca terminan mejorando hasta superar a los modelos de punta?
En mis pruebas, Ornith-1.0 35B fue un poco mejor que Qwen-3.6 35B
Mis pruebas consisten en agregar o modificar funcionalidades en una base de código grande en C++. Lo interesante es que este modelo es mucho más rápido que Qwen3.6 35B. Parece que Ornith genera procesos de razonamiento más cortos
En mis pruebas, la velocidad para producir respuestas fue hasta 3 veces mayor. Lo estoy usando con llamacpp y codex-cli
Probé Ornith-1.0 35B con una cuantización por bloques FP8 hecha por mí y me gustó. En una RTX PRO 6000(sm120), con vLLM, da más de 200 tokens/s, y en los últimos días le he pasado más de 140 millones de tokens en caché en tareas de programación tipo agente
Diría que queda más o menos entre Qwen 3.6 35B-A3B y 27B, pero lo bueno es que, comparado con Qwen 3.6, tiende mucho menos a pensar de más o a quedarse atorado en el mismo loop. Viendo el rastro de razonamiento, me gusta su plantilla de enfoque por descomposición
En una base de código Go de tamaño medio hizo bien análisis básicos, manejo de tareas y algunos cambios de frontend/backend, pero en tareas más largas de implementación simple de kernel chocó por completo con su límite. Lo repetí unas 100 veces en el entorno de ejecución Pi Agent y falló; este tipo de tareas sí las pueden resolver modelos abiertos más fuertes como Kimi K2.6 o GLM 5.2
¿Alguien puede explicar qué pasó aquí? ¿Solo le cambiaron la apariencia a Qwen? ¿Quién es deepreinforce-ai y por qué este modelo no aparece en su sitio web?
Me da curiosidad cómo se supone que hace auto-mejora. ¿Cambia el modelo en disco, o solo mejora durante una sola ejecución dentro del contexto?
Por lo que veo, parece que entrenaron con su propio aprendizaje por refuerzo encima de Qwen y Gemma 4. No sé cómo combinaron los pesos de ambos, y tampoco me queda claro si usaron Qwen como base y Gemma 4 como apoyo para el entrenamiento. Aquí “auto-mejora” parece referirse al proceso de entrenamiento, no a la forma en que usa los pesos
Esto parece simplemente una versión de Qwen o Gemma 4 optimizada para benchmarks
“Un 9B denso cabe en una sola GPU de 80GB”
La gente normal como nosotros no lo puede usar
He usado muchos modelos locales y todos me parecían juguetes. Pero este sí me dio la impresión de ser realmente útil. También escuché que Qwen 36-A3B es bueno, aunque todavía no lo pruebo
Los sistemas de auto-mejora son interesantes, pero hacen mucho más difícil el rastreo de procedencia y la gobernanza. Si permites que un agente cambie su propio comportamiento con el tiempo, se vuelve cada vez más importante entender por qué actuó de cierta manera