> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Eliminación semanal de duplicados y limpieza de Knowledge

export const UseCaseHero = ({title, description, prompt, category, features, devinUrl, agent, intent, playbookId, type}) => {
  const encodedPrompt = encodeURIComponent(prompt || '');
  const tag = 'docs-use-case-gallery';
  const utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=hero-cta';
  const agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  const devinHref = type === 'schedule' ? 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + (prompt ? '&prompt=' + encodedPrompt : '') : type === 'review' ? 'https://app.devin.ai/review?' + utm : agent === 'ada' ? 'https://app.devin.ai/search?' + utm + '&noSubmit=true' + (prompt ? '&prompt=' + encodedPrompt : '') : devinUrl ? devinUrl.includes('?') ? devinUrl + '&' + utm + agentParams : devinUrl + '?' + utm + agentParams : prompt ? 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encodedPrompt : 'https://app.devin.ai/?' + utm + agentParams;
  const buttonLabel = type === 'schedule' ? 'Schedule in Devin ↗' : type === 'review' ? 'Set Up Devin Review ↗' : agent === 'advanced' ? 'Try in Devin ↗' : agent === 'dana' ? 'Try in Dana ↗' : agent === 'ada' ? 'Try in Ask Devin ↗' : 'Try in Devin ↗';
  const featureList = features ? features.split(',').map(f => f.trim()) : [];
  return <div className="uc-hero">
      <div className="uc-hero-inner">
        <div className="uc-hero-left">
          <h1 className="uc-hero-title">{title}</h1>
          <p className="uc-hero-desc">{description}</p>
          <div>
            <a href={devinHref} target="_blank" rel="noopener noreferrer" className="try-in-devin-btn">
              {buttonLabel}
            </a>
          </div>
        </div>
        <div className="uc-hero-meta">
          <div className="uc-meta-item">
            <span className="uc-meta-label">Author</span>
            <span className="uc-meta-value">Cognition</span>
          </div>
          <div className="uc-meta-item">
            <span className="uc-meta-label">Category</span>
            <span className="uc-meta-value">{category}</span>
          </div>
          {featureList.length > 0 && <div className="uc-meta-item">
              <span className="uc-meta-label">Features</span>
              <span className="uc-meta-value">{featureList.join(', ')}</span>
            </div>}
        </div>
      </div>
    </div>;
};

export const PromptBlock = ({children, type, agent, intent, playbookId}) => {
  var utm = 'utm_source=docs&utm_medium=use-case-gallery&utm_campaign=prompt-block';
  var tag = 'docs-use-case-gallery';
  var agentParams = (agent ? '&agent=' + agent : '') + (intent ? '&intent=' + intent : '') + (playbookId ? '&playbookId=' + playbookId : '');
  var label = type === 'schedule' ? 'Schedule in Devin' : type === 'playbook' ? 'Create Playbook' : type === 'knowledge' ? 'Add to Knowledge' : agent === 'advanced' ? 'Try in Devin' : agent === 'dana' ? 'Try in Dana' : agent === 'ada' ? 'Try in Ask Devin' : 'Try in Devin';
  var buildUrl = function (text) {
    var encoded = encodeURIComponent(text);
    if (type === 'schedule') return 'https://app.devin.ai/settings/schedules/create?' + utm + agentParams + '&prompt=' + encoded;
    if (type === 'playbook') return 'https://app.devin.ai/settings/playbooks/create?' + utm + '&body=' + encoded;
    if (type === 'knowledge') return 'https://app.devin.ai/knowledge?' + utm + '&body=' + encoded;
    if (agent === 'ada') return 'https://app.devin.ai/search?' + utm + '&noSubmit=true&prompt=' + encoded;
    return 'https://app.devin.ai/?tags=' + tag + '&' + utm + agentParams + '&prompt=' + encoded;
  };
  const ref = React.useRef(null);
  const [href, setHref] = React.useState('#');
  React.useEffect(() => {
    if (!ref.current) return;
    var codeEl = ref.current.querySelector('pre code');
    if (codeEl) {
      var text = codeEl.textContent.trim();
      if (text) setHref(buildUrl(text));
    }
    var header = ref.current.querySelector('[data-component-part="code-block-header"]');
    if (header && !header.querySelector('.prompt-block-devin-link')) {
      var link = document.createElement('a');
      link.href = href;
      link.target = '_blank';
      link.rel = 'noopener noreferrer';
      link.className = 'prompt-block-devin-link';
      link.style.cssText = 'display:inline-flex;align-items:center;gap:6px;text-decoration:none;color:#fff;font-size:11px;font-weight:500;padding:4px 10px;border-radius:6px;white-space:nowrap;background:#317CFF;transition:background 0.2s;margin-left:8px;';
      link.innerHTML = '<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/></svg> ' + label;
      link.onmouseenter = function () {
        link.style.background = '#2968D9';
      };
      link.onmouseleave = function () {
        link.style.background = '#317CFF';
      };
      header.appendChild(link);
    }
    var existingLink = ref.current.querySelector('.prompt-block-devin-link');
    if (existingLink && href !== '#') existingLink.href = href;
  });
  return <div className="prompt-block" ref={ref}>{children}</div>;
};

