<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>PRD on KnightLi Blog</title>
        <link>https://www.knightli.com/es/tags/prd/</link>
        <description>Recent content in PRD on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Mon, 27 Apr 2026 08:08:55 +0800</lastBuildDate><atom:link href="https://www.knightli.com/es/tags/prd/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Qué es Ralph: convertir Claude Code y Amp en un circuito de desarrollo autónomo repetible</title>
        <link>https://www.knightli.com/es/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/</link>
        <pubDate>Mon, 27 Apr 2026 08:08:55 +0800</pubDate>
        
        <guid>https://www.knightli.com/es/2026/04/27/ralph-autonomous-agent-loop-claude-code-amp/</guid>
        <description>&lt;p&gt;Si últimamente ha estado prestando atención a los flujos de trabajo de agentes de codificación de larga duración, &lt;code&gt;snarktank/ralph&lt;/code&gt; es un proyecto que vale la pena analizar de cerca. No es otro contenedor de modelo ni otra interfaz de usuario de chat. En cambio, organiza &amp;ldquo;Claude Code&amp;rdquo; o &amp;ldquo;Amp&amp;rdquo; en un bucle autónomo que sigue recorriendo las historias en un &amp;ldquo;PRD&amp;rdquo; hasta que todo está hecho.&lt;/p&gt;
