Cada nova conversa começa com um agente que esqueceu seus documentos. Ele pode relê‑los, ao custo de tempo e contexto, ou pode consultar algo que se lembra. GroupDocs.Search.Mcp mantém um índice de texto completo nomeado no disco, localmente, que sobrevive entre sessões e reinicializações de contêiner, de modo que Claude Desktop, Cursor ou Copilot iniciam cada sessão com os documentos do projeto já pesquisáveis e os atualizam com uma única chamada quando os arquivos mudam:

Eu editei alguns contratos. Atualize o índice de contratos, então me diga quais contratos mencionam uma penalidade agora.

A versão passo a passo com configuração e solução de problemas está na documentação: How to keep a document index current as files change.

O que significa “memória” para um agente?

Na prática, duas coisas: estado que persiste fora da conversa e uma forma barata de manter esse estado verdadeiro. O histórico de chat falha em ambos: ele termina com a sessão, e nada o atualiza quando um documento muda. Um índice de pesquisa é mais adequado para documentos. Ele vive no disco ao lado deles, responde “quais arquivos dizem X” sem carregá‑los, e pode ser atualizado de forma incremental.

session 1    add_to_index --> index "contracts" --+
                                                 |  kept on disk in
session 2    search, get_text_fragments <--------+  /data/.groupdocs-search-
             (nothing is re-read)                    index/contracts
files edit   update_index --> re-reads changed, added, deleted files only
new project  create_index {"indexName":"legal-2026"} --> a separate index

Como funciona a atualização?

update_index compara o índice com os arquivos no disco e relê apenas o que mudou. Aqui está o que o servidor retornou em nosso teste, depois que uma cláusula de penalidade foi adicionada a um contrato entre duas chamadas:

-> get_index_info {"indexName":"contracts"}
<- { "documentCount": 5, "indexedPaths": [ "contracts" ],
     "documentsWithErrors": [], "status": "Ready" }

-> update_index {"indexName":"contracts"}
<- Index 'contracts' updated: 0 added, 1 updated, 0 removed;
   5 document(s) in the index.

-> search {"query":"penalty","indexName":"contracts"}
<- documentsFound 3, including the edited initech-nda.docx

As contagens informam o que aconteceu: um arquivo relido, nada mais foi alterado. Arquivos excluídos desaparecem na mesma chamada.

Por que um índice por projeto?

Porque corpora separados merecem respostas separadas. Uma pergunta sobre os contratos deste ano não deve trazer rascunhos do ano passado, e os documentos de um cliente não devem se misturar com os de outro cliente. Nomes de índices são baratos:

-> create_index {"indexName":"legal-2026"}
<- Index 'legal-2026' created. Add documents with add_to_index
   (indexName: 'legal-2026').

Cada índice é uma pasta em /data/.groupdocs-search-index, e get_index_info sem um nome lista todos eles. Você raramente precisa de create_index explicitamente, porque add_to_index cria um índice na primeira utilização, mas nomeá‑los deliberadamente é o que transforma “um índice” em “a memória deste projeto”.

A única regra sobre remoção

O mecanismo remove caminhos que foram adicionados, não arquivos individuais dentro deles. O servidor diz isso claramente quando você tenta:

-> remove_from_index {"documentPath":"contracts/hooli-supply-terms.txt",...}
<- Removal failed for 'contracts/hooli-supply-terms.txt':
   'contracts/hooli-supply-terms.txt' is inside the indexed folder
   'contracts'. GroupDocs.Search removes whole indexed paths only: ...

Portanto, projete para isso: se você espera descartar parte de um corpus mais tarde, como um ano, um cliente ou os rascunhos, indexe essas partes como caminhos separados (contracts/2025, contracts/2026) e cada um pode ser removido individualmente. Excluir um arquivo no disco e executar update_index também o remove.

Mantendo-o atualizado sem solicitar

create_index (optional)
      |
      v
add_to_index ---> search ---> get_text_fragments
      ^              ^
      |              |  get_index_info: counts, paths, status
update_index  (files changed on disk)
      |
remove_from_index  (only a path that was given to add_to_index)

Três maneiras práticas de tornar a atualização automática:

  1. Nas instruções do agente. Uma linha em CLAUDE.md ou AGENTS.md, “chame update_index para o índice deste projeto antes de responder se os arquivos podem ter mudado”, faz o agente executá‑la no início de uma sessão.
  2. Em um agendamento. Qualquer automação compatível com MCP pode chamar update_index todas as noites; quando pouco mudou, a chamada é rápida.
  3. Após uma cópia em massa. Uma chamada captura todos os arquivos adicionados.

Os índices também sobrevivem a atualizações: índices criados por GroupDocs.Search 22.7 a 26.8 são convertidos na primeira utilização, com um backup mantido ao lado deles.

O que o agente decide e o que o índice faz

O que o agente decide O que o índice faz
qual índice uma pergunta pertence mantém cada índice nomeado em sua própria pasta
quando os arquivos podem ter mudado relê apenas arquivos alterados, adicionados e excluídos
quais palavras pesquisar e variantes tentar corresponde a palavras, frases, intervalos; relata os termos encontrados
quanto contexto citar retorna trechos com o número solicitado de palavras ao redor
o que dizer a você nada: ele retorna contagens, caminhos e texto, nunca conclusões

A divisão é deliberada. O julgamento permanece com o modelo, e os fatos dos quais ele raciocina vêm de uma ferramenta cujo output você pode inspecionar.

Limites honestos

  • No modo de avaliação, um índice contém no máximo 100 documentos e uma pesquisa retorna no máximo 10. Chame get_license_status antes de confiar em um índice como fonte da verdade.
  • O índice persiste apenas se /data (ou o volume do índice) for uma pasta host montada; caso contrário, ele desaparece com o contêiner.
  • O índice contém o texto dos documentos: proteja‑lo e descarte‑o como os documentos.
  • Apenas Docker; no Linux adicione --user "$(id -u):$(id -g)" para que o contêiner possa gravar o índice.

Perguntas Frequentes

O agente lembra dos meus documentos entre sessões?
Com um índice persistente, sim: o índice permanece no disco e a próxima sessão o pesquisa sem reler nada.

Preciso reconstruir o índice quando os arquivos mudam?
Não. update_index relê apenas arquivos alterados, adicionados e excluídos.

Posso manter o índice separado dos documentos somente leitura?
Sim. Monte os documentos como somente leitura, monte uma pasta gravável em /index e defina GROUPDOCS_MCP_INDEX_PATH=/index.

Aprofunde-se