Синтез-конвейер — объединять документы, вскрывать противоречия
Синтез-конвейер мульти-документа берёт набор страниц/документов архива и производит объединённые вики-страницы: каждая страница синтезирует источники, сигналит, где источники не согласны (contradiction detection), соблюдает бюджеты токенов/вызовов/страни…
Синтез-конвейер мульти-документа берёт набор страниц/документов архива и производит объединённые вики-страницы: каждая страница синтезирует источники, сигналит, где источники не согласны (contradiction detection), соблюдает бюджеты токенов/вызовов/страниц на запуск, и трогает файловую систему только после выборочного одобрения того, что хотят внести.
Функция Community (конвейер работает на тех же инфраструктурах chat orchestrator; бюджетные лимиты на запуск). Источники:docs/SERVICES.md(домен Synthesis,synthesisPageWriter.ts),README.md:33. Строоки происхождения:FACT-CENSUS.mdF-SYNTH-1.
Как работает конвейер
Конвейер оркестрируется runSynthesisPipeline (фасад synthesisService.ts; тело в synthesis/synthesisStages.ts — runPipelineStages, callSynthesisLLMStage, …):
| Шаг | Что делает |
|---|---|
| 1. Извлечение сущностей | из выбранного корпуса (synthesisStages.ts:569) |
| 2. Страница на архив | generatePageSummary на страницу (:282) |
| 3-4. Фонетика и решение | финальные блоки с system prompt (внедрение wiki-блока: Pass 4 только на роли SYSTEM, synthesisStages.ts:784-788) |
| Противоречия | synthesisContradictionService.ts: спаривание кандидатов через Jaccard (порог 0.15) + LLM-судья на пару (judgePairContradiction) + маркеры противоречий на страницах |
| Сироты и битые викиссылки | synthesisOrphanService.ts (detectOrphanPages, detectBrokenWikilinks) |
| Запись | synthesisPageWriter.ts: applyApprovedChanges persistирует одобренные правки; frontmatter источника (buildSourceFrontmatter) цитирует происхождение |
Трекинг бюджета
BudgetTracker (synthesisBudgetService.ts) ограничивает токены / LLM-вызовы / страницы на запуск (конфигурация через loadBudgetConfig): конвейер останавливается, когда бюджет исчерпан — уже записанный вывод остаётся действительным. Бюджетный watchdog наравне с chat orchestrator-ским.
Выборочное одобрение
Правки, предложенные синтезом, НЕ приземляются автоматически в вики: они проходят через поток одобрения (applyApprovedChanges сохраняет только то, что утверждающий подтвердил). Детерминированное превью (та же машина wikiWriteService) предшествует каждой записи; страницы-предложения несут frontmatter источника.
Обнаружение противоречий
Пары-кандидаты образуются по похожести (Jaccard, порог 0.15), подозрительные пары идут к LLM-судье (judgePairContradiction): результат = маркеры противоречий на замешанных страницах (buildContradictionMarker) + резюме утверждения (extractClaimSummary). Плотность процесса сэмплируется еженедельно (runFidelitySample, воскресенье 03:00 — synthesisFidelityService.ts).
Триггеры и рабочие очереди
- Пост-OCR: очередь
synthesisTriggerService(onOcrJobCompleted) ставит в очередь синтез-запуски после OCR-завершения, с выдержкой (isCooldownActive). - Reaper: планировщик
synthesisReaperJob(каждые 15 минут) переключает осиротевшиеPROCESSING-запуски вFAILED.
Это руководство описывает операционную поверхность синтез-конвейера; техническая глубина живёт в статье-близнеце:
Provenance
| Раздел | Источник |
|---|---|
| Фасад / этапы / бюджет / противоречия | docs/SERVICES.md (§ Synthesis + модули synthesis*) — F-SYNTH-1 |
| Триггеры / reaper | docs/SERVICES.md (§ Schedulers & jobs — synthesisTriggerService, synthesisReaperJob) |
| Строка README | README.md:33 (строка синтеза) — F-SYNTH-1 |
| Внедрение вики / Pass 4 | docs/WIKI_SCHEMA_LAYER.md (§ Injection seams — synthesisStages.ts:784-788) |
---
Справочник оператора — Simmetric Chat v0.28.1 (документы обновлены 2026-10-02, SHA переписи `aca5b8ff`).