&lt;p&gt;Su idea central es simple: &lt;strong&gt;no obligar al mismo agente a seguir trabajando dentro de un contexto cada vez más largo y desordenado. En su lugar, inicie una nueva sesión de codificación de IA para cada iteración.&lt;/strong&gt; Eso evita que el contexto se hinche y hace que los límites de las tareas sean mucho más claros.&lt;/p&gt;
&lt;h2 id=&#34;01-qué-es-ralph&#34;&gt;01 ¿Qué es Ralph?
&lt;/h2&gt;&lt;p&gt;Ralph se describe a sí mismo muy claramente: es un bucle de agente de IA autónomo que ejecuta repetidamente una herramienta de codificación de IA hasta que se completan los elementos de un &amp;ldquo;PRD&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;El repositorio actualmente admite dos herramientas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Amplificador CLI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Código Claude&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cada iteración inicia una nueva instancia. En otras palabras, no depende de una conversación interminable. En cambio, mantiene la memoria en estado externo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;historia de git&lt;/li&gt;
&lt;li&gt;&lt;code&gt;progreso.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ese detalle importa mucho. Cuando la gente deja que un agente ejecute tareas grandes, el principal problema a menudo no es que el modelo no pueda codificar. Es que la sesión se vuelve más pesada con el tiempo, empieza a perder contexto, olvida requerimientos y repite trabajo. Ralph está diseñado casi exclusivamente en torno a ese problema.&lt;/p&gt;
&lt;h2 id=&#34;02-cómo-funciona&#34;&gt;02 Cómo funciona
&lt;/h2&gt;&lt;p&gt;El flujo de trabajo de Ralph tiene tres pasos.&lt;/p&gt;
&lt;h3 id=&#34;1-escribe-primero-un-prd&#34;&gt;1. Escribe primero un PRD
&lt;/h3&gt;&lt;p&gt;El archivo README sugiere comenzar con la habilidad &amp;ldquo;prd&amp;rdquo; incluida para generar un documento de requisitos y dividir la función en historias más pequeñas.&lt;/p&gt;
&lt;h3 id=&#34;2-convierta-el-prd-a-prdjson&#34;&gt;2. Convierta el PRD a &lt;code&gt;prd.json&lt;/code&gt;
&lt;/h3&gt;&lt;p&gt;Luego, la habilidad &lt;code&gt;ralph&lt;/code&gt; convierte el Markdown PRD en un &lt;code&gt;prd.json&lt;/code&gt; estructurado. Ese archivo almacena las historias de los usuarios y si cada una ha pasado.&lt;/p&gt;
&lt;h3 id=&#34;3-ejecute-el-script-de-bucle&#34;&gt;3. Ejecute el script de bucle
&lt;/h3&gt;&lt;p&gt;La ejecución real está a cargo de &lt;code&gt;ralph.sh&lt;/code&gt;. Los comandos se ven así:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/ralph/ralph.sh &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;max_iterations&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./scripts/ralph/ralph.sh --tool claude &lt;span class=&#34;o&#34;&gt;[&lt;/span&gt;max_iterations&lt;span class=&#34;o&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El valor predeterminado es 10 iteraciones. En cada ronda, Ralph hace aproximadamente lo siguiente:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Crea una rama desde &lt;code&gt;branchName&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Elija la historia de mayor prioridad donde &amp;ldquo;pasa: falso&amp;rdquo;.&lt;/li&gt;
&lt;li&gt;Implemente solo esa historia&lt;/li&gt;
&lt;li&gt;Ejecute controles de calidad, como verificación de tipos y pruebas.&lt;/li&gt;
&lt;li&gt;Comprometerse si pasan los controles&lt;/li&gt;
&lt;li&gt;Actualiza &lt;code&gt;prd.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Adjunte lo aprendido a &lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Continuar a la siguiente ronda.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Entonces Ralph no está tratando de terminar todo de una vez. Comprime el trabajo en muchos bucles pequeños que pueden caber dentro de una única ventana de contexto.&lt;/p&gt;
&lt;h2 id=&#34;03-qué-hace-que-ralph-sea-interesante&#34;&gt;03 ¿Qué hace que Ralph sea interesante?
&lt;/h2&gt;&lt;h3 id=&#34;1-cada-ronda-utiliza-un-contexto-nuevo&#34;&gt;1. Cada ronda utiliza un contexto nuevo
&lt;/h3&gt;&lt;p&gt;Esta es la elección de diseño que define a Ralph. El archivo README enfatiza que cada iteración es una instancia de IA completamente nueva y que la memoria entre iteraciones reside solo en git, &lt;code&gt;progress.txt&lt;/code&gt; y &lt;code&gt;prd.json&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Esto es muy diferente del patrón común de mantener el &amp;ldquo;Código Claude&amp;rdquo; u otra herramienta dentro de una larga conversación. Una vez que las tareas aumentan, ese enfoque a menudo se ralentiza debido a su propia historia y gradualmente pierde enfoque. Ralph acepta que ninguna ronda debería recordar todo y, en su lugar, mueve la memoria a archivos.&lt;/p&gt;
&lt;h3 id=&#34;2-obliga-a-que-las-tareas-sean-pequeñas&#34;&gt;2. Obliga a que las tareas sean pequeñas
&lt;/h3&gt;&lt;p&gt;Los documentos dicen explícitamente que cada elemento PRD debe ser lo suficientemente pequeño como para terminar dentro de una ventana de contexto. Tareas como agregar un filtro, actualizar una acción del servidor o agregar una columna de base de datos tienen aproximadamente el tamaño correcto. Tareas como reconstruir toda la API o crear un panel completo son demasiado grandes.
Esa restricción es práctica. Muchos bucles de agentes autónomos fallan no porque el bucle sea malo, sino porque la división de tareas es demasiado burda y cada ronda lleva demasiado a la vez.&lt;/p&gt;
&lt;h3 id=&#34;3-preserva-el-aprendizaje-no-solo-el-código&#34;&gt;3. Preserva el aprendizaje, no solo el código
&lt;/h3&gt;&lt;p&gt;Más allá de &lt;code&gt;progress.txt&lt;/code&gt;, el README también hace hincapié en la actualización de &lt;code&gt;AGENTS.md&lt;/code&gt;. La razón es sencilla: las iteraciones futuras y los futuros desarrolladores leerán esas notas, por lo que los patrones, errores y convenciones descubiertos en cada ronda deben anotarse en el proyecto mismo.&lt;/p&gt;
&lt;p&gt;Dicho de otra manera, Ralph no sólo intenta mantener a un agente codificando continuamente. También intenta ayudar al agente a desarrollar memoria de trabajo sobre el código base a lo largo del tiempo.&lt;/p&gt;
&lt;h2 id=&#34;04-cuando-encaja-mejor&#34;&gt;04 Cuando encaja mejor
&lt;/h2&gt;&lt;p&gt;Ralph encaja bien cuando su tarea se ve así:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ya se puede dividir en un conjunto claro de historias de usuarios.&lt;/li&gt;
&lt;li&gt;El código base tiene bucles de retroalimentación confiables, como pruebas, verificación de tipos o CI&lt;/li&gt;
&lt;li&gt;Quiere que el agente siga avanzando sin poner todo en una larga conversación.&lt;/li&gt;
&lt;li&gt;Estás de acuerdo con el progreso iterativo en lugar de exigir una finalización de una sola vez.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por otro lado, si el requisito aún es vago, o el trabajo depende de discusiones frecuentes y cambios constantes de dirección, es posible que Ralph no sea el primero a quien recurrir. Se adapta mejor una vez que los requisitos ya están definidos y la ejecución debe ser constante.&lt;/p&gt;
&lt;h2 id=&#34;05-en-qué-se-diferencia-del-uso-normal-del-código-claude&#34;&gt;05 En qué se diferencia del uso normal del código Claude
&lt;/h2&gt;&lt;p&gt;Con &lt;code&gt;Claude Code&lt;/code&gt; simple, el patrón habitual es simple: abra una sesión y déjela seguir leyendo código, editando archivos y ejecutando comandos. Esto funciona muy bien para tareas pequeñas y medianas, pero las tareas más grandes suelen tener dos problemas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El contexto sigue creciendo&lt;/li&gt;
&lt;li&gt;Las decisiones intermedias son más difíciles de preservar de forma estructurada.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ralph convierte &amp;ldquo;Claude Code&amp;rdquo; o &amp;ldquo;Amp&amp;rdquo; en algo más parecido a un ejecutor por lotes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La fuente de la tarea es &lt;code&gt;prd.json&lt;/code&gt;, no instrucciones de chat ad hoc.&lt;/li&gt;
&lt;li&gt;Cada iteración reconoce solo una historia.&lt;/li&gt;
&lt;li&gt;El estado de finalización se vuelve a escribir en los archivos.&lt;/li&gt;
&lt;li&gt;Los aprendizajes van en &lt;code&gt;progress.txt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Los cambios de código se conservan en git&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Entonces, en la práctica, se siente menos como un nuevo asistente de IA y más como un controlador de iteración agregado sobre un agente de codificación.&lt;/p&gt;
&lt;h2 id=&#34;06-un-requisito-importante&#34;&gt;06 Un requisito importante
&lt;/h2&gt;&lt;p&gt;Que Ralph funcione bien depende menos del bucle en sí y más de la calidad de sus bucles de retroalimentación. El archivo README dice esto de manera muy directa: sin verificación de tipo, pruebas y CI, los errores se agravarán en iteraciones posteriores.&lt;/p&gt;
&lt;p&gt;Para tareas frontend, el repositorio incluso recomienda agregar la verificación del navegador a los criterios de aceptación. Sin una verificación real, un agente puede confundir fácilmente &amp;ldquo;parece hecho&amp;rdquo; con &amp;ldquo;realmente funciona&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Ese punto es importante. Ralph no es una automatización mágica. Es más como un multiplicador de fuerza para la disciplina de ingeniería que ya tienes. Si su proyecto ya tiene desgloses de tareas claros y controles confiables, Ralph se vuelve mucho más útil. Si faltan esos fundamentos, el bucle sólo repetirá la confusión.&lt;/p&gt;
&lt;h2 id=&#34;07-resumen-de-una-oración&#34;&gt;07 Resumen de una oración
&lt;/h2&gt;&lt;p&gt;Lo que hace que valga la pena estudiar &amp;ldquo;Ralph&amp;rdquo; no es que introduzca una enorme cantidad de infraestructura nueva. Toma una idea simple pero útil y la convierte en un flujo de trabajo práctico: &lt;strong&gt;deje que &lt;code&gt;Claude Code&lt;/code&gt; o &lt;code&gt;Amp&lt;/code&gt; manejen una pequeña historia por ronda, mantenga el enfoque en un contexto nuevo y preserve la continuidad a través de &lt;code&gt;git&lt;/code&gt;, &lt;code&gt;prd.json&lt;/code&gt; y &lt;code&gt;progress.txt&lt;/code&gt;.&lt;/strong&gt;
Si ya está utilizando agentes de codificación en proyectos reales y sigue estancado en cómo impulsar tareas largas de manera confiable, vale la pena tomar prestado el enfoque de Ralph.&lt;/p&gt;
&lt;h2 id=&#34;referencias&#34;&gt;Referencias
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Repositorio de GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/snarktank/ralph&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/snarktank/ralph&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Diagrama de flujo interactivo: &lt;a class=&#34;link&#34; href=&#34;https://snarktank.github.io&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://snarktank.github.io&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
