VibeVM
Contents
On this page
ru
Publisher
org.vibevm.core
Version
1.0.0latest
Adapts
org.vibevm.core/vibevm-docs
Audiences
user
Reading time
4 min
Rendered
Read aloud
never

Установить пакет

01Вы нашли пакет, которому должен следовать ваш проект. Эта страница добавляет его в проект, записывает точную версию и показывает, как проверить, что агент теперь будет его читать.

02
Установи пакет org.vibevm.world/wal в проект VibeVM в текущей папке, прими план и скажи мне, какая версия записана и что агент прочитает из неё в начале сессии.

навык vibevm, установленный у вашего агента; проект с vibe.toml в текущей папке; доступ по сети к реестрам проекта или пакет, уже лежащий в машинном хранилище

vibe.toml перечисляет пакет среди требований, vibe.lock закрепляет одну версию с отпечатком содержимого, дерево пакета лежит под vibevm/vibedeps/, а vibe tree показывает его стартовый фрагмент в списке чтения

  • grep -q "org.vibevm.world/wal" vibe.lock
  • vibe check --quiet

Что происходит

03Агент выполняет vibe install org.vibevm.world/wal. vibe обходит реестры проекта по порядку и спрашивает у первого, который знает пакет, его версии; без ограничения он берёт новейший стабильный выпуск. Он разрешает собственные зависимости пакета вместе с остальным графом проекта, скачивает всё, чего ещё нет в машинном хранилище (store), и сверяет каждый отпечаток (fingerprint). Потом печатает план: какие пакеты будут добавлены в каких версиях и какие файлы изменятся. Пока вы не подтвердили, ничего не записывается. После подтверждения vibe копирует пакеты в vibevm/vibedeps/, записывает требование в vibe.toml и пины в vibe.lock и пересобирает стартовые файлы. Затем агент запускает vibe tree, чтобы показать вам новый список чтения.

04 spec: Resolution: — the depsolver: read every…
Resolution — the depsolver: read every node's [requires], pick one version per package. It must stay unified (one vibe.lock, one version per package across the workspace — the diamond problem; PROP-007 §2.4). It cannot be computed per-subtree. But it can be skipped entirely when its inputs are unchanged (§2.2).

Понять, что занимает время

05Обычная установка показывает текущий этап и пакет, затраченное время и завершённые компоненты. Прогресс-бар считает пакеты или байты, когда общий объём известен; вращающийся индикатор означает, что операция ещё выясняет объём работы или ждёт ответа. Примеры ниже используют --quiet для краткого результата; уберите его, чтобы видеть прогресс.

06Команда vibe install org.vibevm.world/redbook --verbose (или -v) дополнительно показывает выбор registry и cache и подробности текущей операции. Прогресс идёт в stderr, поэтому перенаправление stdout сохраняет результат команды. При перенаправлении прогресс выводится обычным текстом. --quiet и --json отключают его даже вместе с --verbose.

07 spec: An interactive terminal displays the overall…
An interactive terminal displays the overall operation, nested active components, elapsed time, and retained completion records. Known finite work displays completed/total with its unit and a progress bar; unknown work displays an indeterminate indicator and elapsed time. No percentage estimates elapsed-time completion or treats a discovered dependency count as the final closure. A redirected or dumb terminal receives flushed plain start, completion and failure records without cursor controls, with bounded periodic waiting updates for long silent work.
08 spec: The global -v/--verbose flag requests detailed…
The global -v/--verbose flag requests detailed progress diagnostics. Default human output already reports meaningful progress. --quiet and --json suppress progress, including verbose progress; their existing summaries, document streams and exit codes remain unchanged. Progress is written to stderr; command results keep their existing stdout contract.

Руками

091. Установите по координате. Добавьте @ и ограничение, чтобы попросить диапазон или точную версию:

10
vibe install org.vibevm.world/wal --path hello-vibe --assume-yes --quiet
vibe install: 1 package materialised

112. Подтвердите план, когда спросят. --assume-yes отвечает «да» за скрипты и агентов.

123. Проверьте, что записано и что агент будет читать:

13
vibe list --path hello-vibe
KIND  NAME  VERSION  ROLE     BOOT SNIPPET
flow  wal  1.0.0    package  —

1 package installed.
14
vibe tree --plain --path hello-vibe
project: <TMP>/work/hello-vibe
STATIC.md: (none)
packages: 1   roots: 1
columns: load  T=transitive  C=condition  S=in STATIC.md

org.vibevm.world/wal  dynamic  .  .  .

Как попросить версию

15vibe install org.vibevm.world/wal@^1.0 принимает любую 1.x; @=1.0.0 — ровно одну; --exact записывает разрешённую версию в манифест точным пином вместо диапазона. Манифест хранит ограничение, о котором вы просили; лок-файл хранит версию, которую вы получили.

16 цитата из спецификации
flow:wal@^0.3 → semver range.

17Префикс вида, как в flow:org.vibevm.world/wal, необязателен; когда он есть, vibe его проверяет: если пакет оказывается другого вида, установка останавливается.

