VibeIDE VibeBrains
winget install --id=VibeBrains.VibeIDE -e AI-first IDE — a Visual Studio Code fork with custom LLM providers, a coding agent and autopilot. No subscriptions, no telemetry, bring your own API key.
winget install --id=VibeBrains.VibeIDE -e AI-first IDE — a Visual Studio Code fork with custom LLM providers, a coding agent and autopilot. No subscriptions, no telemetry, bring your own API key.
Открытый AI-редактор кода. Без подписки. Без телеметрии. Ваши ключи, ваши модели.
или одной командой: winget install VibeBrains.VibeIDE
VibeIDE — форк VS Code open source (Code-OSS) с глубоко встроенным AI: не как расширение поверх редактора, а как часть самого редактора. Полностью открытый исходный код (MIT), работает с любым LLM-провайдером, не отправляет никакой телеметрии.
> «Ты видишь всё — и управляешь всем»
| VibeIDE | Cursor | Windsurf | GitHub Copilot | |
|---|---|---|---|---|
| Открытый исходный код | ✅ MIT | ❌ Закрытый | ❌ Закрытый | ❌ Закрытый |
| Подписка | ❌ Не нужна | 💸 $20/мес | 💸 $15/мес | 💸 $10/мес |
| Свой API-ключ | ✅ Любой провайдер | ⚠️ Ограничено | ⚠️ Ограничено | ❌ |
| Свои провайдеры без пересборки | ✅ .vibe/providers.json | ⚠️ Только base URL | ❌ | ❌ |
| Локальные модели (Ollama) | ✅ Встроено | ⚠️ Через расширение | ❌ | ❌ |
| Телеметрия вендору | ❌ Нет | ✅ Есть | ✅ Есть | ✅ Есть |
| Ключи в системном хранилище | ✅ safeStorage | ✅ | ❓ | ✅ |
| Маркетплейс расширений | Open VSX (бесплатно) | VS Marketplace | VS Marketplace | VS Marketplace |
| Мультиагентность | ✅ Встроена | ⚠️ Базовая | ❌ | ❌ |
| Правила AI на уровне проекта | ✅ Skills system | ✅ .cursorrules | ❌ | ❌ |
| Поддержка MCP | ✅ Официальный SDK | ✅ | ❌ | ⚠️ Preview |
Здесь — только ключевое. Полный каталог по темам — в docs/functional.md.
.vibe/providers.json: добавить, переопределить или выключить провайдера и модели, живой каталог моделей из API; работают как встроенные./simplify возвращает делит-лист по диффу, маркеры vibe-later собираются в леджер упрощений.old/new + терпимый поиск заменяемого текста..vibe/commands.json с авто-хоткеями, едут в репозитории вместе с проектом.safeStorage), детекция секретов перед отправкой в LLM.winget install VibeBrains.VibeIDE, на маке DMG..nvmrc) — именно этот мажор; на другом (24/20) сборка падает, часто молча.fnm (Fast Node Manager) — это альтернатива классической установке Node.js с сайта. Это лёгкий менеджер версий Node: вместо одного глобального Node в системе он хранит несколько версий рядом и переключает активную версию под конкретный проект автоматически по файлу .nvmrc (в VibeIDE там зафиксирована 22.22.1). Удобно, когда разные проекты требуют разных версий Node.
Установка и активация нужной версии под проект (один раз):
fnm install 22.22.1
fnm default 22.22.1
node -v # должно показать v22.22.1
npm -v # должно показать версию npm
> Если в новом терминале node/npm «не является командой» — у тебя не подключена интеграция fnm с шеллом (fnm хранит версии отдельно и подставляет их через shell-хук). Активируй её в профиле:
> - PowerShell: fnm env --use-on-cd | Out-String | Invoke-Expression (добавь в $PROFILE)
> - bash/zsh: eval "$(fnm env --use-on-cd)" (добавь в ~/.bashrc / ~/.zshrc)
>
> На Windows запуск dev-IDE через .\run-dev.bat --compile также сам резолвит Node из fnm, если он установлен.
npm install компилирует нативные модули (@vscode/windows-registry, @vscode/spdlog, native-keymap, node-pty и др.) через node-gyp, поэтому нужен компилятор MSVC. Без него preinstall падает с *** Invalid C/C++ Compiler Toolchain.
winget install --id Microsoft.VisualStudio.2022.BuildTools -e --accept-package-agreements --accept-source-agreements `
--override "--quiet --wait --norestart --add Microsoft.VisualStudio.Workload.VCTools --includeRecommended"
> ⚠️ Spectre-mitigated библиотеки — отдельный компонент, и без него сборка падает. На @vscode/windows-registry будет MSB8040: для этого проекта требуются библиотеки с устранением рисков Spectre. --includeRecommended их не ставит — добавь явно через setup.exe modify (winget доустановить компонент в существующий VS не умеет — считает это «нет обновлений»):
>
> powershell > & "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\setup.exe" modify ` > --installPath "${env:ProgramFiles(x86)}\Microsoft Visual Studio\2022\BuildTools" ` > --add Microsoft.VisualStudio.Component.VC.Runtimes.x86.x64.Spectre --quiet --norestart >
>
> Не передавай --wait напрямую в setup.exe — он его не понимает и сразу выходит с exit 87. Ожидание делает Start-Process … -Wait.
После установки тулчейна открой новый терминал (PATH обновится) и убедись, что Node = 22.22.1, прежде чем npm install.
git clone https://github.com/VibeBrains/VibeIDE.git
cd VibeIDE
npm install
npm run compile
./scripts/code.sh # Linux / macOS
.\run-dev.bat # Windows (верный запуск dev-IDE; --compile пересоберёт перед стартом)
Для быстрой разработки:
./scripts/code.sh --inspect # с отладчиком
Одно нажатие через Docker или GitHub Codespaces — см. Dev Container.
При первом запуске VibeIDE проведёт вас через подключение модели. Можно использовать облачный API-ключ (OpenAI, Anthropic и др.) или подключить локальный Ollama — аккаунт не нужен.
src/vs/workbench/contrib/vibeide/ ← весь AI-функционал
browser/ ← UI: сайдбар, панель настроек, статусбары
common/ ← сервисы: роутер моделей, MCP, память, RAG
extensions/ ← встроенные расширения VS Code
resources/ ← платформенные ресурсы (иконки, desktop-файлы)
product.json ← брендинг и настройки маркетплейса
Вещи, которые работают «из коробки», но нигде явно не описаны.
data/ — портативный режимСоздайте папку data/ рядом с бинарником VibeIDE — IDE автоматически перейдёт в portable mode: все данные будут храниться внутри неё, а не в системных директориях (%APPDATA%, ~/.config и т.п.). Это подтверждено кодом в src/bootstrap-node.ts.
VibeIDE/
data/
user-data/ ← настройки, профили, history
extensions/ ← установленные расширения
shared-data/ ← shared state между воркспейсами
agent-plugins/ ← MCP/agent плагины
argv.json ← аргументы запуска
policy.json ← политики (если применяются)
tmp/ ← если создать эту подпапку, она становится системной TMP/TMPDIR
Перенести IDE на другой компьютер = скопировать один каталог. Путь к data/ можно переопределить переменной окружения VSCODE_PORTABLE.
.vibe/ — конфигурация воркспейса для AIПри первом открытии любого воркспейса VibeIDE автоматически создаёт папку .vibe/ с шаблонами конфигурации. Файлы внутри читаются IDE на лету (hot-reload) — изменения подхватываются без перезапуска.
| Файл / Папка | Что делает |
|---|---|
rules.md | Правила для агента, подмешиваются в системный контекст перед каждым запросом |
constraints.json | Жёсткие блокировки записи/чтения файлов на уровне IDE — агент не может их обойти |
permissions.json | Точечные allow/deny на конкретные пути (тоньше, чем constraints.json) |
allowed-models.json | Whitelist моделей; пустой массив = разрешены все |
ignore | Файлы/папки, которые агент не читает и не индексирует (аналог .gitignore) |
context.md | Project Brain — IDE автоматически записывает сюда накопленный контекст после каждой сессии |
pinned.json | Файлы и символы, которые всегда включаются в контекст агента |
goals.md | Цели периода; агент может обновлять по запросу |
agent-locks.json | Территориальные блокировки агентов (кто какой файл сейчас редактирует) |
plans/ | Персистентные планы задач — переживают перезапуск IDE |
prompts/ | Шаблоны запросов, вызываются в чате командой /my:имя |
workflows/ | JSON-сценарии из нескольких шагов, вызываются /workflow:имя |
skills/ | Agent Skills: SKILL.md в подпапках → вызов /skill:имя; список попадает в GUIDELINES автоматически |
snapshots/ | Снимки файлов для отката после агентных правок |
commands.json | Команды проекта — shell-шорткаты для меню «Команды» в шапке IDE; первый запуск требует approve и фиксируется в commands.trust.json |
commands.trust.json | Approved-hash'и команд (auto-managed, обычно в .gitignore) |
providers.json | Свои LLM-провайдеры и модели — добавить/переопределить/выключить без пересборки (см. ниже) |
.vibe/providers.jsonФормат JSONC (можно //-комментарии), с подсветкой и автодополнением полей прямо в редакторе. Готовый пример — .vibe/providers.example.jsonc (создаётся автоматически). Ключи API в файле не хранятся — указывайте apiKeyEnv (переменная окружения) или apiKeyRef (защищённые настройки), файл можно коммитить.
Полная спецификация формата (все поля с типами, инварианты, примеры) — docs/providers-spec.md. Её можно скопировать своей LLM и попросить собрать .vibe/providers.json под нужный провайдер.
Главное: active: true|false — тумблер (на провайдере и на каждой модели). Совпадение id со встроенным провайдером накладывает ваши поля поверх него; новый id создаёт нового; extends: "" — клон существующего как отдельный вариант. Пишите только отличия — остальное наследуется.
{
"version": 1,
"providers": [
// свой OpenAI-совместимый провайдер с нуля
{ "id": "my-proxy", "name": "Мой прокси", "baseURL": "https://llm.local/v1",
"auth": { "type": "header", "name": "x-api-key" }, "apiKeyEnv": "MY_KEY",
"models": { "fetch": true } },
// выключить встроенный (убрать из списка)
{ "id": "googleVertex", "active": false },
// прорядить модели встроенного OpenRouter
{ "id": "openRouter", "models": { "fetch": false, "static": [
{ "id": "anthropic/claude-sonnet-4.5", "default": true },
{ "id": "deepseek/deepseek-v3.2" }
] } },
// клон встроенного как отдельный вариант (оригинал остаётся)
{ "id": "openRouter-fav", "extends": "openRouter", "name": "OpenRouter — избранное",
"apiKeyRef": "openRouter",
"models": { "fetch": false, "static": [ { "id": "x-ai/grok-4", "default": true } ] } }
]
}
| Хочу | Как |
|---|---|
| свой провайдер с нуля | новый id + baseURL + auth + apiKeyEnv/apiKeyRef |
| выключить/подправить встроенный | совпасть по id, написать только изменения |
| второй вариант на базе существующего | extends: "" + новый id |
| выключить модель | в models.static — { "id": "...", "active": false } |
.vibe/ — служебные данные IDE в воркспейсеСоздаётся автоматически (не трогать руками, добавьте в .gitignore):
.vibe/audit.jsonl — аудит-лог всех действий агента: промпты, диффы, применения, откаты, stash-операции. Включается через vibeide.audit в настройках. Поддерживает ротацию по размеру (по умолчанию 10 МБ) и удаление (GDPR erasure).RAG-индекс кодовой базы хранится не в .vibe/, а в системном workspaceStorage IDE. Если в проекте есть старый .vibeide/index.json — он будет мигрирован автоматически.
Агент автоматически паузится, если совершает 3 и более одинаковых действия подряд (одинаковые = совпадают type + target операции). Также ловит паттерн A→B→A. Шаги auto-repair и task decomposition из детекции исключены.
При долгой агентной задаче таймер отсчитывает 5 минут с момента последнего явного Approve. Если пользователь не подтвердил прогресс — агент автоматически паузится. Настраивается через vibeide.deadMansSwitchMinutes; значение 0 отключает механизм. Минимум — 1 минута. Движение мыши и 429-ретраи таймер не сбрасывают.
Перед каждой агентной правкой VibeIDE автоматически стешит незакоммиченные изменения (git.stashIncludeUntracked) и восстанавливает их после применения. Если apply упал — stash также автоматически восстанавливается, изменения не теряются.
| Переменная | Эффект |
|---|---|
VSCODE_PORTABLE=/path/to/dir | Задаёт кастомный путь к данным вместо data/ рядом с бинарником |
VSCODE_APPDATA=/path | Базовая директория для данных (вместо %APPDATA% / ~/.config) |
VSCODE_DEV=1 | Изолирует данные разработчика в отдельную директорию (vibeide-dev) — не смешивает со стабильной сборкой |
Если data/ не создана и переменные не заданы, данные лежат здесь:
| ОС | Путь |
|---|---|
| Windows | %APPDATA%\VibeIDE\ |
| macOS | ~/Library/Application Support/VibeIDE/ |
| Linux | ~/.config/vibeide/ (или $XDG_CONFIG_HOME/vibeide/) |
Расширения, перенесённые из VS Code при первом запуске, копируются в ~/.vibeide-editor/extensions/.
Некоторые LLM-модели (особенно через aggregator'ы вроде opencode.ai/zen) требуют специфической настройки, чтобы стримить стабильно: одни шлют пустой ответ при стандартной temperature, другие падают без reasoning_content обратно, третьи галлюцинируют имена параметров в native function-calling и работают только через XML-формат. Все aggregator-проксированные клиенты (cursor, continue, opencode CLI) поддерживают похожие таблицы — у нас это внешний каталог.
Где живут квирки: resources/model-quirks.json — JSON-каталог в этом репо.
Источники и приоритет (по образцу models.dev.json):
model-quirks.json, положенный рядом с исполняемым файлом VibeIDE. Максимальный приоритет (явный override, действует всегда — даже офлайн). Если он старее bundled/CDN (по полю date) — один раз при старте VibeIDE показывается тост: файл всё ещё действует, но может не содержать свежих фиксов; предлагается обновить/удалить или обновить с CDN.main-ветки https://raw.githubusercontent.com/VibeBrains/VibeIDE/main/resources/model-quirks.json, ETag-кэш в ${userData}/model-quirks-cache.json. Refresh каждые 24ч (vibeide.modelQuirks.refreshIntervalHours, 0 — выкл).date из {CDN-кэш, bundled}.main → квирк у всех пользователей без релиза VibeIDE на следующем refresh-цикле.date (ISO YYYY-MM-DD) определяет «свежесть» при сравнении источников.Как добавить квирк для новой модели: PR в этот репо, правка одного файла resources/model-quirks.json. Поля правила:
| Поле | Тип | Что делает |
|---|---|---|
match | string | Substring модели (case-insensitive). Правила сливаются по полям с приоритетом most-specific (provider-scoped > длиннее match); каждое поле берётся из самого специфичного правила, которое его задаёт — затенения нет. |
temperature | 0..2 | Override default temperature провайдера. |
topP | 0..1 | Nucleus sampling. |
topK | int ≥1 | Только для провайдеров, которые его уважают. |
forceEmptyReasoning | boolean | Для DeepSeek-семейства: вшивать пустой reasoning placeholder на каждый assistant message (иначе HTTP 400). |
mirrorReasoningContent | boolean | Дублировать reasoning в providerOptions.openaiCompatible.reasoning_content (interleaved-семейства). |
forceToolCallFormat | "native" / "xml" / "auto" | Override формата tool-call'ов. "xml" для моделей с broken native FC (qwen, например). |
note | string | Свободный комментарий для контрибьюторов, не консумируется рантаймом. |
User-уровневый override: настройка vibeide.modelQuirks (JSON-объект { : { …поля… } }). Перекрывает каталог per-field. Полезно для приватных моделей или быстрого тюнинга без PR.
Принудительный refresh: команда «VibeIDE: Обновить каталог квирков моделей (model-quirks) с CDN» через палитру — резерв, если фоновый refresh не сработал или нужен свежий каталог сейчас.
Подробнее: docs/knowledge/architecture/model-quirks.md.
Pull request'ы приветствуются. Перед началом значимой работы — откройте issue для обсуждения подхода.
Инструкции по сборке, гайдлайны и процесс PR: CONTRIBUTING.md и HOW_TO_CONTRIBUTE.md.
Что изменено относительно upstream VS Code: FORK_CHANGES.md.
Discord — самый быстрый способ задать вопрос по установке и использованию, обсудить идеи и поймать «плавающие» баги вместе с другими пользователями, пока вы ещё не уверены, что это стоит оформлять в тикет.
GitHub Issues — для воспроизводимых сбоев, регрессий и предложений по продукту лучше завести issue в репозитории: так задача не потеряется, к ней можно приложить логи и версию сборки, а исправление будет привязано к релизам.
Почта — mail@vibeide.ru: деловые вопросы, партнёрство, обратная связь вне публичных площадок.
Если VibeIDE оказался полезным — буду рад благодарности 🙏
MIT — см. LICENSE.txt.
VibeIDE построен на базе VS Code open source (Code-OSS), который также распространяется под лицензией MIT. Сторонние компоненты: ThirdPartyNotices.txt.