{"id":691,"date":"2026-06-22T20:59:45","date_gmt":"2026-06-22T18:59:45","guid":{"rendered":"https:\/\/atlaszn.com\/blog\/?p=691"},"modified":"2026-06-23T01:38:35","modified_gmt":"2026-06-22T23:38:35","slug":"planning-agentes-llm","status":"publish","type":"post","link":"https:\/\/atlaszn.com\/blog\/2026\/06\/22\/planning-agentes-llm\/","title":{"rendered":"Planning con Agentes LLM: Descomposici\u00f3n de tareas"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Cuando un solo paso no alcanza<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Hay tareas que no caben en un prompt. Investigar un tema t\u00e9cnico, generar un informe de an\u00e1lisis competitivo, o dise\u00f1ar una arquitectura de sistemas; muchas de estas tareas no se resuelven bien con una sola llamada al modelo. Intentarlo produce outputs superficiales, porque el modelo toca cada tema por encima, pero no profundiza en ninguno.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Planning aborda esto de forma directa. En lugar de pedirle al modelo que haga todo de una vez, le pide que primero dise\u00f1e un plan y luego lo ejecute paso a paso. Cada paso del plan se convierte en una sub-tarea con entrada definida, criterio de salida, y dependencia expl\u00edcita respecto a los pasos anteriores.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nota: Planning no es un patr\u00f3n can\u00f3nico \u00fanico en la literatura de LLMs, sino un paraguas conceptual sobre varias t\u00e9cnicas relacionadas: Plan-and-execute, task decomposition, graph-based orchestration, y multi-step tool use. Lo que sigue es una s\u00edntesis pr\u00e1ctica de esas t\u00e9cnicas bajo un mismo marco.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pero Planning no es solo \u00abdividir la tarea\u00bb. La pregunta real es: \u00bfEl camino se conoce de antemano o se descubre durante la ejecuci\u00f3n? Si el camino es fijo, usas un workflow determinado. Si el camino depende de lo que el agente encuentre en el camino, necesitas Planning.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Planificaci\u00f3n en la pr\u00e1ctica: un espectro entre planificaci\u00f3n fija y adaptaci\u00f3n iterativa<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En la pr\u00e1ctica, Planning existe en un espectro entre dos extremos. La mayor\u00eda de sistemas reales son h\u00edbridos, pero entender los extremos ayuda a dise\u00f1ar mejor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Planificaci\u00f3n fija<\/strong>: Algunos sistemas generan un plan inicial y lo ejecutan sin cambios, salvo fallos expl\u00edcitos. Es predecible, facil de depurar, y funciona para procesos repetitivos. Si cada paso tiene una entrada y salida bien definidas, y no hay incertidumbre sobre que hacer cuando algo cambia, este enfoque es suficiente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Adaptaci\u00f3n iterativa<\/strong>: Otros sistemas introducen re-evaluaci\u00f3n peri\u00f3dica o disparada por eventos para modificar el plan durante la ejecuci\u00f3n. El agente evalua el resultado de cada paso, detecta si la informaci\u00f3n cambia el contexto, y reformula los siguientes pasos en consecuencia. Es mas flexible, pero menos predecible.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/atlaszn.com\/blog\/wp-content\/uploads\/2026\/06\/digrama_planning-1024x683.webp\" alt=\"\" class=\"wp-image-715\" srcset=\"https:\/\/atlaszn.com\/blog\/wp-content\/uploads\/2026\/06\/digrama_planning-1024x683.webp 1024w, https:\/\/atlaszn.com\/blog\/wp-content\/uploads\/2026\/06\/digrama_planning-300x200.webp 300w, https:\/\/atlaszn.com\/blog\/wp-content\/uploads\/2026\/06\/digrama_planning-768x512.webp 768w, https:\/\/atlaszn.com\/blog\/wp-content\/uploads\/2026\/06\/digrama_planning.webp 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En el fondo, Planning no es un mecanismo de organizaci\u00f3n de tareas. Es un mecanismo para gestionar incertidumbre en la ejecuci\u00f3n de tareas multi-step bajo informaci\u00f3n incompleta. La descomposici\u00f3n, la ejecuci\u00f3n y la re-planificaci\u00f3n no son fines en si mismas, sino herramientas para transformar un problema abierto en una secuencia de decisiones locales verificables.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Descomposici\u00f3n: El coraz\u00f3n del Planning<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La capacidad de un agente para descomponer un objetivo en pasos ejecutables depende de dos factores: La calidad del prompt de planificaci\u00f3n y la capacidad del modelo.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El prompt de planificaci\u00f3n debe especificar:<\/p>\n\n\n\n<ul class=\"wp-block-list\" class=\"wp-block-list\">\n<li><strong>El objetivo final<\/strong>: Qu\u00e9 se considera \u00abcompletado\u00bb.<\/li>\n\n\n\n<li><strong>Los criterios de descomposici\u00f3n<\/strong>: Cada paso debe ser aut\u00f3nomo, medible, y tener una salida concreta.<\/li>\n\n\n\n<li><strong>Las dependencias<\/strong>: Qu\u00e9 pasos requieren el output de otros.<\/li>\n\n\n\n<li><strong>Los l\u00edmites<\/strong>: M\u00e1ximo de pasos, restricciones de tiempo o recursos.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Pedirle al modelo \u00abplanifica esto\u00bb sin estructura tiende a producir planes genericos: \u00ab1. investigar, 2. analizar, 3. escribir\u00bb. En la mayoria de casos, ese output no es ejecutable porque falta granularidad. Lo que funciona es especificar el formato del plan y los criterios que cada paso debe cumplir.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Y hay una distinci\u00f3n que conviene dejar clara antes de ver c\u00f3digo: Planning es un patr\u00f3n de arquitectura. CrewAI, LangGraph o Google ADK son implementaciones del patr\u00f3n, no el patr\u00f3n en si. Confundir herramienta con patr\u00f3n lleva a soluciones acopladas a un framework en lugar de dise\u00f1os que sobreviven a los cambios de tecnolog\u00eda.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En ese sentido, Planning es una familia de estrategias de control para ejecuci\u00f3n multi-step en sistemas basados en LLMs. El modelo puede participar tanto en planificaci\u00f3n como en ejecuci\u00f3n y evaluaci\u00f3n dentro de un loop orquestado. Separar esas responsabilidades es lo que permite que el patr\u00f3n funcione en producci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo: Planner-Writer con CrewAI<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from crewai import Agent, Task, Crew, Process\nfrom langchain_openai import ChatOpenAI\n\nllm = ChatOpenAI(model=\"gpt-4o\")\n\nplanner_writer = Agent(\n    role=\"Planificador y Ejecutor\",\n    goal=\"Descomponer tareas complejas en pasos ejecutables y ejecutarlas.\",\n    backstory=(\n        \"Eres un analista t\u00e9cnico que siempre genera un plan estructurado \"\n        \"antes de actuar. Cada paso del plan tiene una entrada definida, \"\n        \"un criterio de \u00e9xito y una salida concreta.\"\n    ),\n    llm=llm,\n)\n\ntopic = \"An\u00e1lisis de patrones ag\u00e9nticos para sistemas LLM\"\ntask = Task(\n    description=(\n        f\"1. Crea un plan de an\u00e1lisis sobre: '{topic}'\\n\"\n        f\"   - M\u00e1ximo 5 pasos.\\n\"\n        f\"   - Cada paso debe ser ejecutable de forma independiente.\\n\"\n        f\"   - Indica las dependencias entre pasos.\\n\"\n        f\"2. Ejecuta cada paso del plan en orden.\\n\"\n        f\"3. Genera un resumen final basado en los resultados.\"\n    ),\n    expected_output=(\n        \"Un informe con:\\n\"\n        \"### Plan\\n- Paso N: descripci\u00f3n (depende de: X)\\n\"\n        \"### Ejecuci\u00f3n\\n- Resultado de cada paso.\\n\"\n        \"### Conclusi\u00f3n\\n- S\u00edntesis de los hallazgos.\"\n    ),\n    agent=planner_writer,\n)\n\ncrew = Crew(agents=&#91;planner_writer], tasks=&#91;task], process=Process.sequential)\nresult = crew.kickoff()\nprint(result)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El patr\u00f3n Planner-Writer es la forma m\u00e1s simple de Planning. Un solo agente genera el plan y lo ejecuta. Funciona para tareas donde la especializaci\u00f3n no var\u00eda entre pasos. Cuando cada paso requiere expertise distinta, escalas a multi-agente, pero eso es territorio del patr\u00f3n Multi-Agent.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Re-planificaci\u00f3n: Cuando el plan original ya no sirve<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed es donde Planning din\u00e1mico se diferencia del est\u00e1tico. La re-planificaci\u00f3n ocurre cuando:<\/p>\n\n\n\n<ul class=\"wp-block-list\" class=\"wp-block-list\">\n<li>Un paso produce un resultado inesperado que cambia el contexto.<\/li>\n\n\n\n<li>Falta informaci\u00f3n cr\u00edtica para continuar.<\/li>\n\n\n\n<li>Un paso falla y necesita un enfoque alternativo.<\/li>\n\n\n\n<li>Se descubre que el plan original omite un aspecto importante.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">El mecanismo es simple en teor\u00eda. El agente eval\u00faa el resultado de cada paso, decide si el plan sigue siendo v\u00e1lido, y si no, genera una versi\u00f3n actualizada. En pr\u00e1ctica, hay un problema: la re-planificaci\u00f3n consume tokens y tiempo. Sin l\u00edmites, un agente puede entrar en un bucle donde replanifica constantemente sin ejecutar nada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La soluci\u00f3n es un presupuesto de re-planificaci\u00f3n. Los sistemas suelen limitar el numero de planificaciones para evitar loops, t\u00edpicamente mediante un presupuesto fijo definido por el dise\u00f1ador del sistema. Si el agente agota ese presupuesto, ejecuta el plan actual o reporta el bloqueo. Adem\u00e1s, cada planificaci\u00f3n debe justificar por qu\u00e9 el plan anterior era insuficiente, lo que filtra las re-planificaciones innecesarias.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Ejemplo: Planning din\u00e1mico con LangGraph<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>from langgraph.graph import StateGraph, END\nfrom typing import TypedDict\n\nclass PlanningState(TypedDict):\n    goal: str\n    plan: list\n    current_step: int\n    results: list\n    max_replans: int\n    replan_count: int\n    should_replan: bool\n\ndef plan_node(state: PlanningState) -&gt; PlanningState:\n    \"\"\"Genera o re-planifica basado en el objetivo y resultados anteriores.\"\"\"\n    # En producci\u00f3n: llamada al LLM para generar\/revisar el plan\n    plan = &#91;\n        {\"step\": 1, \"action\": \"investigar_contexto\", \"depends_on\": &#91;]},\n        {\"step\": 2, \"action\": \"recopilar_datos\", \"depends_on\": &#91;1]},\n        {\"step\": 3, \"action\": \"analizar_resultados\", \"depends_on\": &#91;2]},\n        {\"step\": 4, \"action\": \"generar_conclusion\", \"depends_on\": &#91;3]},\n    ]\n    return {**state, \"plan\": plan, \"current_step\": 0, \"replan_count\": 0, \"should_replan\": False}\n\ndef execute_step(state: PlanningState) -&gt; PlanningState:\n    \"\"\"Ejecuta el paso actual del plan.\"\"\"\n    step = state&#91;\"plan\"]&#91;state&#91;\"current_step\"]]\n    # En producci\u00f3n: ejecutar la acci\u00f3n real (tool call, LLM call, etc.)\n    result = f\"Resultado de: {step&#91;'action']}\"\n    return {\n        **state,\n        \"results\": state&#91;\"results\"] + &#91;result],\n        \"current_step\": state&#91;\"current_step\"] + 1,\n    }\n\ndef evaluate_step(state: PlanningState) -&gt; PlanningState:\n    \"\"\"Eval\u00faa si el resultado justifica re-planificar.\"\"\"\n    # En producci\u00f3n, esto seria un LLM judge o heuristica basada en:\n    # - discrepancia entre output esperado vs obtenido\n    # - cambio en observaciones de herramientas\n    # - confidence score bajo\n    # Aqui simulamos: re-planificar si el paso actual fue el 2\n    should_replan = (state&#91;\"current_step\"] == 2 and\n                     state&#91;\"replan_count\"] &lt; state.get(\"max_replans\", 3))\n    if should_replan:\n        state&#91;\"replan_count\"] += 1\n    return {**state, \"should_replan\": should_replan}\n\ndef routing_logic(state: PlanningState) -&gt; str:\n    \"\"\"Decide la siguiente acci\u00f3n: continuar, re-planificar o terminar.\"\"\"\n    if state&#91;\"current_step\"] &gt;= len(state&#91;\"plan\"]):\n        return \"done\"\n    if state&#91;\"should_replan\"]:\n        return \"replan\"\n    return \"continue\"\n\ndef build_planning_graph():\n    graph = StateGraph(PlanningState)\n    graph.add_node(\"plan\", plan_node)\n    graph.add_node(\"execute\", execute_step)\n    graph.add_node(\"evaluate\", evaluate_step)\n    graph.set_entry_point(\"plan\")\n    graph.add_edge(\"plan\", \"execute\")\n    graph.add_edge(\"execute\", \"evaluate\")\n    graph.add_conditional_edges(\"evaluate\", routing_logic, {\n        \"continue\": \"execute\",\n        \"replan\": \"plan\",\n        \"done\": END,\n    })\n    return graph.compile()\n\n# Usar el grafo\napp = build_planning_graph()\nresult = app.invoke({\n    \"goal\": \"Analizar tendencias de IA en 2026\",\n    \"results\": &#91;],\n    \"max_replans\": 3,\n    \"plan\": &#91;],\n    \"current_step\": 0,\n    \"replan_count\": 0,\n    \"should_replan\": False,\n})\nprint(result&#91;\"results\"])<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">LangGraph permite modelar Planning como un grafo de estados expl\u00edcito. El grafo tiene tres nodos: plan (genera\/revisa el plan), execute (ejecuta el paso actual), y evaluate (decide si re-planificar). Las transiciones condicionales controlan el flujo: Si evaluate decide que el contexto cambi\u00f3, el grafo vuelve al nodo plan. La ventaja sobre un loop simple es que el grafo es inspeccionable, puedes ver exactamente en qu\u00e9 estado est\u00e1 el agente y por qu\u00e9 tom\u00f3 una decisi\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Deep Research: Un caso aplicado<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Sistemas como Deep Research combinan planificaci\u00f3n ligera, b\u00fasqueda iterativa, reformulaci\u00f3n de consultas, ranking de resultados, retrieval scoring y s\u00edntesis incremental con compresi\u00f3n de contexto. No es Planning puro, sino un loop donde el agente decide que buscar, eval\u00faa los resultados, detecta gaps y genera nuevas queries. La transparencia en los pasos intermedios es lo que permite auditar el proceso.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tabla comparativa: Planning vs alternativas<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><th>Factor<\/th><th>Planning<\/th><th>Workflow fijo<\/th><th>Prompt \u00fanico<\/th><\/tr><tr><td>Flexibilidad<\/td><td>Alta (se adapta al contexto)<\/td><td>Nula (camino predeterminado)<\/td><td>Baja (un solo paso)<\/td><\/tr><tr><td>Previsibilidad<\/td><td>Media (depende del modelo)<\/td><td>Alta (determinista)<\/td><td>Alta<\/td><\/tr><tr><td>Latencia<\/td><td>Alta (plan + ejecuci\u00f3n + re-plan)<\/td><td>Baja<\/td><td>M\u00ednima<\/td><\/tr><tr><td>Complejidad<\/td><td>Alta (gesti\u00f3n de estado, re-plan)<\/td><td>Baja<\/td><td>M\u00ednima<\/td><\/tr><tr><td>Depuraci\u00f3n<\/td><td>Media (requiere logging de pasos)<\/td><td>F\u00e1cil (traza determinista)<\/td><td>Dif\u00edcil (caja negra)<\/td><\/tr><tr><td>Caso ideal<\/td><td>Objetivos complejos, camino incierto<\/td><td>Procesos repetitivos, camino conocido<\/td><td>Tareas simples, un solo paso<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Observabilidad<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un sistema de Planning sin m\u00e9tricas es un plan que nadie puede auditar. Estos son los indicadores m\u00ednimos:<\/p>\n\n\n\n<ul class=\"wp-block-list\" class=\"wp-block-list\">\n<li><strong>Profundidad del plan<\/strong>: N\u00famero de pasos generados. Si tiende a crecer sin l\u00edmite, el modelo no sabe cu\u00e1ndo detener la descomposici\u00f3n.<\/li>\n\n\n\n<li><strong>Tasa de re-planificaci\u00f3n<\/strong>: Cu\u00e1ntas veces el plan se modific\u00f3. Un valor alto indica que el plan inicial era insuficiente o que el dominio es inherentemente incierto.<\/li>\n\n\n\n<li><strong>Tasa de completitud<\/strong>: Porcentaje de pasos ejecutados respecto al plan total. Si muchos pasos se abandonan, el plan era realista en teor\u00eda pero no en pr\u00e1ctica.<\/li>\n\n\n\n<li><strong>Latencia por fase<\/strong>: Tiempo en planificaci\u00f3n vs ejecuci\u00f3n. Una metrica util en producci\u00f3n es el ratio de tiempo invertido en planificaci\u00f3n vs ejecuci\u00f3n, aunque el umbral depende del dominio.<\/li>\n\n\n\n<li><strong>Trace de decisiones<\/strong>: Registro de cada decisi\u00f3n de re-planificaci\u00f3n con su justificaci\u00f3n. Sin esto, no puedes distinguir entre un agente que se adapta y uno que est\u00e1 perdido.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En producci\u00f3n, mantenemos un log estructurado por paso: <code>{step_id, action, input_summary, output_summary, duration_ms, replan_reason}<\/code>. Eso es suficiente para reconstruir cualquier ejecuci\u00f3n y entender por qu\u00e9 el agente tom\u00f3 cada decisi\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Planning combinado con otros patrones<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Planning rara vez opera solo. Se integra con los patrones que ya hemos cubierto:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con <strong>Tool Use<\/strong>, el plan determina qu\u00e9 herramientas llamar y en qu\u00e9 orden. Cada paso del plan puede invocar herramientas diferentes, y los resultados de las herramientas alimentan la decisi\u00f3n de re-planificar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con <strong>Reflection<\/strong>, cada paso del plan pasa por un Critic antes de considerarse completo. El Critic eval\u00faa si el output cumple el criterio de \u00e9xito definido en el plan. Si no, el paso se re-ejecuta o el plan se ajusta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con <strong>Routing<\/strong>, el router decide si una petici\u00f3n merece Planning o puede resolverse con un flujo m\u00e1s simple. Peticiones directas van al modelo. Peticiones complejas van al planificador.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Con <strong>Parallelization<\/strong>, los pasos del plan que no tienen dependencias entre s\u00ed se ejecutan concurrentemente. Si el plan tiene pasos A, B, C donde B y C dependen solo de A, entonces B y C corren en paralelo despu\u00e9s de A.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Failure modes del Planning<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">En produccion, Planning falla de formas especificas que conviene anticipar:<\/p>\n\n\n\n<ul class=\"wp-block-list\" class=\"wp-block-list\">\n<li><strong>Error propagado entre pasos<\/strong>: Si el paso 1 produce un output ligeramente incorrecto, los pasos 2-N se ejecutan sobre una base err\u00f3nea. El error se amplifica en lugar de corregirse.<\/li>\n\n\n\n<li><strong>Planes basados en supuestos incorrectos<\/strong>: El plan parece perfecto pero se basa en informaci\u00f3n incompleta o desactualizada desde el paso 1. Nadie lo detecta hasta el final.<\/li>\n\n\n\n<li><strong>Tool hallucination en el plan<\/strong>: El agente genera un plan que referencia herramientas que no existen o usa par\u00e1metros inv\u00e1lidos. El plan es estructuralmente correcto pero no ejecutable.<\/li>\n\n\n\n<li><strong>Acumulaci\u00f3n de errores en pipelines largos<\/strong>: Cada paso introduce un peque\u00f1o error. En pipelines de 10+ pasos, los errores se acumulan hasta que el output final es significativamente peor que el input.<\/li>\n\n\n\n<li><strong>Sobreplanning (over-decomposition)<\/strong>: Descomponer una tarea en demasiados pasos a\u00f1ade latencia sin mejorar la calidad. Un plan de 15 pasos para una tarea que se pod\u00eda resolver en 3 es overhead puro.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">La defensa com\u00fan a todos estos failure modes es evaluaci\u00f3n intermedia, verificar la calidad de cada paso antes de continuar, no solo al final. Sin evaluaci\u00f3n intermedia, Planning es una caja negra que solo revela sus fallos cuando ya es tarde.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En la pr\u00e1ctica, estos sistemas son probabil\u00edsticos y propensos a fallos parciales en cada etapa. Los agentes son ruidosos, las herramientas fallan parcialmente, y el planning no es determinista. Un dise\u00f1o robusto asume fallos y los gestiona, en lugar de asumir que el flujo sera limpio.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Anti-patrones<\/h2>\n\n\n\n<ul class=\"wp-block-list\" class=\"wp-block-list\">\n<li><strong>Planificar tareas simples<\/strong>: Si un prompt o una herramienta resuelve la tarea, Planning a\u00f1ade latencia sin valor. La prueba es directa, ejecuta sin plan y compara resultados.<\/li>\n\n\n\n<li><strong>Plan r\u00edgido sin re-planificaci\u00f3n<\/strong>: Un plan que no se adapta al primer obst\u00e1culo es un workflow disfrazado. Si usas Planning, implementa re-planificaci\u00f3n o usa un workflow fijo.<\/li>\n\n\n\n<li><strong>Bucles de planificaci\u00f3n infinitos<\/strong>: El agente re-planifica sin ejecutar. Sin un presupuesto m\u00e1ximo de planificaciones, esto es el fallo m\u00e1s com\u00fan.<\/li>\n\n\n\n<li><strong>Sin transparencia en los pasos<\/strong>: Sin logging de las decisiones intermedias, un plan fallido es indistinguible de una alucinaci\u00f3n. Exp\u00f3n los pasos.<\/li>\n\n\n\n<li><strong>Descomposici\u00f3n sin criterios de \u00e9xito<\/strong>: Un paso sin criterio de salida claro no es ejecutable. \u00abInvestigar el tema\u00bb es vago. \u00abIdentificar 3 fuentes primarias y resumir cada una en 100 palabras\u00bb es accionable.<\/li>\n\n\n\n<li><strong>Plan plausible pero incorrecto<\/strong>: El peligro m\u00e1s silencioso. El plan parece perfecto, cada paso es razonable, pero se basa en supuestos err\u00f3neos desde el paso 1. Nadie lo detecta hasta el final y el output entero esta viciado. La defensa com\u00fan es evaluaci\u00f3n intermedia, verificar la calidad de cada paso antes de continuar, no solo al final.<\/li>\n\n\n\n<li><strong>Ignorar el trade-off previsibilidad vs flexibilidad<\/strong>: Planning din\u00e1mico es m\u00e1s flexible pero menos predecible. En sistemas cr\u00edticos, el plan debe tener restricciones expl\u00edcitas.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusi\u00f3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Planning es un conjunto de t\u00e9cnicas de orquestaci\u00f3n de agentes LLM que descomponen objetivos en pasos ejecutables, potencialmente con planificaci\u00f3n inicial, ejecuci\u00f3n iterativa y replanificaci\u00f3n basada en feedback. Sin este tipo de orquestaci\u00f3n, los agentes tienden a intentar resolver tareas en un \u00fanico paso y producen outputs superficiales. Con el, pueden descomponer, ejecutar y adaptarse.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Planning es un sistema de control con trade-offs expl\u00edcitos entre cuatro dimensiones: Costo (latencia y tokens), robustez (capacidad de replanificaci\u00f3n), previsibilidad (grado de determinismo) y adaptabilidad (feedback loops). Optimizar una dimensi\u00f3n suele degradar otra. Un sistema con alta robustez y alta adaptabilidad tiende a tener alto costo y baja previsibilidad. El dise\u00f1o consiste en elegir los trade-offs que mejor se alinean con el caso de uso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La pregunta que define si Planning vale la pena es simple: \u00bfEl camino hacia el resultado se conoce de antemano? Si la respuesta es s\u00ed, usa un workflow. Si la respuesta es no, Planning es la herramienta correcta, siempre que implementes planificaci\u00f3n con l\u00edmites, transparencia en los pasos intermedios, y m\u00e9tricas que te digan si el plan est\u00e1 funcionando o si el agente est\u00e1 dando vueltas en c\u00edrculos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Planning no mejora la inteligencia del sistema; mejora su estructura bajo incertidumbre. No se trata de que un modelo mas peque\u00f1o se vuelva mas capaz, sino de que un modelo con Planning obtiene mejor desempe\u00f1o en tareas multi-step bajo restricciones. La diferencia no esta en el modelo, esta en la arquitectura.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfCu\u00e1ndo debo usar Planning?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando una tarea requiere m\u00e1s de un paso y el camino no es fijo. Si puedes manejarlo con un solo prompt o una herramienta, Planning es overhead innecesario. \u00dasalo cuando el \u00abc\u00f3mo\u00bb se descubre durante la ejecuci\u00f3n: Investigaci\u00f3n, an\u00e1lisis, dise\u00f1o de sistemas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfCu\u00e1l es la diferencia entre Planning est\u00e1tico y din\u00e1mico?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">El Planning est\u00e1tico genera el plan una vez y lo sigue. Es predecible y funciona para procesos repetitivos. El din\u00e1mico permite que el plan evolucione durante la ejecuci\u00f3n seg\u00fan nueva informaci\u00f3n o obst\u00e1culos. Para dominios inciertos, el din\u00e1mico es esencial, pero a\u00f1ade latencia y complejidad.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfQu\u00e9 es el patr\u00f3n Planner-Writer?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Un agente que primero genera un plan estructurado y luego lo ejecuta paso a paso. Es la forma m\u00e1s simple de Planning. Un solo agente que planifica y act\u00faa. Cuando cada paso requiere especializaci\u00f3n distinta, escalas a multi-agente.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo evito que el agente entre en bucles de planificaci\u00f3n?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Establece un presupuesto m\u00e1ximo de planificaciones. El valor depende del dominio y la tolerancia a latencia. Si el agente planifica m\u00e1s de ese l\u00edmite, ejecuta el plan actual o reporta el bloqueo. Registra los pasos ya ejecutados y exige justificaci\u00f3n para cada planificaci\u00f3n.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfPlanning funciona con modelos locales?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u00ed, pero la calidad de la descomposici\u00f3n escala con el tama\u00f1o del modelo. Modelos de 7B generan planes superficiales; pasos gen\u00e9ricos sin dependencias claras. Los de 13B+ manejan descomposiciones razonables. Los de 30B+ producen planes estructurados con dependencias correctas y criterios de \u00e9xito definidos. Para Planning en producci\u00f3n, 13B es el m\u00ednimo pr\u00e1ctico.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo mido si el Planning mejora la calidad del output?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Compara outputs con y sin Planning en el mismo conjunto de tareas. Mide tres indicadores: Completitud (\u00bfCubri\u00f3 todos los aspectos?), coherencia (\u00bfEl output sigue la estructura del plan?) y tasa de re-planificaci\u00f3n (\u00bfEl plan original era suficiente?). Si Planning no mejora estos indicadores de forma consistente, probablemente no lo necesitas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Planning: Planificaci\u00f3n est\u00e1tica vs din\u00e1mica, re-planificaci\u00f3n, Planner-Writer, y c\u00f3mo descomponer objetivos complejos en pasos ejecutables<\/p>\n","protected":false},"author":1,"featured_media":703,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[135,6],"tags":[125,121,146,145,147,82,86,85,144],"class_list":["post-691","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agentes","category-ia-automatizacion","tag-agentes-ia","tag-agentic-patterns","tag-crewai","tag-deep-research","tag-descomposicion-de-tareas","tag-langchain","tag-langgraph","tag-llm","tag-planning"],"_links":{"self":[{"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/posts\/691","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/comments?post=691"}],"version-history":[{"count":3,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/posts\/691\/revisions"}],"predecessor-version":[{"id":716,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/posts\/691\/revisions\/716"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/media\/703"}],"wp:attachment":[{"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/media?parent=691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/categories?post=691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atlaszn.com\/blog\/wp-json\/wp\/v2\/tags?post=691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}