Читать документацию локально
01Документацию пакетов, которыми вы пользуетесь, включая приватные, можно читать на собственной машине, ничего никуда не отправляя. Эта страница скачивает руководство на вашу машину и открывает читалку в браузере.
Скачай руководство VibeVM, пакет org.vibevm.core/vibevm-docs, в машинное хранилище, открой локальную читалку документации и скажи мне адрес, который открыть в браузере.
навык vibevm, установленный у вашего агента; доступ по сети к реестру один раз, или пакет, уже лежащий в хранилище
vibe cache list показывает org.vibevm.core/vibevm-docs; vibe doc serve запущен и печатает адрес на 127.0.0.1; браузер показывает первую страницу руководства
vibe cache list --quiet
Что происходит
03Агент выполняет vibe cache add org.vibevm.core/vibevm-docs. Пакет документации никогда не ставится в проект; он прогревается в машинное хранилище (store) вместе с пакетами, которые описывает, чтобы каждое правило, которое он цитирует, разрешалось без сети. Затем агент выполняет vibe doc serve: vibe запускает маленький веб-сервер, который слушает только на вашей машине, отрисовывает каждую страницу из хранилища по запросу и печатает адрес. Пока вы читаете, из интернета ничего не скачивается, и ни одна страница не покидает машину.
04 spec: vibe install MUST refuse a doc…
vibe installMUST refuse adocpackage with a hint naming the warm-up command; documentation is warmed into the machine store withvibe cache add(§11), and the local reader andvibe explainread the store.
05 spec: vibe doc serve starts an HTTP…
vibe doc servestarts an HTTP server on 127.0.0.1 only, serves the shell and, on every request, glues in the island rendered from the machine store, the current project's lock file or a private registry. The language preference comes from the project's[i18n].preferredwhen present. The mode is fully autonomous: no request to vibevm.org, no external CDN or fonts, everything in the bundle. The server serves files only from known roots (the store, the shell), without path traversal and without directory listing, with a content security policy naming no external source.
Руками
061. Прогрейте хранилище. Внутри проекта источник — его реестры; вне проекта — реестры всей машины:
082. Запустите читалку и откройте напечатанный адрес в браузере. Остановите её через Ctrl+C:
103. Выберите язык переключателем на любой странице. Там, где у страницы нет перевода, читалка показывает язык самого руководства и говорит об этом.
Чтение по порядку
11Руководство, которое объявило учебный путь (learning path), открывается в этом порядке. Список рядом со страницей показывает его главы с номерами, справочные страницы стоят в конце, а каждая страница заканчивается ссылками на предыдущую и следующую страницу пути. Переключатель над списком показывает те же страницы, сгруппированные по разделам, и читалка запоминает ваш выбор. Руководство без пути перечисляет страницы по разделам.
12 spec: Where the package declares a learning…
Where the package declares a learning path, the site and the local reader show the contents as the path by default — the chapters numbered in order, an appendix chapter without a number — with a switch to the sections view, which is the navigation of ##NAV-PINNED unchanged. A page on the path ends with links to the previous and the next page of the path, and the package page lists the path by chapter and opens it with its first page. Without a declared path nothing changes.
Цитаты из спецификаций
13Страница цитирует правила, на которые опирается, слово в слово из спецификаций. Читалка сворачивает каждую цитату в одну строку: маленький треугольник, слово spec: и несколько слов из самого правила — или слова «цитата из спецификации», если правило слишком короткое, чтобы его описать. Нажмите на строку, чтобы прочитать правило целиком, и нажмите ещё раз, чтобы свернуть его. На печати страница показывает все правила полностью, а версии страницы в .md и .xml несут каждое правило целиком.
14 spec: Cited rules are folded
Cited rules are folded (added 2026-09-26). In the HTML island everyruleblock is a disclosure that starts closed: one line — the mark ▶, the wordspec:and a short description of the rule — and, opened, the rule's full text with its address, as before. The description comes from the rule's own words: its bold lead when the lead has two to eight words; after a one-word lead such as «Decision», that word and the first words after it; otherwise the rule's first words, at most six and never ending on a function word, with an ellipsis. A rule of ten words or fewer, or one whose text is not in hand, shows the edition's words for «quote from the specification» instead —цитата из спецификацииin a Russian edition. The block number stays visible while the rule is closed, and printing opens every rule. The fold is for a person's eye only: the.mdand.xmlprojections, thellmsfiles and the MCP surfaces carry the full text inline.
Слова из глоссария
15Слово со ссылкой на глоссарий руководства показывает своё определение, если навести на него указатель на широком экране. Через мгновение рядом со ссылкой открывается маленькая карточка и закрывается, когда указатель уходит. На телефоне или в узком окне ссылка, как и раньше, открывает глоссарий.
16 spec: A glossary term shows its definition…
A glossary term shows its definition on hover, in the desktop layout only (added 2026-09-26). When the page lays the contents column beside the text and the pointer is a fine one that can hover, pointing at a link to an entry of the glossary the documentation declares (##GLOSSARY-DECLARED) opens, after a short pause, a small card beside the link with the entry's term and the first paragraph of its definition, as the glossary page states them. The card also opens when the link takes keyboard focus, stays while the pointer is on it, and closes when the pointer leaves or on Escape. The link is unchanged: selecting it still opens the glossary at the entry. In the narrow layout and on a touch screen no card appears, and the glossary page itself shows none. The definitions travel in the page's HTML island, resolved at build time (##PIPE-SHELL-PARSES-NOTHING): nothing is fetched or parsed in the browser, and a screen reader hears the definition as the link's description on every device.
Приватные пакеты
17Та же читалка показывает документацию пакетов из приватного реестра или только с вашей машины: что лежит в хранилище, то она и отрисовывает. Это и есть задуманный путь для проприетарной документации, и потому читалка никогда не обращается к публичному сайту.
18 spec: The local reader listens on 127.0.0.1…
The local reader listens on 127.0.0.1 only, serves only known roots, loads nothing external, and contacts the network only for a shell download the user explicitly confirmed.
Оболочка читалки
19Выпущенный vibe несёт интерфейс читалки внутри бинарника. vibe, собранный из исходников, несёт простую запасную оболочку; vibe doc shell install скачивает полный интерфейс для своей версии из ассетов выпуска в ~/.vibe/opt/, сверив размер и дайджест, и только по вашей просьбе. Без него читалка работает, просто скромнее, а vibe doc serve --print-shell говорит, какую из двух оболочек она держит.
Особые случаи и правила
21Прогрев пакета документации прогревает и его предметы (subject), так что правила, которые цитирует страница, разрешаются без сети.
22 spec: Warming a doc package with vibe…
Warming adocpackage withvibe cache addwarms its subjects too, so thatspec://citations resolve offline.
23Внутри проекта, чей локальный реестр держит пакет прямо в дереве, vibe cache add --offline прогревает его без сети. Язык читалки берётся из [i18n].preferred проекта или из флага при запуске.
24 spec: The store is warmed with vibe…
The store is warmed withvibe cache add <coordinate>from a registry, orvibe cache add --offline <coordinate>from a project root whose project-local registry holds the package in-tree; the sources ofvibe-docare the store (lookup,list_all), the lock file (Lockfile::read,slot_abs_path), a registry (resolve_and_fetch) and a checkout (LocalRegistry).
25 spec: The local reader serves the same…
The local reader serves the same from the store; the preference comes from the project's [i18n].preferred or a launch flag.
26На сайте та же страница живёт под /doc/: язык идёт следующим сегментом пути, а у языка источника префикса нет. Адрес с номером версии показывает текущее содержимое этой версии, потому что версию могут опубликовать заново, а реестр не хранит прошлых публикаций.
27 spec: The site is mounted under…
The site is mounted under the path/docof the main domain. The language is the path segment after/doc/; the source language of a documentation carries no prefix. The address map is deterministic and needs no index:
28 spec: An address with a version number…
An address with a version number always shows the current content of that version in the registry: one number may be published ten times a day, and the site shows the last publication. There are no permanent links to past publications — they do not exist in the registry either (§14).
29Читалку может встроить плагин редактора через iframe; тогда плагин передаёт при запуске собственный origin, и читалка принимает фреймы только из него.
30 spec: The policy is sent…
The policy is sent as a header, not a<meta>:default-src 'self'; script-src 'self'; style-src 'self'; img-src 'self' data:; font-src 'self'; connect-src 'self'; media-src 'self'; object-src 'none'; base-uri 'none'; form-action 'none'; frame-ancestors <origin>, whereframe-ancestorsnames only the origin of the host that launched the reader — the launch parametervibe doc serve --frame-ancestor <origin>, because a webview's origin changes from window to window — and is'none'without the parameter. The reader has no CORS layer at all and sendsx-content-type-options: nosniff. The public site is not embeddable in frames.
31Агент читает то же хранилище: vibe explain "spec://org.vibevm.core/vibevm-docs-ru/start/what-vibevm-is" печатает страницу или блок текстом.