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

# Desduplicação e limpeza semanais no 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="Deduplicação e limpeza semanal do Knowledge" description="Agende uma sessão do Devin às segundas-feiras para fazer a triagem de novas sugestões, mesclar entradas duplicadas e resolver orientações conflitantes — assim, sua base de conhecimento permanece precisa sem esforço manual." prompt="Revise todas as sugestões de Knowledge da última semana. Mescle duplicatas, resolva conflitos entre entradas, descarte sugestões desatualizadas e incorpore as realmente novas com descrições claras de acionamento. Em seguida, faça uma varredura no Knowledge existente em busca de entradas que façam referência a padrões obsoletos." category="Otimização do Devin" features="Agendamentos, Avançado" type="schedule" agent="advanced" />

<div className="uc-detail-wrapper">
  <Tip>Não quer configurar isso manualmente? Cole um link para esta página em uma sessão do Devin e peça para ele configurar tudo para você.</Tip>

  <Steps>
    <Step title="Escreva seu prompt de limpeza para segunda-feira">
      Conforme sua equipe trabalha com Devin ao longo da semana, [knowledge suggestions](/pt-BR/product-guides/knowledge) vão se acumulando a cada sessão — padrões que Devin aprendeu, comandos que funcionaram, convenções que descobriu. Na sexta-feira, você pode ter uma dúzia de novas sugestões aguardando ao lado de entradas existentes que fazem referência a arquivos renomeados ou APIs obsoletas. Uma sessão recorrente do Devin na manhã de segunda-feira pode processar tudo isso antes de sua equipe começar a semana.

      Seu prompt deve cobrir duas tarefas: priorizar as sugestões da semana passada e deduplicar as entradas existentes. Aqui está um prompt que cuida de 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 receber notificações quando cada execução for concluída, configure um **canal do Slack** para o agendamento — Devin publicará ali um resumo das alterações propostas para que sua equipe possa revisar sem abrir a sessão.
    </Step>

    <Step title="Crie o agendamento de segunda-feira às 8h">
      Você precisa de uma [sessão agendada](/pt-BR/product-guides/scheduled-sessions) para que o Devin tenha acesso às ferramentas de gerenciamento de conhecimento.

      1. Acesse **Schedules** na barra lateral esquerda de [app.devin.ai](https://app.devin.ai/?utm_source=docs\&utm_medium=use-case-gallery), ou use a opção **Schedule Devin** no menu de contexto da caixa de entrada na página inicial
      2. Clique em **Create schedule** e defina a frequência como **Weekly — every Monday at 8:00 AM** no fuso horário da sua equipe, garantindo uma semana inteira de sugestões para processar antes do início da nova semana
      3. Cole seu prompt de limpeza de segunda-feira
      4. Opcionalmente, anexe um [playbook](/pt-BR/product-guides/creating-playbooks) se quiser padronizar como o Devin formata novas entradas ou organiza pastas de Knowledge

      O Devin envia notificações por e-mail quando cada execução agendada é iniciada e concluída. Se sua equipe usar a [integração com Slack](/pt-BR/integrations/slack), o Devin também publicará o resumo diretamente no seu canal. Para mais informações sobre opções de agendamento, consulte o [guia de Scheduled Sessions](/pt-BR/product-guides/scheduled-sessions).
    </Step>

    <Step title="Analise e aprove a primeira execução de segunda-feira">
      Depois que a primeira execução de segunda-feira for concluída, abra a sessão para revisar o que o Devin propõe. **O Devin não aplica alterações de Knowledge automaticamente** — ele propõe criações, mesclagens e exclusões, e você aprova ou rejeita cada uma manualmente. Um resumo típico é assim:

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

      Revise cada proposta e aprove ou rejeite-a na sessão. Use as primeiras execuções para calibrar — se Devin estiver muito agressivo ao propor remoções, adicione uma observação ao seu prompt: *"Quando tiver dúvida, mantenha o item e marque-o para revisão em vez de propor a remoção."*
    </Step>

    <Step title="Aprofunde a análise com auditorias mensais">
      Quando sua rotina semanal de limpeza de segunda-feira estiver funcionando bem, use estes prompts em uma sessão pontual do Advanced Devin a cada um ou dois meses para uma manutenção mais profunda:

      <PromptBlock agent="advanced">
        ```txt Monthly knowledge staleness audit theme={null}
        Cross-check every Knowledge entry against the current state of our
        connected repos. Flag entries that reference renamed files, removed
        packages, deprecated APIs, or outdated conventions. For each stale
        entry, propose an updated version based on what the codebase
        actually does today.
        ```
      </PromptBlock>

      <PromptBlock agent="advanced">
        ```txt Reorganize knowledge into folders theme={null}
        Reorganize the Knowledge base into folders: "Backend", "Frontend",
        "DevOps", "Testing", "API Design". Move existing entries into the
        right folders and update trigger descriptions to be more specific.
        ```
      </PromptBlock>

      **Dica:** A rotina semanal de segunda-feira cuida da deduplicação contínua e da triagem de sugestões. Essas auditorias mais profundas — análise de lacunas de cobertura e reorganização de pastas — são tarefas pontuais que funcionam melhor quando executadas manualmente a cada um ou dois meses.
    </Step>
  </Steps>
</div>
