Блог
Технические обзоры

Wiki-движок знаний: правила, директивы и синтез

Как wiki-движок Simmetric Chat управляет записями в архивы трёхслойной моделью инструкций - жёсткие правила, принуждаемые кодом, консультативный schema prompt каждого архива, структурированные поля - и что цепочка приоритетов значит на практике.

Simmetric Team7 мин чтения11/10/2026
Wiki-движок знаний: правила, директивы и синтез

Знание, которое организует себя само - на написанных рельсах

Когда разговоры архивируются в общую базу знаний, вопрос перестаёт быть «можем ли мы хранить страницы» и становится «кто может писать что, где, каким голосом». Wiki-движок Simmetric Chat отвечает трёхслойной моделью инструкций для каждого архива: правила, принуждаемые кодом; редакционный prompt каждого архива, переносимый как данные; и структурированные поля, описывающие ожидаемое поведение. Умозрительная модель, которая остаётся: schema prompt архива для wiki - то же, что CLAUDE.md для репозитория кода - консультативен по природе, силён на практике, никогда не закон.

Эта статья - проход по дизайну: три слоя, что каждый может и не может, цепочка приоритетов при разногласиях, и два встроенных skill'а (wiki_query, wiki_write), делающих истинной машиночитаемую половину обещания.

Слой 1: жёсткие правила, принуждаемые кодом

Первый слой безусловен и независим от конфигурации - он охраняет всё:

  1. Караул файловой системы. validateWritablePath отклоняет любую цель записи вне <archiveBase>/wiki/: анти-обходная проверка идёт первой, затем проверка префикса wiki/. Цель вне wiki/ бросает именованную ошибку, и createPage, и updatePage вызывают караул до всякой записи в файл. raw_sources/ неизменяем по дизайну - ни один endpoint API не пишет под ним.
  2. Зеркало на уровне prompt'а. Всегда активный блок добавляется в конец каждого привязанного к архиву prompt'а, и его формулировка зеркалит караул файловой системы (raw_sources/ is immutable). Модель даже не пытается выход из wiki/ - а если попытается, код гарантирует, что ничего не приземлится.

Спаренность намеренна: prompt держит модель честной, код держит систему безопасной. Доверие живёт во втором свойстве, не в первом.

Слой 2: консультативный schema prompt архива

Schema prompt (schemaPrompt) - свободное консультативное текстовое поле, сохраняемое в config-JSON архива:

  • Форма: до 10000 знаков (≈2500 токенов) внутри config-схемы архива - аддитивный ключ, ноль миграций.
  • Валидация: Zod при каждой записи через PUT /api/archives/:id/config; payload сверх потолка отклоняется 400-й, называющей поле.
  • Договор чтения: архив без сохранённой строки читает config по умолчанию (путь первой записи); архивы со строкой возвращают сохранённый blob дословно. Legacy-бlob'ы сверх потолка обрезаются при инъекции с явной пометкой - никогда не подрезаются молча и не перепроверяются.
  • Консультативен по дизайну: блок входит в prompt'ы как ДАННЫЕ с явной консультативной меткой - никогда как раздача привилегий на уровне system prompt. Никакой санации сверх потолка длины; противоречивые инструкции - принятый риск качества, смягчённый справочным текстом и шаблоном в интерфейсе.

Второй слой - место, где живёт редакционный голос организации: конвенции имён, структура страниц, ожидания к источникам. Это директива - и движок обращается с ней точно так.

Слой 3: структурированные поля

Persona, purpose, scope - структурное описание архива - инжектируются в prompt-путь существующей конфигурацией. Они описывают значения по умолчанию; второй слой берёт верх, когда оба говорят.

Цепочка приоритетов

text
жёсткие правила (код) > schema prompt (консультативный) > структурированные поля
  1. Schema prompt никогда не может перевесить жёсткие правила - prompt объявляет; код принуждает.
  2. В конфликте со структурированными полями schema prompt берёт верх.
  3. Архив без schema prompt ведёт себя как baseline плюс жёсткое правило - ноль приращения, ноль деградации.