<UseCaseHero title="Eliminación de duplicados y limpieza semanal de Knowledge" description="Programa una sesión de Devin los lunes que clasifique y priorice las nuevas sugerencias, fusione las entradas duplicadas y resuelva las instrucciones en conflicto, para que tu base de conocimiento se mantenga precisa sin trabajo manual." prompt="Revisa todas las sugerencias de Knowledge de la semana pasada. Fusiona los duplicados, resuelve conflictos entre entradas, descarta las sugerencias obsoletas e incorpora las que sean realmente nuevas con descripciones claras de los disparadores. Luego analiza el Knowledge existente en busca de entradas que hagan referencia a patrones obsoletos." category="Optimización con Devin" features="Programaciones, avanzado" type="schedule" agent="advanced" />

<div className="uc-detail-wrapper">
  <Tip>¿No quieres configurarlo manualmente? Pega un enlace a esta página en una sesión de Devin y pídele que lo configure todo por ti.</Tip>

  <Steps>
    <Step title="Escribe tu prompt de limpieza de los lunes">
      A medida que tu equipo trabaja con Devin durante la semana, las [sugerencias de Knowledge](/es/product-guides/knowledge) se acumulan en cada sesión: patrones que Devin aprendió, comandos que funcionaron, convenciones que descubrió. Para el viernes, podrías tener una docena de sugerencias nuevas esperando junto a entradas existentes que hacen referencia a archivos renombrados o APIs obsoletas. Una sesión recurrente de Devin los lunes por la mañana puede procesar todo esto antes de que tu equipo empiece la semana.

      Tu prompt debe cubrir dos tareas: clasificar y priorizar las sugerencias de la semana pasada, y eliminar duplicados en las entradas existentes. Aquí tienes un prompt que maneja ambas:

      <PromptBlock type="schedule" agent="advanced">
        ```txt Monday knowledge deduplication and cleanup theme={null}
        Review and maintain our knowledge base:

        1. Triage pending suggestions from the past week:
           - If new and useful, propose a knowledge entry with a specific trigger description
           - If it overlaps with an existing entry, propose merging into the existing one
           - If outdated or too vague, propose dismissing it
        2. Deduplicate and resolve conflicts in existing entries:
           - Find entries covering the same topic (e.g., two entries about Docker build steps) and propose consolidating into one
           - Identify entries giving contradictory advice (e.g., different pool sizes) and propose a resolution based on recency
           - Flag entries referencing old file paths, deprecated APIs, or removed packages
        ```
      </PromptBlock>

      Para recibir una notificación cuando termine cada ejecución, configura un **canal de Slack** para la tarea programada; Devin publicará allí un resumen de los cambios propuestos para que tu equipo pueda revisarlos sin abrir la sesión.
    </Step>

    <Step title="Crea la programación de los lunes a las 8:00">
      Necesitas una [sesión programada](/es/product-guides/scheduled-sessions) para que Devin tenga acceso a las herramientas de gestión de Knowledge.

      1. Ve a **Schedules** en la barra lateral izquierda de [app.devin.ai](https://app.devin.ai/?utm_source=docs\&utm_medium=use-case-gallery), o usa la opción **Schedule Devin** en el menú contextual del cuadro de entrada en la página de inicio
      2. Haz clic en **Create schedule** y establece la frecuencia en **Weekly — every Monday at 8:00 AM** en la zona horaria de tu equipo, dando una semana completa de sugerencias para procesar antes de que empiece la nueva semana
      3. Pega tu prompt de limpieza de los lunes
      4. Opcionalmente, adjunta un [playbook](/es/product-guides/creating-playbooks) si quieres estandarizar cómo Devin da formato a las nuevas entradas u organiza las carpetas de Knowledge

      Devin envía notificaciones por correo electrónico cuando cada ejecución programada empieza y termina. Si tu equipo usa la [integración con Slack](/es/integrations/slack), Devin también publicará el resumen directamente en tu canal. Para obtener más información sobre las opciones de programación, consulta la [guía de Scheduled Sessions](/es/product-guides/scheduled-sessions).
    </Step>

    <Step title="Revisa y aprueba la primera ejecución del lunes">
      Después de que se complete la primera ejecución del lunes, abre la sesión para revisar lo que propone Devin. **Devin no aplica automáticamente cambios de Knowledge**: propone creaciones, fusiones y eliminaciones, y tú apruebas o rechazas manualmente cada una. Un resumen típico se vería así:

      ```
      Knowledge Deduplication & Cleanup — Monday, Feb 10

      Proposed new entries (3):
        - "Run prisma migrate deploy before integration tests" — from session #4821
        - "Redis cache TTL for user profiles is 5 minutes" — from session #4835
        - "Use vitest, not jest, for frontend unit tests" — from session #4802

      Proposed merges (2):
        - Consolidate "Docker build steps" + "Container build process" → single entry
        - Merge two overlapping entries about API error handling conventions

      Proposed removal (1):
        - "Bundle with webpack" — project migrated to Vite in December

      Proposed dismissals (4 suggestions):
        - Already covered by existing knowledge

      Conflict resolution (1):
        - Two entries disagreed on connection pool size (5 vs 10)
        - Recommends pool_size=10 based on the more recent performance tuning session
      ```

      Revisa cada propuesta y apruébala o recházala en la sesión. Usa las primeras ejecuciones para calibrar: si Devin es demasiado agresivo al proponer eliminaciones, agrega una nota en tu prompt: *"En caso de duda, conserva la entrada y márcala para revisión en lugar de proponer su eliminación."*
    </Step>

    <Step title="Profundiza más con auditorías mensuales">
      Una vez que tu limpieza semanal de los lunes funcione sin problemas, utiliza estos prompts en una sesión puntual con Devin cada uno o dos meses para un mantenimiento más profundo:

      <PromptBlock agent="advanced">
        ```txt Auditoría mensual de obsolescencia del conocimiento theme={null}
        Contrasta cada entrada de conocimiento con el estado actual de
        nuestros repositorios conectados. Marca las entradas que hagan referencia
        a archivos renombrados, paquetes eliminados, API obsoletas o
        convenciones desactualizadas. Para cada entrada obsoleta, propone
        una versión actualizada basada en lo que realmente hace hoy la base
        de código.
        ```
      </PromptBlock>

      <PromptBlock agent="advanced">
        ```txt Reorganizar el conocimiento en carpetas theme={null}
        Reorganiza la base de conocimiento en carpetas: "Backend",
        "Frontend", "DevOps", "Testing", "Diseño de API". Mueve las
        entradas existentes a las carpetas correctas y actualiza las
        descripciones de los triggers para que sean más específicas.
        ```
      </PromptBlock>

      **Consejo:** La programación semanal de los lunes se encarga de la eliminación continua de duplicados y de la clasificación y priorización de sugerencias. Estas auditorías más profundas —análisis de brechas de cobertura y reorganización de carpetas— son tareas puntuales que es mejor ejecutar manualmente cada uno o dos meses.
    </Step>
  </Steps>
</div>
