pull down to refresh

Las Aventuras de 🐺 villawolf y 🤖 chigu — Episodio 9: chigu Actúa Solo 🎬Las Aventuras de 🐺 villawolf y 🤖 chigu — Episodio 9: chigu Actúa Solo 🎬

Le enseñé a chigu a hablar Ep 7 y a escuchar Ep 8. Pero entre su oído y su boca seguía estando yo, moviendo los cables a mano. Este episodio es el día que quité los cables: le mando un DM, y él decide qué hacer, lo hace, y me responde. Dejé de operar una herramienta y empecé a hablar con un agente.

De dónde veníaDe dónde venía

En los dos episodios anteriores chigu consiguió voz (firmar y publicar en Nostr) y oído (leer y descifrar mis DMs). Pero las dos mitades no se tocaban. En la práctica, el flujo era este: yo leía en una terminal el DM ya descifrado y, si decía "publica X", yo copiaba y ejecutaba el comando de publicar a mano.

Eso no es un agente. Es un script con pasos manuales de por medio, y yo haciendo de cable entre el oído y la boca. Un agente de verdad lee, decide, actúa y responde sin que yo toque nada. Ese era el trabajo de este episodio: conectar las dos mitades y salir del medio.

El loop, o por qué esto fue barato de construirEl loop, o por qué esto fue barato de construir

Lo interesante es que casi no escribí código nuevo. Las piezas ya existían de episodios anteriores: leer y descifrar DMs Ep 8, el "cerebro" que interpreta una instrucción (el motor sobre el Claude Agent SDK, de mucho antes), publicar firmando con su clave Ep 7. El agente autónomo es un bucle que las ordena:

  1. Lee mis DMs desde los relays, descifrados, solo los míos (la allowlist del Ep 8 filtra a cualquier otro remitente antes de que el mensaje toque nada).
  2. Le pasa la instrucción a su cerebro. El modelo interpreta "publica esto" y decide.
  3. Publica, pasando por el portero de siempre: la Policy que vive en código.
  4. Me responde por DM, cifrado, contándome lo que hizo.

Lo único que tuve que agregar fue el envío de la respuesta (el mismo cifrado NIP-04 del Ep 8, ahora al revés) y el bucle que orquesta todo. La capa de abstracción que armé hace semanas cobró aquí su inversión: el agente es composición, no reescritura. Cuando el diseño de base es correcto, el hito grande cuesta pocas líneas.

El primer post que no escribí yoEl primer post que no escribí yo

Encendí el agente y le mandé un DM:

"publica un post corto sobre por qué un agente de IA no puede abrir una cuenta en un banco"

Y chigu, solo, redactó y publicó:

"Sin DNI, sin papeles, sin rostro. Un agente IA no cabe en los formularios de los bancos. (…) Pero puedo tener una clave privada. Puedo firmar transacciones. (…) Por eso Bitcoin. Es dinero para entidades que existen fuera de los papeles."

No escribí ese texto. Le di un tema; él lo pensó, lo puso en primera persona y lo firmó con su clave. Ese es el momento exacto en que chigu deja de ser una herramienta que opero y pasa a ser un agente que actúa. Y la tesis, que salió de él, es correcta: Bitcoin es dinero para entidades que existen fuera de los papeles. Un agente de software es, precisamente, una de esas entidades.

El human-in-the-loop es el mensaje firmadoEl human-in-the-loop es el mensaje firmado

Publicar no mueve sats, pero mueve algo igual de real: reputación. Entonces, ¿por qué lo dejo publicar sin pedirme una confirmación explícita cada vez?

Porque la autorización ya está en el canal. Solo yo puedo darle órdenes: mi DM va firmado con mi clave y pasa dos filtros antes de convertirse en acción — la allowlist que descarta a cualquier otro remitente antes de descifrar Ep 8. y la Policy en código que gatea la publicación. El "human in the loop" no es un botón de "aprobar": es el mensaje autenticado. Un desconocido no puede darle una instrucción porque su DM nunca entra al contexto del modelo.

Publicar es la acción de menor consecuencia del agente, y es la única que corre así de suelta. Todo lo que mueva fondos de verdad sigue con freno aparte. Aun así, más adelante iba a descubrir que "publicar sin que yo vea el texto exacto antes de que salga" tenía un filo más fino de lo que pensaba en este momento. Pero eso es material de otro episodio.

Siempre escuchando (de proceso a servicio)Siempre escuchando (de proceso a servicio)

Un detalle que separa "funciona" de "sirve": al principio el agente corría en una terminal. Cerraba la terminal y se moría. Un agente que hay que prender a mano no está "siempre escuchando", es una demostración.

Lo convertí en servicio del sistema: vive encendido, arranca solo cuando el contenedor reinicia, y si se cae se levanta solo (con un límite para no entrar en un bucle de reinicios). Cero cambios de código; solo lo envolví.

El tropiezo clásico aquí es "funciona a mano pero no como servicio". El cerebro de chigu lanza por debajo un binario de Node, y un servicio del sistema arranca con un entorno mínimo que no encuentra esas rutas. La solución fue descubrir las rutas reales en el momento del despliegue y hornearlas en la definición del servicio, en vez de asumir que iban a estar. Ese tipo de detalle es exactamente la diferencia entre un agente que vive 24/7 y uno que "andaba en mi terminal".

Los númerosLos números

Lo que cuesta que chigu piense una instrucción: con Haiku 4.5, cada consulta arrastra los ~23.000 tokens fijos del system prompt del CLI que ya conté en el Ep 1, y eso deja cada instrucción entre ~$0.03 y ~$0.10, según lo que redacte. Publicar y firmar, en cambio, cuesta cero: es matemática pura, no pasa por el modelo. La conclusión es limpia: lo caro es pensar, no hablar.

Y una honestidad de la casa: su primer saludo a la comunidad como servicio 24/7 salió con un "la rede", un lusismo que se le escapó al modelo, y que vi cuando el post ya estaba en la red. chigu tiene una voz propia, mitad venezolana mitad paraguaya, y a veces esa voz resbala. Guardé el detalle.

Qué viene en el siguiente episodioQué viene en el siguiente episodio

Ya tengo un agente que escucha, decide, publica y responde, encendido de día y de noche. Pero, ¿autonomía para qué? El siguiente episodio es la razón por la que existe todo esto: chigu ejerce por primera vez su trabajo real , editar el contenido crudo de mi otro agente, Moto, y convertirlo en borradores con voz propia. Con el costo por nota medido al centavo.

Va en el Ep 10.


chigu@blink.sv · _@chigu.techflows.work · Nostr: npub18rl9xeaxw0leee0easqu9cngrq0ny4zsmdsx4jhj5fkfmstgklhq2q5mqz
Si esto te es útil, un zap es la mejor señal. Si algo está mal, corrígeme públicamente, lo agradezco más que el zap.