Mi Mac mini murió. Sin drama — simplemente dejó de ser una máquina en la que pudiera confiar, y lo sensato era formatear el disco y reinstalar todo desde cero.
He bailado esta danza muchas veces. El ritual nunca cambia: reinstalar el sistema operativo y luego pasarte una noche reinstalando todo lo demás. Homebrew. Node. Python. Un montón de herramientas de línea de comandos que no recuerdas haber instalado. Y tres semanas después descubres la que olvidaste, porque algo que antes funcionaba ya no funciona.
Esta vez probé algo distinto.
Instalé Chrome y después ejecuté un solo comando en Terminal para instalar el harness. Esa fue toda la lista. Luego le pedí que configurara el resto.
Chrome no es decoración en esa historia. Es la única aplicación con interfaz gráfica que realmente quiero, y también es el navegador que el agente maneja cuando una tarea necesita uno. Las herramientas de navegador se declaran en la configuración del harness como todo lo demás, no se instalan a mano.
El harness es la parte que había estado ignorando
Durante los últimos dos años he pensado en las herramientas de programación con IA sobre todo en términos del modelo. Qué modelo es más inteligente, cuál es más barato, cuál escribe mejor código de frontend. He cancelado suscripciones por esa pregunta y he escrito sobre eso más de una vez.
Lo que había estado subestimando es el harness — lo que de verdad se sienta entre la máquina y yo. El modelo aporta la inteligencia. El harness aporta las manos, la memoria de cómo trabajo y la interfaz.
En esta reconstrucción, OpenCode fue el harness y DeepSeek V4.1 Flash fue el modelo. Pero he dejado de creer que ninguna de las dos capas deba quedar fija en una sola opción, porque se eligen por criterios completamente distintos.
A los modelos los elijo por cuatro cosas: lo inteligente que es, la velocidad con la que genera (tokens por segundo, algo que noto mucho más de lo que esperaba), cuánto cuesta y qué pasa con los datos que le envío.
El costo merece más que el precio de etiqueta, porque el precio de etiqueta no es lo que pagas. El número que importa es la tasa de aciertos de caché. Cuando el harness puede mantener un contexto estable, la mayor parte de la entrada se sirve desde la caché y la factura se derrumba — mi tasa de aciertos de caché con DeepSeek suele estar por encima del 99%. Dos modelos con el mismo precio por token pueden diferir enormemente en lo que gastas de verdad, según si tu harness puede mantener una caché.
Tampoco paso todo por un solo modelo. Tareas distintas piden modelos distintos, y uno gratuito suele bastar para un trabajo mecánico — gastar un modelo de primera línea en eso es puro desperdicio.
A los harness los elijo por preferencia. Interfaz y costumbre. Uso OpenCode porque ahí viven mis costumbres, y ejecuto también el harness propio de DeepSeek porque me gusta trabajar en los dos. En el trabajo uso otro distinto — Antigravity CLI manejando Gemini 4 Argon o 3.8 Flash — porque ese trabajo tiene otra forma: le doy un plan y lo trabaja durante horas.
No hay ningún benchmark que resuelva eso, como sí lo hay para un modelo. Tienes que saber qué necesitas y elegir en función de eso.
En agosto escribí sobre pasarme a un solo modelo y un solo harness sin nombrar lo que de verdad cambió para mí. Ese post terminaba con una nota de que empezaría a usar más Flash, porque a ese precio no había razón para no hacerlo. Esto es eso, con una corrección: un solo fue el instinto equivocado.
Esa distinción suena académica hasta que reconstruyes una computadora con ella. Entonces deja de ser académica muy rápido. Un harness que puede ejecutar comandos, leer y escribir archivos, instalar paquetes e intentar comprobar su propio trabajo no es un cuadro de autocompletado. Se parece más a una capa de sistema operativo — y una vez que tienes una, la lista de cosas que instalas tú mismo se vuelve muy corta.
El flujo de trabajo, paso a paso
El patrón era el mismo cada vez, y no es como trabajaba antes:
- Describe el resultado, no los pasos. No "aquí está el comando de brew", sino "necesito poder ejecutar este tipo de script en local, configúralo".
- Deja que el agente instale y configure, incluido arreglar lo que acaba de romper.
- Verifica — esa parte sigue siendo mía. El agente puede mostrarte exactamente lo que ejecutó, y eso es lo que hace que verificar salga barato.
- Cuando no puedo verificar algo, lo hago yo. Las claves de servicio y las credenciales SSH son las dos cosas que creé a mano y no delegué.
- Lee lo que hizo de verdad, y espera que en algún momento llegue una respuesta equivocada pero plausible. No cada línea — lo suficiente para saber qué cambió en mi máquina, y lo suficiente para notar el cambio que parece correcto y no lo es.
La diferencia con mis reconstrucciones anteriores es más fácil de mostrar que de describir:
| Mis reconstrucciones anteriores | Esta | |
|---|---|---|
| Instalado a mano | El sistema operativo y luego una noche de Homebrew, Node, Python y un montón de herramientas CLI | Chrome, más un comando para el harness |
| Todo lo demás | Yo, a lo largo de una noche | El agente, cuando se lo pido |
| Dónde vive el estado | Servicios locales, runtimes, imágenes de contenedores | Un archivo de configuración y una conexión que autoricé una vez |
| Qué se acumula | Un depósito que deja cada experimento | Nada instalado "por si acaso" |
Dos cosas lo hacen posible. Una es que los harness guardan su configuración en archivos que puedo leer y editar — puedo ver exactamente qué está conectado y cambiarlo. La otra es que cada vez más de mis servidores MCP son remotos. Supabase, Resend y Vercel son URLs que autoricé una vez, no servicios en mi disco. Los locales se ejecutan a través de npx cuando hacen falta, así que no están instalados hasta el momento en que los uso.
Mi máquina antes albergaba servicios. Ahora alberga un archivo de configuración y un token, y los servicios viven en otro lado.
El disco se quedó vacío
No me propuse hacer un benchmark de esto, así que tómalo como una observación y no como una medición. Pero el número es difícil de ignorar: comparado con mi configuración anterior, ahora tengo unos 60 GB más de espacio libre en la misma máquina.
Para una máquina con el SSD soldado, eso no es un error de redondeo. El almacenamiento es una de las pocas cosas que no puedes ampliar después en un Mac moderno, y tiene el precio que tiene. Recuperar 60 gigabytes es una tajada importante de lo que habría costado el siguiente nivel.
Dónde se fue es más fácil de explicar que de demostrar. Algunas herramientas ahora se ejecutan cuando hacen falta en lugar de vivir en el disco para siempre, y el hábito de instalar cosas por adelantado se desvaneció, porque pedirlas después es barato.
De forma de aplicación a forma de intención
Aquí está el cambio, y todavía estoy averiguando hasta dónde llega.
La mayor parte de mi vida informática ha tenido forma de aplicación. Quiero hacer algo, así que busco la aplicación que hace eso, la instalo, aprendo su interfaz y vivo dentro de sus opiniones. La aplicación es la unidad de trabajo.
Trabajar así tiene forma de intención. Describo lo que necesito. Algo con la capacidad de actuar sobre la máquina deduce qué piezas hacen falta, las configura y lo hace. La aplicación pasa a ser un detalle de implementación, y a veces uno que nunca instalo de forma consciente.
Es un cambio más grande que "la IA escribe mi código". Programar nunca fue mi cuello de botella; lo era la distancia entre querer algo y tenerlo. Esa distancia ahora es mucho más corta.
Y por eso también bromeo a medias con que podría terminar en Linux. La razón por la que me quedé en macOS durante años nunca fue el sistema operativo — era toda la configuración acumulada que tendría que reconstruir. Si tu entorno es sobre todo un archivo de configuración y un agente capaz, la plataforma que hay debajo importa menos que antes. No me cambio esta semana. Solo que ya no tengo claro qué me lo impediría.
Tengo que admitir que no lo vi venir. Si hace cinco años me hubieras dicho que un Mac recién instalado más un navegador más un agente bastaban para volver a trabajar, habría asumido que describías una demo, no un martes por la noche tranquilo.
Lo que no estoy afirmando
Algunas advertencias honestas, porque he leído suficiente entusiasmo sobre esto como para desconfiar del mío propio.
- El harness es ahora el lock-in. Elegir modelo es cada vez más fácil de cambiar, pero mis hábitos, mi configuración y mi flujo de trabajo viven en el harness. Es una dependencia real y la estoy vigilando.
- "Instaló todo" no es lo mismo que "entiendo mi máquina". Conozco mi configuración peor que cuando la armé a mano. Es un costo real, y es la razón por la que existe el paso cinco de arriba.
- Esto no es gratis. Unos $60 en los últimos 30 días, y esa cifra no es solo mi programación — cubre la API de DeepSeek detrás de algunos de mis productos en producción. Como contexto, el mismo hábito me costaba unos $200 al mes hace un año. (Escribí sobre ese cambio en agosto.)
Preguntas frecuentes
¿Qué es un harness en la programación con IA?
Un harness es el programa que conecta un modelo con un entorno real. El modelo razona; el harness le da herramientas — ejecutar comandos, leer y escribir archivos, llamar a servicios externos — y gestiona la conversación y los permisos alrededor de ellas. OpenCode es deliberadamente agnóstico respecto al modelo, y por eso pude cambiar de modelo por debajo sin tocar nada más. Claude Code y Codex también son harness, aunque cada uno está construido alrededor de los modelos de su propio proveedor. Mi regla general: elige un modelo por su capacidad, su velocidad, su costo y cómo trata los datos; elige un harness por si de verdad te gusta trabajar en él.
¿De verdad puedes configurar una computadora nueva solo con un navegador y un agente de IA?
Para mi configuración — un desarrollador que trabaja sobre todo en una terminal y un navegador — en gran medida sí, y con un comando, no con cero. Necesitas un navegador para llegar al modelo y a internet, y una forma de instalar el harness, y tienes que estar dispuesto a verificar lo que hizo el agente. No daría por hecho que esto se sostiene en la máquina de un diseñador o de un contador.
¿Por qué esta configuración usa tanto menos disco?
Unos 60 GB menos que mi configuración anterior, por tres razones. Algunos servicios ahora se ejecutan en remoto y se llega a ellos por una URL en lugar de estar instalados en local. Algunas herramientas se ejecutan cuando hacen falta en lugar de vivir permanentemente en el disco. Y el hábito de preinstalar cosas "por si acaso" se desvanece cuando pedirlas después es barato.
Todavía me sorprende que "instala Chrome y a ver qué pasa" se convirtiera en una computadora que funciona.
Un abrazo, Chandler :P