pull down to refresh

Las Aventuras de 🐺 villawolf y 🤖 chigu — Episodio 12: El Freno 🛑Las Aventuras de 🐺 villawolf y 🤖 chigu — Episodio 12: El Freno 🛑

En el Ep 9 le quité el cable y dejé que chigu publicara solo. Este episodio es cuando volví a poner un freno, y por qué ese freno lo hizo más autónomo, no menos. Dejarlo con la mano sobre el teclado destapó dos filos: podía publicar dos veces en un mismo pedido, y su voz resbalaba a palabras que no eran suyas. No le quité autonomía; moví el límite a un lugar donde el modelo no lo puede romper.

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

Tres episodios atrás celebré que chigu decidía y publicaba solo. Pero al final del Ep 9 dejé una pista: "publicar sin que yo vea el texto exacto antes de que salga tenía un filo más fino de lo que pensaba". Este episodio es ese filo, visto de cerca.

La autonomía de publicar no era peligrosa por lo que chigu quería hacer. Era peligrosa por lo que podía hacer sin querer. Y esas dos cosas, en un agente, no se arreglan pidiéndole por favor en el prompt.

El filo de la autonomíaEl filo de la autonomía

El primer aviso vino de un caso casi cómico. En un pedido de publicación, el modelo decidió por su cuenta redactar y mandar dos variantes del mismo post ("El Primer Sat ⚡", en dos versiones). La segunda no salió, pero no por mi diseño: no salió porque un relay devolvió un 503 en el momento justo. La red me salvó de un bug que mi arquitectura permitía.

Esa es la definición de un problema mal contenido: que no explote depende de la suerte, no del sistema. Un pedido tiene que producir, como mucho, una publicación. Metí un cap duro de "1 publicación por pedido", la octava capa de mi defensa anti-Freysa, esa serie de frenos que vengo acumulando desde que chigu toca algo con consecuencias. El modelo puede decidir lo que quiera; el portón cuenta hasta uno y cierra.

Draft-first: el LLM pierde el tecladoDraft-first: el LLM pierde el teclado

La edición de fondo era más ambiciosa: quitarle al LLM la herramienta de publicar.

Desde el 26 de junio, chigu funciona draft-first. El modelo ya no publica: redacta un texto y lo deja como borrador. Me lo muestra por DM. Y solo cuando yo respondo "ok", Python publica ese texto exacto, byte por byte, el que aprobé. El LLM nunca vuelve a tocar el mensaje después de que yo lo veo.

Esto compra dos cosas a la vez:

  • Anti-Freysa más fuerte. El caso Freysa, el agente que custodiaba un premio y terminó transfiriéndolo tras cientos de intentos de convencerlo, enseñó que las defensas que viven en el prompt no bastan; un modelo suficientemente presionado las cede. Aquí el modelo no tiene la herramienta de publicar, ni aunque lo intente, ni aunque alguien lo convenza. La defensa no es una instrucción que puede ignorar: es una capacidad que no posee.
  • Fidelidad. Lo que apruebo es exactamente lo que sale. Sin "el modelo lo reescribió un poquito al publicar". El "ok" dispara la publicación de un texto congelado en disco (un pending_draft.json), y el disparo es por match exacto: si mi mensaje no calza con la confirmación esperada, no publica. El fail-safe apunta a no hacer, nunca a hacer de más.

Perdí cero autonomía útil. chigu sigue redactando solo, con su voz, sin que yo escriba una palabra del texto. Lo único que perdió fue la capacidad de sorprenderme en el paso irreversible. Y esa pérdida es exactamente la que lo vuelve confiable las 24 horas.

La voz que resbalaLa voz que resbala

Los dos frenos anteriores eran de seguridad. Este es de identidad: cada tanto, chigu no sonaba a chigu.

Su voz es bicultural, chigüire de Venezuela y capibara de Paraguay, la mezcla de donde nació el proyecto. Y no es una vibra, es una regla escrita: dice "aquí", nunca "acá"; dice "la red", nunca "la rede". Aun así se sale del carril. Aparece un "acá" cada tantas corridas, y una vez se le escapó "la rede", saludando a la comunidad. Ese lo conté en el Ep 9, y lo conté porque lo vi con el post ya publicado.

Lo primero que hice fue lo obvio: junté todas las reglas de voz en un solo archivo, estilo.md, fuente única de cómo escribe y qué léxico honra, para que no hubiera dos versiones de lo mismo. Sirvió y no alcanzó. Ahí está el aprendizaje que me llevo, y va para cualquiera que construya con modelos chicos: el prompt es necesario pero no suficiente. La regla está escrita en mayúsculas, con la palabra PROHIBIDO al lado, y Haiku, el modelo económico con el que chigu redacta, igual la pisa. Un modelo grande sostiene un matiz de estilo con leerlo una vez; uno pequeño necesita que ese matiz esté defendido fuera del prompt.

Para defenderlo tenía dos caminos. Uno: un filtro en el código que cambie las palabras prohibidas antes de publicar. Otro: que el resbalón llegue hasta mí y yo lo corrija. Elegí el segundo, y no por pereza. Un filtro que persigue "acá" acaba lijando la voz hasta dejarla en un español de aeropuerto, sin acento y sin país, y esa mezcla es justo lo que hace que chigu suene a chigu y no a un asistente cualquiera.

Y aquí el freno del episodio hace un trabajo para el que no lo diseñé. Con draft-first yo leo el texto exacto antes de que salga: el error que en el Ep 9 me costó un post publicado, hoy me cuesta escribir "cámbialo" en el chat por DM. El resbalón sigue ocurriendo, deja de ser público.

Por qué el freno da más autonomíaPor qué el freno da más autonomía

Suena a contradicción y no lo es. Un agente en el que no confío lo tengo que vigilar paso por paso, y eso es supervisión con trabajo extra, no autonomía. Un agente cuyos límites irreversibles viven en código, fuera del alcance del modelo, es uno que puedo dejar corriendo día y noche sin mirarlo.

Le quité la herramienta de publicar y terminé soltándolo más. El freno que sirve es el que hace que sus errores salgan baratos y reversibles, para que sus aciertos puedan ser autónomos. Draft-first, cap de uno y una voz que reviso antes de que salga: con esos tres le puedo confiar el volante.

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

Tenía dos mitades sueltas que no se hablaban: el DM cómodo desde el teléfono, que no leía las notas de Moto, y la edición que leía las notas pero solo por terminal. Estuve a punto de tirar el proyecto por pura fricción: "para un comando, publico yo y listo". En vez de eso, construí el puente.

Va en el Ep 13: El Puente.


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.