<!-- page:68345 -->
# Устройство

Всё в Wikilayer построено на дереве узлов, описанном ниже: у каждого блока постоянный адрес, обратные ссылки находятся автоматически, а страница по-прежнему читается как один документ. Через [MCP](page:68372) агенты работают с тем же деревом.

<!-- block:68391 -->
## Узлы

Wikilayer хранит текст в одном дереве. У каждого узла есть заголовок и текст в Markdown; страница содержит блоки, из которых состоят её разделы, и расположена внутри вики или под другой страницей, а это дерево страниц и есть навигация вики. Браузер отображает страницу для людей, а [MCP](page:68372) открывает те же узлы агентам.

<!-- block:68394 -->
### Уровни заголовков задаёт дерево

Блок прямо под страницей отображается как h2, блок под ним — как h3. У заголовка, набранного в тексте Markdown, нет своего узла, поэтому инструменты его отклоняют. Каждый раздел — отдельный блок: так он появляется в содержании страницы, и на него можно сослаться напрямую.

<!-- block:68392 -->
## Что дают узлы

У каждого узла есть постоянный ID, родитель и собственная история изменений.

<!-- block:68395 -->
### Ссылки переживают переименование

Ссылка `block:N` использует постоянный ID узла. Переименование, переписывание или перемещение узла оставляет ссылку целой.

<!-- block:68396 -->
### Обратные ссылки появляются сами

Поскольку ссылки нацелены на ID узлов, Wikilayer может перечислить страницы, которые указывают на узел. Этот список показан на странице и в её собранном документе Markdown.

<!-- block:68397 -->
### Вместе с узлом перемещаются его потомки

`move_node` меняет родителя узла. Его потомки перемещаются вместе с ним, а уровни их заголовков следуют за новой глубиной. `sort_key` ставит узел среди соседних, не правя их тексты. `migrate` может перенести поддерево в другую вики, если никакие ссылки не пересекут границу вики.

<!-- block:68398 -->
### История принадлежит каждому узлу

Каждый узел хранит свои версии и `updated_at`. Правка одного блока добавляет запись в историю этого блока, не меняя его соседей.

<!-- block:68399 -->
### Оглавление избавляет от чтения всей вики

`get_outline` показывает карту вики через заголовки, ID и число токенов, не присылая каждый текст.

<!-- block:68400 -->
### Ссылки связывают ветви

Дерево даёт каждому узлу одного родителя. Короткие ссылки связывают родственные узлы в других местах вики, а обратные ссылки показывают обратные связи, не дублируя содержимое.

<!-- block:68393 -->
## Чтение и экспорт

<!-- block:68401 -->
### Страница читается как один документ

Браузер отображает страницу с её разделами по порядку. `get_page_markdown` возвращает ту же страницу агенту, с комментарием перед каждым узлом, который содержит его ID. Публичные вики также отдают собранный документ как [представление в Markdown](page:68364).

<!-- block:68402 -->
### Содержимое переносимо

[Экспорт вики](page:68362) содержит её Markdown, файлы и структуру, так что содержимое можно хранить и вне Wikilayer.

---

## Links here

- [Markdown](page:68371)
- [Представление в Markdown](page:68364)
- [Руководство Wikilayer](/smee-again/wikilayer-howto/ru)

---

[All pages](https://wikilayer.org/smee-again/wikilayer-howto/ru/index.md)
