VibeVM

vibe · spec-driven development, в пакетах

Дисциплина, которую можно установить.

Кодовый агент начинает каждую сессию, не зная о проекте ничего. VibeVM чинит это так же, как пакетный менеджер починил недостающие библиотеки: проект объявляет, каким наборам правил он следует, а vibe резолвит их, закрепляет и вычисляет точный текст, который агент читает первым. Когда дисциплина улучшается, вы обновляете её как любую другую зависимость.

Проблема

Эпоха copy-paste агентного контекста

Инструкционные файлы стали несущими: CLAUDE.md, AGENTS.md и их родня теперь решают, как агенты ведут себя в ваших репозиториях. Но этот текст всё ещё ведётся как вики — копируется руками между проектами, правится на месте и не версионируется, хотя фактически он давно зависимость.

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

Модель

Два дерева, одна вычисленная полоса

vibe держит жёсткую границу между тем, что пишете вы, и тем, что материализует он. Ваши спецификации живут в vibevm/vibespecs; установленные пакеты копируются байт-в-байт в vibevm/vibedeps — и коммитятся, чтобы свежий клон читался без сети, без инструмента и без знания о том, что vibe существует. Установка пакета никогда не редактирует ваш текст. Удаление не оставляет в нём следа.

Порядок чтения выводится, а не декларируется: foundation, затем проект, затем зависимости топологически, затем ваши переопределения. Авторы не нумеруют сниппеты, и два пакета не могут подраться за позицию.

Экономика внимания

Каждое слово полосы оплачивается на каждом старте сессии

Поэтому полоса несёт инструкции, а не объяснения. Справочная глубина остаётся в пакетах и загружается, когда вопрос действительно возник. А поскольку байт-идентичная полоса общая, кэш провайдера, прогретый одним агентом, обслуживает и босса, и всех воркеров — вот почему в неё не может попасть ничто посессионное: ни имена, ни id, ни таймстемпы.

Текст стоит токенов. vibe построен вокруг этой цены.

Возможности

Что эта механика даёт

Воспроизводимость

Diff lock-файла — это changelog того, что прочитает агент

vibe.lock записывает весь разрешённый граф: версию, реестр и отпечаток каждого файла. Свежий клон устанавливает идентичный граф, а pull request, меняющий lock, показывает ровно то, что агент теперь будет читать.

Отказ

Целостность, которая останавливает до записи

Если источник отдал другие байты под известной версией — force-push тега, скомпрометированное зеркало — vibe отказывает до записи чего-либо, называя ожидаемый отпечаток. Офлайн-режим не трогает сеть вообще, а промах — жёсткая именованная ошибка, никогда не тихая частичная установка.

Адресация

Поправка за двадцать токенов

Спеки цитируются адресами spec:// с неизменяемыми якорями. «Почини spec://…#RETRY-COUNT» попадает в одну строку; ошибки называют нарушенное правило адресом, а vibe explain печатает его. Переименования оставляют tombstone — процитированный адрес продолжает резолвиться.

Доверие

Внутри нет модели

У каждой подсистемы есть полный алгоритмический режим: vibe check — детерминированный линтер, резолюция — чистое вычисление. Когда операции нужно рассуждение, vibe паркует инструкцию в relay-ящик, который опустошает ваш агент. Наличие API-ключа не включает ничего.

Как это работает

Пять команд до загруженного агента

  1. $curl -fsSL https://vibevm.org/install.sh | bash

    Одна команда ставит vibe, vibe-index и соответствующее дерево исходников. На Windows: irm https://vibevm.org/install.ps1 | iex.

  2. $vibe init hello-vibe

    Идемпотентный каркас: манифест, lock, boot-файлы и managed-блоки в CLAUDE.md, AGENTS.md, GEMINI.md — vibe пишет только между собственными маркерами.

  3. $vibe install org.vibevm.world/redbook --path hello-vibe

    Резолвит дисциплину с зависимостями, показывает план — какие пакеты, какие файлы — и ничего не пишет до подтверждения.

  4. $vibe tree --plain --path hello-vibe

    Печатает вычисленный список чтения: ровно то, что агент прочитает на старте сессии, пакет за пакетом. vibe check детерминированно проверяет проект.

  5. $claude

    Или codex, opencode, cursor — любой агент, умеющий читать файлы, загружается из одной и той же полосы. Агент не запускает vibe, чтобы стартовать.

Границы

Где это уместно — и чем это не является

Берите VibeVM, когда

  • одна дисциплина процесса должна держаться в десятке репозиториев, а дрейф уже стоит вам ревью;
  • несколько агентов — или агенты вместе с людьми — работают в одной кодовой базе и нуждаются в одном boot-контексте, байт-идентичном для каждого;
  • вы хотите поправлять агента адресом, а не пересказом, и ревьюить изменения контекста как код.

Это не

  • агент — внутри нет модели, и ничего не включается от наличия ключа;
  • замена npm или cargo — управляются спеки и дисциплина процесса, а не runtime-зависимости;
  • вики — полоса намеренно короткая, потому что текст стоит токенов на каждом старте;
  • хостинг-сервис — всё работает локально, а реестр — это просто git-хостинг организация.
Статус, прямо

Текущий релиз — 1.0.0, закрытая альфа, а не обещание совместимости: он будет ломаться, пока public = false, и путь восстановления — re-init и повторная выборка, а не миграции. Открытый код под UPL-1.0.

Старт

Установите vibe — затем установите дисциплину

Linux · macOS · WSL
$curl -fsSL https://vibevm.org/install.sh | bash
Windows PowerShell
PS>irm https://vibevm.org/install.ps1 | iex
Затем, в проекте:
$vibe install org.vibevm.world/redbook
А затем — Zap

Первый продукт семьи VibeVM: проекты, переписка агентов, устойчивые вопросы и Git-worktree — на одной локальной карте.

Почему Zap →

Одним абзацем

VibeVM обращается с контекстом, из которого загружаются кодовые агенты, как с зависимостью: дисциплины процесса, спеки и скиллы ставятся версионируемыми пакетами, закрепляются отпечатком содержимого, материализуются в коммитимое дерево и компилируются в boot-полосу, которую любой агент потребляет чистым чтением файлов. Закрытая альфа, открытый код под UPL-1.0: curl -fsSL https://vibevm.org/install.sh | bash.