18 цитата из спецификации
resolved exactly; kind validated against the manifest

После клонирования проекта

19vibe install без имён пакетов ставит то, что манифест уже требует, в версиях, которые закрепил лок-файл. Когда ни манифест, ни лок не менялись с прошлой установки, vibe даже не запускает резолвер: лок-файл и есть ответ, а команда только проверяет, что дерево ему соответствует.

20 spec: With the freshness check, vibe install…
With the freshness check, vibe install becomes lockfile-respecting: unchanged [requires] ⇒ the locked versions are honoured verbatim.

Особые случаи и правила

21Установка пакета по имени разрешает весь граф заново, но каждая зависимость, которой изменение не касается, сохраняет закреплённую версию; только настоящий конфликт запускает полный пересчёт.

22 spec: When [requires] has changed, resolution runs…
When [requires] has changed, resolution runs, but holds the lock for every dependency the change did not touch (§5.3): each registry-resolved root the lock still satisfies is pinned to its locked version, so the re-resolve never drifts an untouched dependency — only the changed one and its subtree move.

23Пакет может объявить скрипт, который выполняется после его установки. Установить пакет — значит согласиться его запустить; скрипт работает внутри собственной папки пакета, и его последствия не отслеживаются. Прочитайте манифест пакета, которому не доверяете, прежде чем ставить его.

24 spec: Current law
Current law. Installing the package is the consent to run its declared hooks. There is no [hooks].allowed_groups, first-run prompt, or --allow-hooks permission layer. Safety is the PROP-054 observability model: the manifest is statically inspectable, selected contributions are narrated, and durable run evidence identifies what ran and which package supplied it.

25Уже установленный пакет не ставится второй раз: vibe говорит об этом и указывает на vibe update.

26Публичный реестр, который на отсутствующий пакет отвечает ошибкой аутентификации, обходится стороной и не считается сбоем; добавьте --auth-required в скрипт, который должен заметить, что приватный реестр лежит.

27Пакет, который приносит инструменты, записывается при установке и собирается по требованию: vibe bin build компилирует названные инструменты или все сразу из точно установленного пакета, а vibe bin exec <name> разрешает инструмент через лок-файл проекта до его папки и запускает, при необходимости сначала собрав. Установить пакет — значит согласиться на сборку, и vibe рассказывает, что собирается компилировать. Без сети сборка, которой нужны крейты из сети, падает так же, как падает Cargo, с ручным рецептом в подсказке. Когда вашему коду нужен поставленный крейт, ссылайтесь на него путём в папку пакета и держите vibevm/vibedeps/ вне своего Cargo-workspace, потому что папка не может принадлежать двум workspace сразу.

28 spec: After materialising a slot whose manifest…
After materialising a slot whose manifest declares [[binary]] entries, vibe install MAY build them (v1: on vibe bin sync, see §4 — the install itself only RECORDS the declarations; an install-time --build-bins opt-in flag is v2 surface).
29 spec: vibe bin build [<name>…] — release…
vibe bin build [<name>…] — release build of the named tools (default: all declared) through their exact installed package and Cargo declaration; installation is the consent and the selected work is narrated.
30 spec: vibe bin exec <name> [--] <args…>…
vibe bin exec <name> [--] <args…> — resolve name through the CURRENT project's lockfile → its slot → the slot-resident artifact (building the declared package target if absent), then execute with the exit code passed through. This is the rustup dispatch model: the project's pinned version is what runs, always.
31 spec: Successor to the historical first-build prompt
Successor to the historical first-build prompt. Building executes package build scripts and proc-macros, so installation plus explicit target/route selection is the authorisation and the engine narrates the exact provider and target before execution. Lifecycle build does not add an allow-list, first-run prompt or --allow-hooks analogue; provider identity, artifact records and outcomes supply the audit trail. Existing direct vibe bin compatibility remains routed through its declared package rather than silently choosing ambient code.
32 spec: Cargo needs crates.io for third-party deps…
Cargo needs crates.io for third-party deps unless the local cargo cache is warm: offline boxes get the same honest failure cargo gives, plus the hint that cargo install --path <slot>/crates/… (the documented degraded path, which stays valid indefinitely) has the same network shape — there is no offline shortcut to a first build.
33 spec: A language-native consumer that needs…
A language-native consumer that needs a shipped crate — a proc-macro that compiles into the consumer's own code (the specmark case), or a binary it invokes (the conform/specmap case) — references it by path into the materialised slot:
34 spec: The consumer excludes vibevm/vibedeps/…
The consumer excludes vibevm/vibedeps/ (and, for a self-hosting repo, the in-repo vibevm/vibepacks/ source) from its [workspace], so the slot's crates belong to the package's workspace, not the consumer's — Cargo forbids a directory living in two workspaces, and this is the standard resolution for a repo that contains a sub-project with its own workspace.

For an agent

This page has a machine mirror. The citation carries the version rather than latest, so what an agent quotes does not move under it.

spec://org.vibevm.core/vibevm-docs@1.0.0/howto/install-a-package

.md.xmlllms.txt