Как собрать LLM Wiki: карта знаний для ИИ-агента
Слои raw / wiki / schema и цикл ingest → query → lint — живая база знаний агента под контент-завод
У большинства команд «база знаний для ИИ-агента» выглядит так: кинули PDF и заметки в чат, получили ответ — и на следующий день снова начинали с нуля. Агент не помнит договорённости по тону. Путает офферы. Цитирует устаревший FAQ. Вы тратите токены на повторный разбор одних и тех же файлов.
LLM Wiki решает другую задачу. Это не «ещё один чат с папкой». Это живая карта знаний: агент один раз аккуратно разбирает источник, записывает выводы в Markdown-страницы, связывает их между собой и потом отвечает уже по этой карте — а не заново перечитывает весь сырой архив.
Зачем агенту карта знаний, а не очередной чат с файлами
Маркер: простыми словами. LLM Wiki — это база знаний для ИИ-агента в виде связанных Markdown-файлов. Агент сам пишет и поддерживает страницы по вашим правилам. Это не чат и не «ещё один RAG»: знание собирается заранее и потом обновляется, а не склеивается заново на каждый вопрос.
Паттерн описал Андрей Карпаты: человек курирует источники и вопросы, а модель делает «бухгалтерию» — саммари, перекрёстные ссылки, индекс. Удачная метафора: Obsidian (или любая папка с Markdown) — как редактор, LLM — как программист, wiki — как кодовая база знаний.
Коротко: если ваш ИИ-агент каждый раз «впервые читает» бренд и исследования — вам нужна карта, а не бесконечный диалог.
Чем LLM Wiki отличается от «папки с README»
README и короткие инструкции полезны. Они говорят агенту, как себя вести: куда класть файлы, какой стиль, какие запреты. Wiki отвечает на другой вопрос: что уже известно о системе, бренде, продукте и исследованиях.
На практике разница такая:
| Подход | Что даёт агенту | Где ломается |
|---|---|---|
| Папка с README | Правила поведения, быстрый старт | Не копит сквозное знание между модулями и темами |
| «Просто кинули файлы в чат» | Разовый ответ | Нет памяти, нет связей, нет проверки противоречий |
| LLM Wiki | Сжатая карта + ссылки + лог изменений | Нужна схема правил и привычка к lint |
Хорошо структурированный README — фундамент. Wiki — слой синтеза поверх него. На сложных доменах (в разборах 2026 встречались кейсы порядка ~70 страниц wiki поверх большой системы) карта помогает агенту не блуждать по тысячам файлов, а идти по маршруту: «ищите X → страница Y».
Когда хватит wiki, а когда всё же нужен RAG
Маркер: простыми словами. RAG (retrieval-augmented generation) — когда модель на каждый вопрос ищет куски из большой базы и склеивает ответ «на лету». Удобно для огромных архивов. Минус: знание не «сжимается» в устойчивую карту, а каждый раз собирается заново.
Хватит LLM Wiki, если:
- ядро знаний относительно стабильно: бренд, офферы, tone of voice, FAQ, правила контента, research-карточки;
- источников десятки–пара сотен, а не миллионы;
- важны связи «бренд → концепт → источник → запрет на claim»;
- вы хотите, чтобы агент цитировал конкретные wiki-страницы, а не случайные чанки.
Нужен RAG / vector-база (в духе Ragflow), если:
- корпус огромный и запросы непредсказуемые;
- документы часто меняются пачками, а «сжимать» всё в wiki слишком дорого;
- задача — найти иглу в стоге сена, а не держать редакционную карту.
Гибрид обычно лучший ответ для контент-завода: wiki — для ядра бренда и редакционных правил; RAG — для большого архива статей, транскриптов, старых PDF. Не путайте эти слои в одной куче.
На синтетических сравнениях wiki иногда даёт более полные ответы, чем простой vector-RAG — но это зависит от корпуса. Главный практический вывод другой: ошибки при ingest «запекаются» в wiki. Поэтому без проверки человеком и без lint карта быстро станет красивой свалкой.
Три слоя хранилища: raw, wiki и schema
raw · wiki · schema — без них агент снова «чат с файлами»
Сырьё не переписываем. Карту пишет LLM. Правила — в AGENTS.md.
принять источник в карту
ответ только по wiki
дубли · сироты · битые [[ссылки]] · противоречия
Минимальная архитектура LLM Wiki — три слоя. Без них агент снова превращается в «чат с файлами».
project/
raw/ ← исходники (не переписывать моделью)
wiki/ ← страницы, которыми владеет LLM
AGENTS.md ← schema: правила игры
(или CLAUDE.md)
Что класть в raw и чего туда не тащить
raw/ — источник правды. Сюда кладут статьи, PDF, выгрузки, брифы, скриншоты текста, транскрипты. Модель только читает. Не просите её «подчистить» оригинал: иначе потеряете возможность сверить факты.
Кладите:
- утверждённые бренд-материалы;
- ссылки/копии research-статей;
- внутренние гайды и FAQ в исходном виде;
- выгрузки конкурентов и ТЗ.
Не кладите:
- пароли, ключи API, персональные данные клиентов;
- черновики «на удалить» без пометки;
- дубли одного и того же PDF в трёх версиях без даты.
Для приватных брендовых баз из России учитывайте риск: облачная модель при ingest видит содержимое raw. Если данные чувствительные — используйте локальную модель, вырезайте секреты до загрузки или держите HITL-политику (human-in-the-loop: сначала человек проверяет источники и запись в wiki, потом агент идёт дальше).
Как wiki становится «мозгом», а не копией сырья
wiki/ — Markdown, которым владеет LLM. Здесь живут:
- саммари источников;
- страницы сущностей (бренд, продукт, персона, оффер);
- концепты (GEO, tone of voice, CTA-правила);
- сравнения и синтез;
- полезные ответы на прошлые query, которые стоит сохранить.
Важно: wiki — не копия raw. Ingest должен отвечать не на вопрос «о чём статья?», а на вопрос «как эта статья меняет мою базу?». Один хороший ingest часто трогает сразу 10–15 связанных страниц: обновил бренд-карточку, добавил концепт, поправил FAQ, проставил связи.
Связи удобно делать через wikilinks — внутренние ссылки вида [[Tone of Voice]]. Это «нити» между страницами: агент и человек видят граф знаний, а не россыпь одиночных файлов.
Schema как правила игры агента (AGENTS.md / CLAUDE.md)
Без schema агент пишет что хочет и как хочет. Со schema он становится wiki-maintainer: знает структуру папок, имена файлов, шаги ingest/query/lint и запреты.
Маркер: простыми словами. Schema — файл правил для агента (AGENTS.md или CLAUDE.md). Там написано: какие папки есть, как называть страницы, что делать при ingest, как отвечать на query, что проверять на lint. Schema — это «должностная инструкция», а не база знаний.
Минимальный каркас schema под контент:
- Цель wiki (бренд + research + editorial rules).
- Дерево папок
raw/иwiki/. - Типы страниц: source, brand, concept, offer, faq, exploration.
- Правила имён файлов (латиница/кириллица — выберите одно и держитесь).
- Workflow: ingest → обновить index/log → query только по wiki → lint.
- Claim-policy: что нельзя утверждать без источника.
- Когда сказать «в wiki нет покрытия» вместо фантазии.
Три слоя и цикл: ingest → query → lint
Справа — живая схема LLM Wiki: сырьё лежит в raw, агент пишет только в wiki, а schema (AGENTS.md) задаёт правила. Пакет операций обходит ingest, query и lint — без конвейера «как у hero».
- raw/ — неизменяемые источники; модель только читает.
- wiki/ — карточки, index.md, связи brand → concepts → sources.
- lint — ловит дубли, битые wikilinks и рассинхрон до публикации.
Дальше в статье — как разложить слои по папкам и не смешать сырьё с уже сжатыми выводами.
Редакционная метафора архитектуры LLM Wiki · цикл ~42 с · не интерфейс продукта.
Минимальный контур под бренд и контент-ресёрч
Не начинайте с «идеальной второй мозга на 500 страниц». Для контент-завода достаточно маленькой рабочей карты, которую агент реально использует в брифах и черновиках.
Источники → карточки → index.md
Соберите стартовый набор из 3–7 источников:
- Страница/описание оффера и УТП.
- Tone of voice и стоп-слова.
- FAQ по продукту.
- 1–2 research-материала по теме ближайшего лонгрида.
- Список запрещённых claims («не обещать позиции в топе», «не выдумывать цифры»).
После первого ingest у вас должны появиться:
wiki/brand/...— кто вы, что продаёте, кому;wiki/concepts/...— ключевые понятия ниши;wiki/sources/...— карточки источников со ссылкой на raw;wiki/index.md— каталог: ссылка + одна строка «зачем страница» + дата;wiki/log.md— таймлайн действий.
index.md — точка входа для query. На умеренном масштабе (порядка ~100 источников и сотен страниц) часто хватает обычного индекса без векторной базы. Когда индекс перестаёт «просматриваться» агентом целиком — подключают локальный поиск по Markdown или MCP-инструмент поиска.
Связи и именование, чтобы агент не терял нити
Правила, которые спасают от хаоса:
- одна сущность — одна страница (
brand-maya, не три «про нас»); - каждая новая страница сразу получает ≥1–2 входящие ссылки из index или соседних карточек;
- в frontmatter (шапке файла) держите минимум:
type,updated,status(draft/verified); - не плодите синонимы имён: либо «tone-of-voice», либо «тон-голоса» — но не оба сразу.
Если страница никуда не ведёт и на неё никто не ссылается — это кандидат в мусор. Такие «сироты» ловит lint.
Ingest: как агент «съедает» первый источник
Маркер: простыми словами. Ingest — операция «принять источник в базу»: файл кладут в raw/, агент читает, обсуждает выводы, обновляет wiki-страницы, index и log. Это не «сделай краткое саммари», а «измени карту знаний».
Пошаговая сборка LLM Wiki за один вечер
Ниже — контур, который новичок может повторить без бэкграунда разработчика. Достаточно Cursor, Claude Code, Codex или другого агента с доступом к файлам проекта. Из России удобны сценарии с локальной папкой + git; облачные агенты и зарубежные API иногда требуют рабочий способ оплаты/доступа — если сервис недоступен, тот же контур собирается в локальном редакторе Markdown + агент с доступом к диску.
Создайте каркас папок
raw/sources/, wiki/brand/, wiki/concepts/, wiki/sources/, wiki/explorations/, пустые wiki/index.md и wiki/log.md, файл AGENTS.md.
Признак успеха: в проводнике видны все папки, AGENTS.md открывается и понятен человеку за 2–3 минуты чтения.
Заполните schema под контент
В AGENTS.md: «поддерживаешь LLM Wiki», «пишешь только в wiki/», «на вопрос — по wiki», типы страниц, запрет выдумывать цифры без источника.
Признак успеха: агент после чтения schema сам перечисляет правила своими словами без фантазий «добавлю ещё векторную БД».
Положите первый источник в raw
Один небольшой файл: описание оффера или FAQ (1–5 страниц). Имя с датой: 2026-07-28-offer-faq.md.
Запустите ingest (один источник)
Прочитай raw/sources/2026-07-28-offer-faq.md. Сделай ingest по AGENTS.md: создай/обнови карточки в wiki, проставь wikilinks, обнови index.md и допиши log.md. Не переписывай raw. Перед записью покажи план страниц.
Сначала смотрите план. Потом разрешайте запись. Карпаты предпочитает ingest по одному источнику с человеком в контуре — так меньше «запечённых» ошибок.
Проверьте git diff
Сверьте: не появилось ли фактов, которых не было в raw; не раздулись ли страницы водой; есть ли ссылки между brand/concepts/sources.
Сделайте query
«Собери бриф лонгрида: оффер, tone, 3 запрета на claims — только по wiki, со ссылками на файлы».
Запустите lint
Дубли, сиротские страницы, битые [[ссылки]], противоречия и пробелы покрытия. Результат — в log.md.
Признак успеха всего контура:
- в wiki есть 3+ осмысленных страницы и актуальный index;
- ответ на query ссылается на wiki-файлы, а не «из общей эрудиции»;
- lint-отчёт существует и по нему понятно, что чинить;
- raw не изменён.
Типичные ошибки новичка
- Просят «саммари статьи» вместо ingest → в базе появляется пересказ, связи не обновляются. Решение: в промпте явно писать «как источник меняет wiki».
- Сразу заливают 30 PDF пакетом → агент плодит шумные страницы и жжёт токены. Решение: 1 источник → проверка → следующий.
- Нет schema → имена файлов хаотичные, типы страниц смешаны. Решение: сначала
AGENTS.md, потом ingest. - Query к raw «на всякий случай» → снова чат с дампом. Решение: контракт «сначала index и wiki; raw только при ingest».
Что писать в log.md после каждого захода
log.md — append-only таймлайн. Удобный формат:
### [2026-07-28] ingest | Offer FAQ
- raw: raw/sources/2026-07-28-offer-faq.md
- updated: wiki/brand/offer.md, wiki/concepts/cta-rules.md
- notes: добавлен запрет обещать топ-1 без оговорки
Так вы можете grep’ом найти, когда в базу попал спорный факт.
Как не смешать сырьё и уже сжатые выводы
Золотое правило:
- raw = «что сказали источники»;
- wiki = «что мы из этого решили держать как рабочее знание»;
- если вывод гипотетический — страница типа
exploration, неbrand.
Не копируйте длинные цитаты в каждую карточку. Короткий тезис + ссылка на raw + дата проверки.
Query: ответы только по wiki, не по сырому дампу
Маркер: простыми словами. Query — вопрос к уже собранной карте. Агент открывает index, читает нужные wiki-страницы и отвечает со ссылками. Если карты не хватает, он не должен «додумать по PDF» молча — он должен предложить ingest.
Промпт-контракт: сначала карта, потом вывод
Встройте в schema жёсткий контракт:
- Открой
wiki/index.md. - Выбери 3–7 релевантных страниц.
- Ответь только по ним.
- В конце дай список
[[wikilinks]]и путей файлов. - Если покрытия нет — напиши «не покрывает» и предложи, какой raw принять через ingest.
- Ценный ответ можно сохранить как
wiki/explorations/...— так знания снова «накапливаются».
Именно это отличает LLM Wiki от обычного RAG: знание компилируется при ingest и дальше поддерживается, а не пересобирается с нуля на каждый запрос.
Где MCP и Cursor agent подключаются к запросу
Маркер: простыми словами. MCP — способ дать агенту «инструменты» (прочитать wiki, сделать ingest, найти страницу) через стандартный протокол, а не только через болтовню в чате.
На старте хватает агента с доступом к файлам проекта (Cursor agent / аналог): он и так читает wiki/ и пишет по schema. Когда карта растёт, имеет смысл:
- поиск по Markdown (локальный search / инструменты вроде qmd из канона паттерна);
- MCP-обёртка над операциями wiki_init / ingest / query / lint — чтобы разные субагенты ходили в одну карту одинаково.
Для контент-завода практичный минимум: одна git-папка wiki + AGENTS.md + субагенты, которые обязаны query’ить эту папку перед генерацией текста. Не обязательно сразу ставить отдельный MCP-сервер, если команда ещё не доросла до этого.
Lint: ловим дубли, битые ссылки и противоречия
Маркер: простыми словами. Lint — проверка здоровья wiki: нет ли противоречий, устаревших утверждений, страниц-сирот, битых ссылок и «дыр», которые агент закрывает выдумкой.
Без lint wiki деградирует тише, чем RAG: ошибки уже записаны красивым Markdown и выглядят убедительно.
Чеклист рассинхрона wiki ↔ raw
Прогоняйте регулярно (после серии ingest или перед важной публикацией):
- Есть ли в wiki факты, которых больше нет в raw / на сайте?
- Не противоречат ли
brandиfaqдруг другу? - Есть ли
[[ссылки]]на несуществующие страницы? - Есть ли страницы без входящих ссылок (orphans)?
- Упомянуты ли концепты, у которых нет своей страницы?
- Не дублируются ли две карточки одного оффера под разными именами?
- Помечены ли спорные места как
draft, а неverified? - Нужен ли sync после обновления сайта/репозитория: unchanged / corrected / uncovered?
В разборах coding-агентов для wiki иногда делают десятки автопроверок и даже отдельных «read-only» подагентов на verify. Вам на старте хватит короткого чеклиста выше + запись результата в log.md.
Когда без человека на фактах нельзя
Человек обязателен, если:
- меняются цены, гарантии, юридические формулировки;
- в wiki попадают цифры аудитории, кейсы, обещания результата;
- ingest шёл из сомнительного или рекламного источника;
- агент «достроил» страницу, хотя raw покрывал тему частично.
Правило простое: модель ускоряет бухгалтерию, человек отвечает за правду бренда.
Ошибки, из‑за которых wiki превращается в свалку
Wiki без schema
Красивые папки, но агент каждый раз изобретает новую структуру. Сначала schema на одну страницу A4.
Путаница с RAG
«Делаем LLM Wiki», а на деле снова режем на чанки и ищем по эмбеддингам без синтеза.
Масштаб > контекста
Сначала сироты и типы страниц, потом локальный поиск, и только потом vector-база.
Wiki ради wiki без schema
Симптом: красивые папки, но агент каждый раз изобретает новую структуру. Лечение: сначала schema на одну страницу A4, потом любые ingest.
Если у вас простой одностраничный лендинг и три файла правил — иногда достаточно сильного README. Wiki нужна, когда знание сквозное и не умещается в один модуль/один бриф.
Путаница с vector-RAG / Ragflow
Симптом: команда «делает LLM Wiki», но на деле снова режет текст на чанки и ищет по эмбеддингам без слоя синтеза.
Маркер: простыми словами. Vector DB / embeddings — способ хранить тексты как числовые «отпечатки» и искать похожие куски. Это основа классического RAG. LLM Wiki вместо этого заранее пишет понятные человеку страницы-синтез.
Разведение:
- Ragflow / vector-RAG — runtime-поиск по большому корпусу;
- LLM Wiki — compile-time карта в Markdown + правила;
- гибрид — wiki для ядра, RAG для архива.
Не заменяйте одно другим «потому что модно». Выбирайте по масштабу и стабильности ядра знаний.
Масштаб больше контекста — что резать первым
Когда источников становится слишком много для спокойной навигации по index:
- Сначала ужесточите типы страниц и удалите сирот.
- Затем введите локальный поиск по wiki.
- Только потом думайте про отдельную vector-базу.
Режьте в первую очередь: дубли research, устаревшие explorations, страницы без inbound links, «саммари ради саммари». Не режьте verified brand/FAQ без замены.
Связка с контент-заводом и агентным пайплайном
LLM Wiki особенно сильна там, где несколько ролей должны говорить одним голосом: ресёрч, копирайт, редактура, публикация.
От карточки wiki до черновика публикации
Рабочий цикл контент-завода:
- Ingest research и бренд-обновлений в wiki.
- Query: «собери бриф лонгрида по кластеру X» → структура H2, факты, запреты.
- Генерация черновика строго по брифу и wiki-ссылкам.
- Lint wiki + фактчек цифр человеком.
- Публикация; ценные выводы query при желании возвращаются в
explorations/.
Так агент не «сочиняет нишу заново», а опирается на карту, которую вы уже курируете.
Где субагенты читают одну карту, а не спорят в чате
Если у вас несколько агентов (ресёрчер, копирайтер, аудитор), дайте им одну wiki и одну schema. Иначе каждый ведёт свой чат-память и выдаёт разные tone of voice.
Практика:
- субагент A только ingest/research;
- субагент B только query→draft;
- субагент C только lint/QA по чеклисту;
- все пишут в один git-репозиторий Markdown.
Это и есть мост к MCP/агентному пайплайну без оверинжиниринга: сначала дисциплина папок и правил, потом инструменты.
FAQ
LLM Wiki — это то же самое, что второй мозг?
Похоже по духу, но акцент другой. «Второй мозг» часто про личные заметки человека. LLM Wiki — про агента, который сам поддерживает карту по schema: ingest, query, lint. Человек курирует, модель ведёт бухгалтерию страниц.
Нужен ли Obsidian обязателен?
Нет. Obsidian удобен как просмотрщик Markdown и графа связей, но достаточно любой папки с .md + git + агент с доступом к файлам. Obsidian — опция комфорта, не требование паттерна.
С чего начать, если агента ещё нет?
Начните с каркаса raw/, wiki/, AGENTS.md и одного источника. Затем подключите любого файлового ИИ-агента (Cursor agent, Claude Code, Codex и т.п.). Пока агента нет, даже ручное заполнение index по шаблону уже дисциплинирует базу — но настоящий выигрыш появляется, когда модель сама обновляет связи.
Чем паттерн Karpathy отличается от «просто Markdown wiki»?
Обычная Markdown wiki — это страницы, которые человек пишет сам. Паттерн Karpathy LLM Wiki добавляет роли слоёв (raw/wiki/schema) и цикл операций ingest → query → lint, где LLM — maintainer, а человек — куратор источников и фактов.
Что проверяли по источникам
- Канон паттерна: gist Andrej Karpathy «LLM Wiki» — gist.github.com/karpathy/…
- Свежий русскоязычный разбор wiki vs README для агента — Habr
- Практика ingest/query/lint и отличие ingest от «просто саммари» — разборы на Habr (в т.ч. Raft и гайды «wiki за вечер»)
- Сравнение полноты wiki vs vector-RAG — эмпирика на синтетическом корпусе (с оговоркой датасета)
- Связка с MCP/поиском по wiki — упоминания в каноне и открытых реализациях поверх паттерна