Третья строка имеет смысл для умозрительной бухгалтерии оператора: пустое консультативное поле - это завершённая конфигурация, а не отсутствующая. Пустых секций-заглушек, бродящих вокруг prompt'ов, не существует.

Где приземляется консультативный блок

Инъекция имеет явные швы, каждый заносится в system prompt запроса после блока правила поиска и до собственного system prompt workspace:

  • Оркестратор чата (оба пути, стриминг и не-стриминг) - жёсткое правило всегда; консультативный блок едет вместе, если архив его имеет.
  • Решающий проход pipeline синтеза - консультативный блок несёт там роль SYSTEM, тогда как предшествующие проходы (retrieval, черновик, суд противоречий) по дизайну идут без него.

wiki_query и wiki_write: два встроенных

Встроенные wiki_query и wiki_write - skill'ы, чьи пути выполнения не делают ни одного LLM-вызова - путь записи целиком в коде даёт детерминированные превью. Архитектурное следствие острое: инъекция на skill не достигла бы ни одной модели, потому единственная LLM-facing поверхность wiki - system prompt оркестратора. Поведение записи wiki = три слоя выше; функции чтения/записи = простой, аудитируемый код.

Почему эта форма держится

Три свойства, в комбинации:

  • Неизменяемость в основании - raw_sources/ не может переписать никто, модель включительно (караул + всегда активный блок).
  • Консультативная дисциплина - редакционная директива входит как помеченные данные, аудитируемые на уровне правки конфигурации, никогда как привилегия.
  • Детерминированные встроенные - поверхности чтения/записи архива работают без модели, поэтому гарантии не зависят от суждения модели.

Обещание движка скромно и несёт вес: знание организует себя само на написанных рельсах, ровно настолько, насколько рельсы решают. Оператор Simmetric Chat остаётся автором рельсов - в этом тихая суть дизайна.

Читать дальше

Путеводитель несёт полную операторскую справку - полевые таблицы и договоры endpoint'ов - на /ru/docs/wiki-knowledge-engine:

  • Wiki knowledge engine - путеводитель
  • Факты этого поста: строка FACT-CENSUS.md F-WIKI-1 (Wiki Schema Layer: написана, финализирована, сверена с живым кодом на гейте v0.25)

Provenance: Simmetric Chat docs/WIKI_SCHEMA_LAYER.md (v0.28.1, Phase 187/194), validateWritablePath в packages/server/src/utils/archivePath.ts, швы инъекции оркестратора, CHANGELOG.md v0.28.1 - на зафиксированном census'ом документальном состоянии (SHA aca5b8ff).

Похожие статьи

Синтез-конвейер: противоречия, бюджеты, одобрение
Технические обзоры

Синтез-конвейер: противоречия, бюджеты, одобрение

Как конвейер синтеза Simmetric Chat собирает документы архива в вики-страницы - ходы LLM с бюджетом на прогон, обнаружение противоречий с фильтром сходства и LLM-судьёй, и заслон выборочного одобрения прежде, чем что-то тронет файловую систему.

Simmetric Team · 16/10/20267 мин чтения
Квоты и учёт затрат: движок hold-and-settle
Технические обзоры

Квоты и учёт затрат: движок hold-and-settle

Как quota engine Simmetric Chat охватывает токены, хранилище и настоящие деньги - дизайн без второго счётчика на ledger'е, семантика fail-open когда ничего не настроено, и двухфазная hold-and-settle-бронь, делающая потолки расхода заслоном, а не отчётом.

Simmetric Team · 14/10/20268 мин чтения
Adapter-Contract коннекторов: каналы и лимиты
Технические обзоры

Adapter-Contract коннекторов: каналы и лимиты

Как Simmetric Chat направляет внешние каналы (Telegram, Discord, Slack, WhatsApp) через единый adapter contract в ту же обоснованную RAG-pipeline - с ограничением запросов и дневных сессий на защите workspace.

Simmetric Team · 10/10/20267 мин чтения