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

# Pulizia e deduplicazione settimanale di 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="Deduplicazione e pulizia settimanale di Knowledge" description="Programma per il lunedì una sessione di Devin che esamina i nuovi suggerimenti, unisce le voci duplicate e risolve le indicazioni in conflitto, così la tua base di conoscenza rimane accurata senza interventi manuali." prompt="Rivedi tutti i suggerimenti per Knowledge dell'ultima settimana. Unisci i duplicati, risolvi i conflitti tra le voci, scarta i suggerimenti obsoleti e integra quelli realmente nuovi con descrizioni chiare delle condizioni di attivazione. Poi analizza la Knowledge esistente per trovare voci che fanno riferimento a pattern deprecati." category="Ottimizzazione di Devin" features="Pianificazioni, Avanzato" type="schedule" agent="advanced" />

<div className="uc-detail-wrapper">
  <Tip>Non vuoi configurarlo manualmente? Incolla un collegamento a questa pagina in una sessione di Devin e chiedigli di impostare tutto per te.</Tip>

  <Steps>
    <Step title="Crea il prompt di pulizia del lunedì">
      Man mano che il tuo team lavora con Devin nel corso della settimana, i [suggerimenti Knowledge](/it/product-guides/knowledge) si accumulano a ogni sessione — schemi che Devin ha appreso, comandi che hanno funzionato, convenzioni che ha scoperto. Entro venerdì potresti avere una dozzina di nuovi suggerimenti in attesa, insieme a voci esistenti che fanno riferimento a file rinominati o API deprecate. Una sessione ricorrente di Devin il lunedì mattina può elaborare tutto questo prima che il tuo team inizi la settimana.

      Il tuo prompt dovrebbe coprire due attività: il triage dei suggerimenti della settimana passata e la deduplicazione delle voci esistenti. Ecco un prompt che gestisce entrambe:

      <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>

      Per ricevere una notifica al completamento di ogni run, configura un **canale Slack** per la pianificazione — Devin pubblicherà lì un riepilogo delle modifiche proposte, così che il tuo team possa rivederle senza aprire la sessione.
    </Step>

    <Step title="Crea la pianificazione per le 8:00 di lunedì">
      Hai bisogno di una [sessione programmata](/it/product-guides/scheduled-sessions) così che Devin abbia accesso agli strumenti di gestione di Knowledge.

      1. Vai su **Schedules** nella barra laterale sinistra di [app.devin.ai](https://app.devin.ai/?utm_source=docs\&utm_medium=use-case-gallery), oppure usa l'opzione **Schedule Devin** nel menu contestuale della casella di input nella home page
      2. Fai clic su **Create schedule** e imposta la frequenza su **Weekly — every Monday at 8:00 AM** nel fuso orario del tuo team, così da avere un'intera settimana di suggerimenti da elaborare prima dell'inizio della nuova settimana
      3. Incolla il tuo prompt di pulizia del lunedì
      4. Facoltativamente, allega un [playbook](/it/product-guides/creating-playbooks) se vuoi standardizzare il modo in cui Devin formatta le nuove voci o organizza le cartelle di Knowledge

      Devin invia notifiche via email quando ogni esecuzione pianificata inizia e termina. Se il tuo team utilizza l'[integrazione con Slack](/it/integrations/slack), Devin pubblicherà anche un riepilogo direttamente nel tuo canale. Per ulteriori informazioni sulle opzioni di pianificazione, consulta la guida [Scheduled Sessions](/it/product-guides/scheduled-sessions).
    </Step>

    <Step title="Esamina e approva la prima esecuzione di lunedì">
      Una volta completata la prima esecuzione del lunedì, apri la sessione per esaminare ciò che Devin propone. **Devin non applica automaticamente le modifiche alla Knowledge** — propone creazioni, merge ed eliminazioni, e tu approvi o rifiuti manualmente ciascuna di esse. Un riepilogo tipico è simile al seguente:

      ```
      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
      ```

      Esamina ogni proposta e approvala o rifiutala dalla sessione. Usa le prime esecuzioni per calibrare: se Devin è troppo aggressivo nel proporre rimozioni, aggiungi una nota al tuo prompt: *"In caso di dubbio, mantieni la voce e contrassegnala per la revisione piuttosto che proporne la rimozione."*
    </Step>

    <Step title="Vai più a fondo con audit mensili">
      Una volta che la tua pulizia settimanale del lunedì funziona senza intoppi, usa questi prompt in una sessione una tantum di Advanced Devin ogni mese o due per una manutenzione più approfondita:

      <PromptBlock agent="advanced">
        ```txt Verifica mensile dell'obsolescenza di Knowledge theme={null}
        Confronta ogni elemento in Knowledge con lo stato attuale dei nostri
        repository collegati. Contrassegna gli elementi che fanno riferimento a file
        rinominati, pacchetti rimossi, API deprecate o convenzioni superate. Per ogni
        elemento obsoleto, proponi una versione aggiornata basata su ciò che la
        codebase fa effettivamente oggi.
        ```
      </PromptBlock>

      <PromptBlock agent="advanced">
        ```txt Riorganizza Knowledge in cartelle theme={null}
        Riorganizza la base di Knowledge in cartelle: "Backend", "Frontend",
        "DevOps", "Testing", "API Design". Sposta gli elementi esistenti nelle
        cartelle corrette e aggiorna le descrizioni dei trigger per renderle più specifiche.
        ```
      </PromptBlock>

      **Suggerimento:** La pianificazione settimanale del lunedì si occupa della deduplicazione continua e dello smistamento dei suggerimenti. Queste verifiche più approfondite — analisi delle lacune di copertura e riorganizzazione delle cartelle — sono attività una tantum che è meglio eseguire manualmente ogni mese o due.
    </Step>
  </Steps>
</div>
