Llm Wiki
LLM-вики Карпати: создание/запрос взаимосвязанной базы знаний в Markdown.
Метаданные навыка
| Источник | Встроенный (устанавливается по умолчанию) |
| Путь | skills/research/llm-wiki |
| Версия | 2.1.0 |
| Автор | VibeOS |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | wiki, knowledge-base, research, notes, markdown, rag-alternative |
| Связанные навыки | obsidian, arxiv, research-local-corpus, professional-research, qmd |
Справочник: полный SKILL.md
Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Это те инструкции, которые видит агент, когда навык активен.
LLM-вики Карпати
Создание и поддержание постоянной, накапливающей знания базы в виде взаимосвязанных Markdown-файлов. Основано на паттерне LLM Wiki Андрея Карпати.
В отличие от традиционного RAG (который заново извлекает знания с нуля для каждого запроса), вики компилирует знания один раз и поддерживает их в актуальном состоянии. Перекрёстные ссылки уже есть. Противоречия уже отмечены. Синтез отражает всю полученную информацию.
Разделение труда: Человек курирует источники и направляет анализ. Агент резюмирует, создаёт перекрёстные ссылки, систематизирует и поддерживает согласованность.
Когда активируется этот навык
Используйте этот навык, когда пользователь:
- Просит создать, построить или запустить вики или базу знаний
- Просит добавить, обработать источник в свою вики
- Задаёт вопрос, и существующая вики присутствует по настроенному пути
- Просит провести линтинг, аудит или проверку работоспособности вики
- Ссылается на свою вики, базу знаний или «заметки» в контексте исследования
Для запросов «поищи в моей папке исследований / предыдущих брифингах / большой выгрузке markdown» без
существующей вики предпочтительнее использовать research-local-corpus (направляет к этому навыку, qmd
или ~/.vibeos/research/).
Расположение вики
Расположение: Задаётся через переменную окружения WIKI_PATH (например, в ${VIBEOS_HOME:-~/.vibeos}/.env).
Если не задана, по умолчанию используется ~/wiki.
WIKI="${WIKI_PATH:-$HOME/wiki}"
Вики — это просто каталог с Markdown-файлами. Его можно открыть в Obsidian, VS Code или любом редакторе. Никакой базы данных или специальных инструментов не требуется.
Архитектура: три слоя
wiki/
├── SCHEMA.md # Соглашения, правила структуры, конфигурация домена
├── index.md # Каталог контента по разделам с однострочными описаниями
├── log.md # Хронологический журнал действий (только добавление, ротация по годам)
├── raw/ # Слой 1: Неизменяемый исходный материал
│ ├── articles/ # Веб-статьи, вырезки
│ ├── papers/ # PDF, статьи с arXiv
│ ├── transcripts/ # Записи встреч, интервью
│ └── assets/ # Изображения, диаграммы, на которые ссылаются источники
├── entities/ # Слой 2: Страницы сущностей (люди, организации, продукты, модели)
├── concepts/ # Слой 2: Страницы концепций/тем
├── comparisons/ # Слой 2: Сравнительный анализ
└── queries/ # Слой 2: Сохранённые результаты запросов, которые стоит сохранить
Слой 1 — Исходные источники: Неизменяемы. Агент читает, но никогда не изменяет их.
Слой 2 — Вики: Markdown-файлы, принадлежащие агенту. Создаются, обновляются и
связываются перекрёстными ссылками агентом.
Слой 3 — Схема: SCHEMA.md определяет структуру, соглашения и таксономию тегов.
Возобновление работы с существующей вики (КРИТИЧЕСКИ ВАЖНО — делайте это в каждом сеансе)
Если у пользователя есть существующая вики, всегда сначала ознакомьтесь с ней, прежде чем что-либо делать:
① Прочитайте SCHEMA.md — поймите домен, соглашения и таксономию тегов.
② Прочитайте index.md — узнайте, какие страницы существуют и их краткие описания.
③ Просмотрите последние записи log.md — прочитайте последние 20-30 записей, чтобы понять недавнюю активность.
WIKI="${WIKI_PATH:-$HOME/wiki}"
# Ознакомительное чтение в начале сеанса
read_file "$WIKI/SCHEMA.md"
read_file "$WIKI/index.md"
read_file "$WIKI/log.md" offset=<последние 30 строк>
Только после ознакомления следует добавлять источники, запрашивать или проводить линтинг. Это предотвращает:
- Создание дублирующих страниц для уже существующих сущностей
- Пропуск перекрёстных ссылок на существующий контент
- Противоречие соглашениям схемы
- Повторение уже зарегистрированной работы
Для больших вики (100+ страниц) также выполните быстрый search_files по нужной теме
перед созданием чего-либо нового.
Инициализация новой вики
Когда пользователь просит создать или запустить вики:
- Определите путь к вики (из переменной окружения
$WIKI_PATHили спросите пользователя; по умолчанию~/wiki) - Создайте структуру каталогов, указанную выше
- Спросите пользователя, какой домен охватывает вики — будьте конкретны
- Напишите
SCHEMA.md, адаптированный под домен (см. шаблон ниже) - Напишите начальный
index.mdс заголовком, разделённым на секции - Напишите начальный
log.mdс записью о создании - Подтвердите, что вики готова, и предложите первые источники для добавления
Шаблон SCHEMA.md
Адаптируйте под домен пользователя. Схема ограничивает поведение агента и обеспечивает согласованность:
# Схема вики
## Домен
[Что охватывает эта вики — например, «исследования AI/ML», «личное здоровье», «разведка стартапов»]
## Соглашения
- Имена файлов: строчные буквы, дефисы, без пробелов (например, `transformer-architecture.md`)
- Каждая страница вики начинается с YAML-шапки (см. ниже)
- Используйте `[[вики-ссылки]]` для связи между страницами (минимум 2 исходящие ссылки на страницу)
- При обновлении страницы всегда обновляйте дату `updated`
- Каждая новая страница должна быть добавлена в `index.md` в соответствующий раздел
- Каждое действие должно быть добавлено в `log.md`
- **Маркеры происхождения:** На страницах, обобщающих 3+ источника, добавляйте `^[raw/articles/source-file.md]`
в конце абзацев, утверждения которых происходят из конкретного источника. Это позволяет читателю проследить
каждое утверждение без повторного чтения всего исходного файла. Опционально на страницах с одним источником, где
поля `sources:` в шапке достаточно.
## Шапка
```yaml
---
title: Заголовок страницы
created: ГГГГ-ММ-ДД
updated: ГГГГ-ММ-ДД
type: entity | concept | comparison | query | summary
tags: [из таксономии ниже]
sources: [raw/articles/source-name.md]
# Опциональные сигналы качества:
confidence: high | medium | low # насколько хорошо подтверждены утверждения
contested: true # устанавливается, если на странице есть неразрешённые противоречия
contradictions: [other-page-slug] # страницы, с которыми эта конфликтует
---
confidence и contested опциональны, но рекомендуются для тем, насыщенных мнениями или быстро меняющихся.
Линтинг выявляет страницы с contested: true и confidence: low для проверки, чтобы слабые утверждения
незаметно не превратились в принятый факт вики.
Шапка для raw/
Исходные источники ТАКЖЕ получают небольшой блок шапки, чтобы при повторном добавлении можно было обнаружить расхождения:
---
source_url: https://example.com/article # исходный URL, если применимо
ingested: ГГГГ-ММ-ДД
sha256: <hex-дайджест необработанного содержимого ниже шапки>
---
Поле sha256: позволяет при будущем повторном добавлении того же URL пропустить обработку, если содержимое не изменилось,
и сигнализировать об изменении, если оно произошло. Вычисляется только для тела (всё после закрывающего
---), не для самой шапки.
Таксономия тегов
[Определите 10-20 тегов верхнего уровня для домена. Добавляйте новые теги сюда ПЕРЕД их использованием.]
Пример для AI/ML:
- Модели: model, architecture, benchmark, training
- Люди/Организации: person, company, lab, open-source
- Техники: optimization, fine-tuning, inference, alignment, data
- Мета: comparison, timeline, controversy, prediction
Правило: каждый тег на странице должен присутствовать в этой таксономии. Если нужен новый тег, сначала добавьте его сюда, затем используйте. Это предотвращает разрастание тегов.
Пороговые значения для страниц
- Создавайте страницу, когда сущность/концепция встречается в 2+ источниках ИЛИ является центральной для одного источника
- Добавляйте в существующую страницу, когда источник упоминает то, что уже освещено
- НЕ создавайте страницу для мимолётных упоминаний, незначительных деталей или того, что выходит за рамки домена
- Разделяйте страницу, когда она превышает ~200 строк — разбивайте на подтемы с перекрёстными ссылками
- Архивируйте страницу, когда её содержимое полностью устарело — перемещайте в
_archive/, удаляйте из индекса
Страницы сущностей
Одна страница на заметную сущность. Включает:
- Обзор / что это такое
- Ключевые факты и даты
- Связи с другими сущностями ([[вики-ссылки]])
- Ссылки на источники
Страницы концепций
Одна страница на концепцию или тему. Включает:
- Определение / объяснение
- Текущее состояние знаний
- Открытые вопросы или дискуссии
- Связанные концепции ([[вики-ссылки]])
Страницы сравнений
Сравнительный анализ. Включает:
- Что сравнивается и почему
- Измерения сравнения (предпочтительно в формате таблицы)
- Вердикт или синтез
- Источники
Политика обновления
Когда новая информация противоречит существующему содержимому:
- Проверьте даты — более новые источники обычно заменяют старые
- Если действительно противоречиво, укажите обе позиции с датами и источниками
- Отметьте противоречие в шапке:
contradictions: [page-name] - Сообщите пользователю для проверки в отчёте линтинга
### Шаблон index.md
Индекс разделён по типам. Каждая запись — одна строка: вики-ссылка + описание.
```markdown
# Индекс вики
> Каталог контента. Каждая страница вики перечислена под своим типом с однострочным описанием.
> Читайте это в первую очередь, чтобы найти релевантные страницы для любого запроса.
> Последнее обновление: ГГГГ-ММ-ДД | Всего страниц: N
## Сущности
<!-- В алфавитном порядке в пределах раздела -->
## Концепции
## Сравнения
## Запросы
Правило масштабирования: Когда любой раздел превышает 50 записей, разделите его на подразделы
по первой букве или поддомену. Когда индекс превышает 200 записей в сумме, создайте
_meta/topic-map.md, который группирует страницы по темам для более быстрой навигации.
Шаблон log.md
# Журнал вики
> Хронологическая запись всех действий с вики. Только добавление.
> Формат: `## [ГГГГ-ММ-ДД] действие | тема`
> Действия: ingest, update, query, lint, create, archive, delete
> Когда этот файл превышает 500 записей, выполните ротацию: переименуйте в log-ГГГГ.md, начните новый.
## [ГГГГ-ММ-ДД] create | Вики инициализирована
- Домен: [домен]
- Создана структура с SCHEMA.md, index.md, log.md
Основные операции
1. Добавление источника
Когда пользователь предоставляет источник (URL, файл, вставленный текст), интегрируйте его в вики:
① Захватите исходный источник:
- URL → используйте
web_extractдля получения Markdown, сохраните вraw/articles/ - PDF → используйте
web_extract(обрабатывает PDF), сохраните вraw/papers/ - Вставленный текст → сохраните в соответствующий подкаталог
raw/ - Назовите файл описательно:
raw/articles/karpathy-llm-wiki-2026.md - Добавьте шапку raw (
source_url,ingested,sha256тела). При повторном добавлении того же URL: пересчитайте sha256, сравните с сохранённым значением — пропустите, если идентично, сообщите об изменении и обновите, если отличается. Это достаточно дёшево для выполнения при каждом повторном добавлении и позволяет отслеживать незаметные изменения источника.
② Обсудите ключевые выводы с пользователем — что интересно, что важно для домена. (Пропустите в автоматизированных/фоновых контекстах — переходите сразу.)
③ Проверьте, что уже существует — просмотрите index.md и используйте search_files для поиска
существующих страниц для упомянутых сущностей/концепций. Это разница между
растущей вики и кучей дубликатов.
④ Напишите или обновите страницы вики:
- Новые сущности/концепции: Создавайте страницы, только если они соответствуют Пороговым значениям для страниц в SCHEMA.md (упоминание в 2+ источниках или центральная роль в одном источнике)
- Существующие страницы: Добавляйте новую информацию, обновляйте факты, обновляйте дату
updated. Когда новая информация противоречит существующему содержимому, следуйте Политике обновления. - Перекрёстные ссылки: Каждая новая или обновлённая страница должна ссылаться как минимум на 2 другие
страницы через
[[вики-ссылки]]. Проверьте, что существующие страницы ссылаются обратно. - Теги: Используйте только теги из таксономии в SCHEMA.md
- Происхождение: На страницах, обобщающих 3+ источника, добавляйте маркеры
^[raw/articles/source.md]к абзацам, утверждения которых восходят к конкретному источнику. - Уверенность: Для утверждений, основанных на мнениях, быстро меняющихся или исходящих из одного источника, устанавливайте
confidence: mediumилиlowв шапке. Не ставьтеhigh, если утверждение не подтверждено несколькими источниками.
⑤ Обновите навигацию:
- Добавьте новые страницы в
index.mdв соответствующий раздел, в алфавитном порядке - Обновите счётчик «Всего страниц» и дату «Последнее обновление» в заголовке индекса
- Добавьте запись в
log.md:## [ГГГГ-ММ-ДД] ingest | Заголовок источника - Перечислите каждый созданный или обновлённый файл в записи журнала
⑥ Сообщите, что изменилось — перечислите пользователю каждый созданный или обновлённый файл.
Один источник может вызвать обновления на 5-15 страницах вики. Это нормально и желательно — это эффект накопления знаний.
2. Запрос
Когда пользователь задаёт вопрос по домену вики:
① Прочитайте index.md, чтобы определить релевантные страницы.
② Для вики с 100+ страницами также выполните search_files по всем .md файлам
на предмет ключевых терминов — одного индекса может быть недостаточно.
③ Прочитайте релевантные страницы, используя read_file.
④ Синтезируйте ответ из накопленных знаний. Ссылайтесь на страницы вики,
которые вы использовали: «На основе [[page-a]] и [[page-b]]...»
⑤ Сохраните ценные ответы обратно — если ответ представляет собой существенное сравнение,
глубокое погружение или новый синтез, создайте страницу в queries/ или comparisons/.
Не сохраняйте тривиальные поиски — только те ответы, которые было бы трудно получить заново.
⑥ Обновите log.md с информацией о запросе и о том, был ли он сохранён.
3. Линтинг
Когда пользователь просит провести линтинг, проверку работоспособности или аудит вики:
① Страницы-сироты: Найдите страницы, на которые нет входящих [[вики-ссылок]] с других страниц.
# Используйте execute_code для этого — программное сканирование всех страниц вики
import os, re
from collections import defaultdict
wiki = "<ПУТЬ_К_ВИКИ>"
# Сканировать все .md файлы в entities/, concepts/, comparisons/, queries/
# Извлечь все [[вики-ссылки]] — построить карту входящих ссылок
# Страницы с нулевым количеством входящих ссылок являются сиротами
② Битые вики-ссылки: Найдите [[ссылки]], которые указывают на несуществующие страницы.
③ Полнота индекса: Каждая страница вики должна присутствовать в index.md. Сравните
файловую систему с записями индекса.
④ Валидация шапки: Каждая страница вики должна иметь все обязательные поля (title, created, updated, type, tags, sources). Теги должны быть в таксономии.
⑤ Устаревший контент: Страницы, дата updated которых более чем на 90 дней старше самого
нового источника, упоминающего те же сущности.
⑥ Противоречия: Страницы на одну тему с конфликтующими утверждениями. Ищите
страницы, которые имеют общие теги/сущности, но содержат разные факты. Выявляйте все страницы
с contested: true или contradictions: в шапке для проверки пользователем.
⑦ Сигналы качества: Перечислите страницы с confidence: low и любые страницы, которые ссылаются только на
один источник, но не имеют установленного поля confidence — они являются кандидатами
либо на поиск подтверждения, либо на понижение до confidence: medium.
⑧ Расхождение источников: Для каждого файла в raw/ с sha256: в шапке пересчитайте
хеш и отметьте несовпадения. Несовпадения указывают на то, что исходный файл был отредактирован
(не должно происходить — raw/ неизменяем) или был добавлен из URL, который с тех пор
изменился. Не критическая ошибка, но стоит сообщить.
⑨ Размер страницы: Отметьте страницы длиннее 200 строк — кандидаты на разделение.
⑩ Аудит тегов: Перечислите все используемые теги, отметьте те, которых нет в таксономии SCHEMA.md.
⑪ Ротация журнала: Если log.md превышает 500 записей, выполните его ротацию.
⑫ Сообщите о результатах с указанием конкретных путей к файлам и предлагаемых действий, сгруппированных по серьёзности (битые ссылки > сироты > расхождение источников > спорные страницы > устаревший контент > проблемы стиля).
⑬ Добавьте запись в log.md: ## [ГГГГ-ММ-ДД] lint | Найдено N проблем
Работа с вики
Поиск
# Поиск страниц по содержимому
search_files "transformer" path="$WIKI" file_glob="*.md"
# Поиск страниц по имени файла
search_files "*.md" target="files" path="$WIKI"
# Поиск страниц по тегу
search_files "tags:.*alignment" path="$WIKI" file_glob="*.md"
# Недавняя активность
read_file "$WIKI/log.md" offset=<последние 20 строк>
Массовое добавление источников
При одновременном добавлении нескольких источников группируйте обновления:
- Сначала прочитайте все источники
- Определите все сущности и концепции во всех источниках
- Проверьте существующие страницы для всех них (один проход поиска, а не N)
- Создайте/обновите страницы за один проход (избегает избыточных обновлений)
- Обновите index.md один раз в конце
- Напишите одну запись в журнале, охватывающую всю группу
Архивирование
Когда содержимое полностью устарело или изменилась область действия домена:
- Создайте каталог
_archive/, если он не существует - Переместите страницу в
_archive/с её исходным путём (например,_archive/entities/old-page.md) - Удалите из
index.md - Обновите все страницы, которые ссылались на неё — замените вики-ссылку на обычный текст + «(архивировано)»
- Зарегистрируйте действие архивирования
Интеграция с Obsidian
Каталог вики работает как хранилище Obsidian «из коробки»:
[[вики-ссылки]]отображаются как кликабельные ссылки- Графовое представление визуализирует сеть знаний
- YAML-шапка поддерживает запросы Dataview
- Папка
raw/assets/содержит изображения, на которые ссылаются через![[image.png]]
Для наилучшего результата:
- Установите в Obsidian папку для вложений на
raw/assets/ - Включите «Вики-ссылки» в настройках Obsidian (обычно включено по умолчанию)
- Установите плагин Dataview для запросов типа
TABLE tags FROM "entities" WHERE contains(tags, "company")
Если вы используете навык Obsidian вместе с этим, установите OBSIDIAN_VAULT_PATH на тот же
каталог, что и путь к вики.
Obsidian Headless (серверы и машины без дисплея)
На машинах без дисплея используйте obsidian-headless вместо настольного приложения.
Он синхронизирует хранилища через Obsidian Sync без графического интерфейса — идеально для агентов, работающих на
серверах, которые пишут в вики, в то время как Obsidian Desktop читает её на другом устройстве.
Настройка:
# Требуется Node.js 22+
npm install -g obsidian-headless
# Вход (требуется учётная запись Obsidian с подпиской Sync)
ob login --email <email> --password '<пароль>'
# Создание удалённого хранилища для вики
ob sync-create-remote --name "LLM Wiki"
# Подключение каталога вики к хранилищу
cd ~/wiki
ob sync-setup --vault "<id-хранилища>"
# Первоначальная синхронизация
ob sync
# Непрерывная синхронизация (передний план — используйте systemd для фона)
ob sync --continuous
Непрерывная фоновая синхронизация через systemd:
# ~/.config/systemd/user/obsidian-wiki-sync.service
[Unit]
Description=Синхронизация Obsidian LLM Wiki
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/path/to/ob sync --continuous
WorkingDirectory=/home/user/wiki
Restart=on-failure
RestartSec=10
[Install]
WantedBy=default.target
systemctl --user daemon-reload
systemctl --user enable --now obsidian-wiki-sync
# Включите linger, чтобы синхронизация сохранялась после выхода из системы:
sudo loginctl enable-linger $USER
Это позволяет агенту писать в ~/wiki на сервере, пока вы просматриваете то же
хранилище в Obsidian на ноутбуке/телефоне — изменения появляются в течение нескольких секунд.
Подводные камни
- Никогда не изменяйте файлы в
raw/— источники неизменяемы. Исправления вносятся на страницах вики. - Всегда сначала ознакомьтесь — прочитайте SCHEMA + index + последние записи журнала перед любой операцией в новом сеансе. Пропуск этого приводит к дубликатам и пропущенным перекрёстным ссылкам.
- Всегда обновляйте index.md и log.md — пропуск этого приводит к деградации вики. Это навигационный хребет.
- Не создавайте страницы для мимолётных упоминаний — следуйте Пороговым значениям для страниц в SCHEMA.md. Имя, появившееся один раз в сноске, не заслуживает отдельной страницы сущности.
- Не создавайте страницы без перекрёстных ссылок — изолированные страницы невидимы. Каждая страница должна ссылаться как минимум на 2 другие страницы.
- Шапка обязательна — она обеспечивает поиск, фильтрацию и обнаружение устаревания.
- Теги должны быть из таксономии — произвольные теги превращаются в шум. Добавляйте новые теги в SCHEMA.md сначала, затем используйте их.
- Делайте страницы удобными для просмотра — страницу вики можно прочитать за 30 секунд. Разделяйте страницы длиннее 200 строк. Переносите детальный анализ на специальные страницы для глубокого погружения.
- Спрашивайте перед массовым обновлением — если добавление источника затронет 10+ существующих страниц, сначала подтвердите объём работ с пользователем.
- Выполняйте ротацию журнала — когда log.md превышает 500 записей, переименуйте его в
log-ГГГГ.mdи начните новый. Агент должен проверять размер журнала во время линтинга. - Явно обрабатывайте противоречия — не перезаписывайте молча. Укажите оба утверждения с датами, отметьте в шапке, сообщите пользователю для проверки.
Связанные инструменты
llm-wiki-compiler — это CLI на Node.js, который компилирует источники в концептуальную вики, вдохновлённую тем же подходом Карпати. Он совместим с Obsidian, поэтому пользователи, которым нужен конвейер компиляции по расписанию/из CLI, могут направить его на то же хранилище, которое поддерживает этот навык. Компромиссы: он владеет генерацией страниц (заменяет суждение агента о создании страниц) и настроен на небольшие корпусы. Используйте этот навык, когда вам нужна курация с участием агента; используйте llmwiki, когда вам нужна пакетная компиляция каталога источников.