Voltar para a documentação
Guia 00

Pipeline de síntese — reunir os documentos, descobrir as contradições

A pipeline de síntese multi-documento toma um conjunto de páginas/documentos de um arquivo e produz páginas wiki reunidas: cada página sintetiza as fontes, sinaliza onde as fontes não estão de acordo (contradiction detection), respeita as quotas de token…

2 min de leitura

A pipeline de síntese multi-documento toma um conjunto de páginas/documentos de um arquivo e produz páginas wiki reunidas: cada página sintetiza as fontes, sinaliza onde as fontes não estão de acordo (contradiction detection), respeita as quotas de tokens/chamadas/páginas por corrida, e toca o sistema de ficheiros só depois da aprovação seletiva daquilo que se quer inserir.

Funcionalidade Community (a pipeline corre nas mesmas infraestruturas do chat orchestrator; os limites de orçamento por corrida). Fontes: docs/SERVICES.md (o domínio Synthesis, synthesisPageWriter.ts), README.md:33. Linhas de proveniência: FACT-CENSUS.md F-SYNTH-1.

Como corre a pipeline

A pipeline é orquestrada por runSynthesisPipeline (fachada synthesisService.ts; o corpo em synthesis/synthesisStages.ts — runPipelineStages, callSynthesisLLMStage, …):

PassoO que faz
1. Extração de entidadesdo corpus selecionado (synthesisStages.ts:569)
2. Página por arquivogeneratePageSummary por página (:282)
3-4. O fundo e a decisãoos blocos finais com o system prompt (a injeção do bloco wiki: Pass 4 só no papel SYSTEM, synthesisStages.ts:784-788)
ContradiçõessynthesisContradictionService.ts: o emparcer das candidatas via Jaccard (limiar 0.15) + o juiz LLM por par (judgePairContradiction) + os marcadores de contradição nas páginas
Órfãs e wikilinks partidossynthesisOrphanService.ts (detectOrphanPages, detectBrokenWikilinks)
EscritasynthesisPageWriter.ts: applyApprovedChanges persiste as alterações aprovadas; o frontmatter de fonte (buildSourceFrontmatter) cita a proveniência

Seguimento do orçamento

BudgetTracker (synthesisBudgetService.ts) limita tokens / chamadas LLM / páginas por corrida (a configuração via loadBudgetConfig): a pipeline pára quando o orçamente esgota — a saída já escrita fica válida. O cão de guarda do orçamento está em paridade com o do chat orchestrator.

A aprovação seletiva

As alterações propostas pela síntese NÃO aterram automaticamente na wiki: passam pelo fluxo de aprovação (applyApprovedChanges persiste só aquilo que quem aprova confirmou). A pré-visualização determinista (a mesma máquina de wikiWriteService) precede cada escrita; as páginas propostas levam o frontmatter de fonte.

Deteção de contradições

Os pares candidatos formam-se por similaridade (Jaccard, limiar 0.15) e os pares suspeitos passam ao juiz LLM (judgePairContradiction): o resultado = os marcadores de contradição nas páginas envolvidas (buildContradictionMarker) + o resumo da afirmação (extractClaimSummary). A fidelidade do processo é amostrada semanalmente (runFidelitySample, domingo 03:00 — synthesisFidelityService.ts).

Gatilhos e filas de trabalho

  • Pós-OCR: a fila synthesisTriggerService (onOcrJobCompleted) põe em fila as corridas de síntese após a conclusão do OCR, com arrefecimento (isCooldownActive).
  • Reaper: o scheduler synthesisReaperJob (a cada 15 minutos) troca as corridas PROCESSING órfãs para FAILED.

Este guia cobre a superfície operacional do pipeline de síntese; a profundidade técnica vive no post gémeo:

Provenance

SecçãoFonte
Fachada / passos / orçamento / contradiçõesdocs/SERVICES.md (§ Synthesis + os módulos synthesis*) — F-SYNTH-1
Gatilhos / reaperdocs/SERVICES.md (§ Schedulers & jobs — synthesisTriggerService, synthesisReaperJob)
A linha do READMEREADME.md:33 (a linha do synthesis) — F-SYNTH-1
A injeção wiki / Pass 4docs/WIKI_SCHEMA_LAYER.md (§ Injection seams — synthesisStages.ts:784-788)

---

Referência operativa — Simmetric Chat v0.28.1 (documentos atualizados a 2026-10-02, SHA do census `aca5b8ff`).