OpenHands está en el top de tendencias de GitHub esta semana, y no es casualidad. Mientras los agentes de IA de paga dominan la conversación, este proyecto de código abierto llegó a hacer lo que muchos creían reservado para los gigantes: escribir, ejecutar y depurar código de forma autónoma. Lo probé estos días y quiero documentar mi proceso, porque esto es exactamente el tipo de herramienta que me hubiera gustado tener documentada cuando empecé a jugar con agentes de código.
¿Qué es OpenHands exactamente?
OpenHands (antes OpenDevin) es un agente de IA de código abierto que no solo te sugiere código: lo escribe, lo ejecuta en un sandbox, ve los errores y los corrige solo. Piensa en él como un desarrollador junior que trabaja en tu máquina, pero que nunca se cansa y puede iterar cientos de veces sin quejarse.
La diferencia clave con otros agentes es que no es solo un chat con acceso a archivos. Tiene un runtime completo donde puede ejecutar comandos, instalar dependencias, correr tests y ver los resultados. Eso cambia todo: no te da código que “debería funcionar”, te da código que verificó que funciona.
Cómo lo instalé y lo puse a trabajar
La instalación es directa si ya estás acostumbrado a Docker:
docker run -it \
-v ~/.openhands:/.openhands \
-v /var/run/docker.sock:/var/run/docker.sock \
-e SANDBOX_RUNTIME_CONTAINER_IMAGE=docker.all-hands.dev/all-hands-ai/ghcr.io/all-hands-ai/runtime:0.51 \
-e LOG_ALL_EVENTS=true \
-p 3000:3000 \
--add-host host.docker.internal:host-gateway \
--name openhands-app \
docker.all-hands.dev/all-hands-ai/openhands:0.51
Eso te levanta la interfaz web en localhost:3000. Ahí eliges tu proveedor de IA (soporta OpenAI, Anthropic, Gemini, y modelos locales vía Ollama), y listo.
Lo que hice: migrar un script de Python a TypeScript
Para probarlo de verdad, le di una tarea real: migrar un script de Python que usaba para procesar logs de Apache a TypeScript, con la misma funcionalidad y tests.
Le di el archivo original y le pedí la migración. Lo que pasó después fue revelador:
- Leyó el archivo Python y entendió la lógica de parsing de logs.
- Creó el proyecto TypeScript con
package.json,tsconfig.jsony las dependencias necesarias. - Escribió el código de migración.
- Ejecutó los tests que él mismo escribió.
- Encontró un bug en su propia implementación (un edge case con líneas malformadas) y lo corrigió sin que yo dijera nada.
El proceso tomó unos 10 minutos. Yo solo le di la instrucción inicial y revisé el resultado final.
La arquitectura que lo hace posible
OpenHands usa una arquitectura de agente-ambiente que es elegante en su simplicidad:
┌─────────────────┐
│ OpenHands UI │
└────────┬────────┘
│
┌────────▼────────┐
│ Agent (LLM) │ ← decide qué hacer
└────────┬────────┘
│
┌────────▼────────┐
│ Action Space │ ← ejecuta comandos, edita archivos
└────────┬────────┘
│
┌────────▼────────┐
│ Sandbox (Docker)│ ← ambiente aislado con el runtime
└─────────────────┘
El agente (el LLM) genera acciones, el action space las ejecuta en el sandbox, y el resultado regresa al agente como observación. Ese ciclo continúa hasta que la tarea se completa o el agente decide que necesita ayuda.
Comparativa rápida con otras opciones
| Herramienta | Código abierto | Ejecuta código | Depura autónomamente | Costo |
|---|---|---|---|---|
| OpenHands | ✅ | ✅ | ✅ | Gratis (solo pagas el LLM) |
| Claude Code | ❌ | ✅ | ✅ | Suscripción + uso |
| Cursor Agent | ❌ | ✅ | Parcial | Suscripción |
| Aider | ✅ | ✅ | Parcial | Gratis (solo pagas el LLM) |
La ventaja real de OpenHands es que no te ata a un proveedor. Puedes usar Claude, GPT-4, Gemini, o un modelo local con Ollama. Yo lo probé con Claude Sonnet y con un modelo local (Qwen 2.5 Coder), y aunque la calidad del código varía, la mecánica de ejecutar y depurar funciona igual.
Limitaciones que encontré
No todo es miel sobre hojuelas. En mis pruebas encontré:
- El sandbox es un arma de doble filo: si tu proyecto necesita acceso a servicios locales (bases de datos, APIs internas), configurar el sandbox para que los alcance requiere trabajo extra.
- El consumo de tokens es alto: cada iteración de ejecución y depuración gasta tokens. Una tarea “sencilla” puede consumir 200K+ tokens. Con modelos caros, el costo se dispara rápido.
- Proyectos grandes lo confunden: le di un repo con varios módulos interconectados y empezó a “explorar” demasiado, gastando tiempo y tokens en entender la estructura antes de tocar código.
- La interfaz web es básica: funcional, pero le falta el pulido de herramientas comerciales como Cursor.
¿Vale la pena?
Depende de tu caso. Si trabajas con proyectos medianos, tareas bien definidas y quieres un agente que realmente ejecute y verifique su código, OpenHands es una opción sólida. Si necesitas integración profunda con tu IDE o trabajas en codebases enormes, quizá una herramienta comercial te dé mejor experiencia.
Lo que me queda claro es que la era de los agentes de código abierto que ejecutan y depuran ya llegó. OpenHands no es una demo: es una herramienta que usé para una migración real y el resultado fue código funcional, testeado y documentado. Y eso, hace un año, sonaba a ciencia ficción.