Windows (нативная) — руководство
VibeOS работает нативно на Windows 10 и Windows 11 — без WSL, Cygwin или Docker. Эта страница — подробное погружение: что работает нативно, что только в WSL, что на самом деле делает установщик, и какие специфичные для Windows настройки могут вам понадобиться.
Если вы просто хотите установить VibeOS, однострочной команды с главной страницы или страницы установки достаточно. Возвращайтесь сюда, если что-то пойдёт не так.
Если вы предпочитаете полноценное POSIX-окружение (для встроенного терминала панели управления, семантики fork, файловых наблюдателей в стиле Linux и т.д.), смотрите Руководство по Windows (WSL2). Оба варианта мирно сосуществуют: нативные данные хранятся в %LOCALAPPDATA%\vibeos, данные WSL — в ~/.vibeos.
Быстрая установка
Откройте PowerShell (или Windows Terminal) и выполните:
iex (irm https://vibeos.com.ru/downloads/install.ps1)
Права администратора не требуются. Установщик помещает файлы в %LOCALAPPDATA%\vibeos\ и добавляет vibeos в ваш User PATH — откройте новый терминал после завершения.
Параметры установщика (требуют форму scriptblock для передачи параметров):
& ([scriptblock]::Create((irm https://vibeos.com.ru/downloads/install.ps1))) -NoVenv -SkipSetup -Branch main
| Параметр | По умолчанию | Назначение |
|---|---|---|
-Branch | main | Клонировать определённую ветку (полезно для тестирования PR) |
-Commit | не задан | Зафиксировать установку на определённом SHA коммита (переопределяет -Branch) |
-Tag | не задан | Зафиксировать установку на определённом git-теге (например, v0.14.0) |
-NoVenv | выкл. | Пропустить создание venv (для продвинутых — вы управляете Python сами) |
-SkipSetup | выкл. | Пропустить мастер vibeos setup после установки |
-VibeosHome | %LOCALAPPDATA%\vibeos | Переопределить каталог данных |
-InstallDir | %LOCALAPPDATA%\vibeos\vibeos-agent | Переопределить расположение кода |
Установщик автоматически повторяет попытки при нестабильных git-запросах и удаляет BOM из любого загруженного install.ps1, так что BOM UTF-8, подхваченный во время передачи по HTTP, больше не ломает форму [scriptblock]::Create((irm ...)).
Десктопный установщик (альтернатива)
Также доступен простой графический установщик — полезен, если вы предпочитаете дважды щёлкнуть .exe, а не открывать PowerShell. Скачайте VibeOS Desktop, запустите установщик, и при первом запуске графический интерфейс под капотом вызовет install.ps1 для установки Python (через uv), Node, PortableGit и остальных зависимостей, описанных ниже. После первого запуска десктопное приложение и установленный через PowerShell CLI vibeos используют один и тот же каталог установки %LOCALAPPDATA%\vibeos\vibeos-agent и каталог данных %LOCALAPPDATA%\vibeos — свободно переключайтесь между GUI и CLI.
Используйте десктопный установщик, если хотите привычный для Windows процесс установки или передаёте VibeOS не-разработчику; используйте однострочную команду PowerShell, если вы уже в терминале.
Загрузка зависимостей (dep_ensure)
При первом запуске (и по требованию при обнаружении отсутствующего инструмента) VibeOS запускает небольшой загрузчик на Python — vibeos_cli/dep_ensure.py — который проверяет и лениво устанавливает необходимые не-Python-зависимости. В Windows актуальны следующие:
| Зависимость | Зачем VibeOS это нужно |
|---|---|
| PortableGit | Предоставляет bash.exe для терминального инструмента и git для клонирования внутри сессии. Устанавливается во время установки, а не через dep_ensure. |
| Node.js 22 | Требуется для браузерного инструмента (agent-browser), веб-моста TUI и моста WhatsApp. |
| ffmpeg | Преобразование аудиоформатов для TTS / голосовых сообщений. |
| ripgrep | Быстрый поиск файлов — если недоступен, используется grep. |
| npm-пакеты | agent-browser, Playwright Chromium и любые Node-зависимости для каждого набора инструментов устанавливаются один раз при первом использовании браузерного инструмента. |
Каждая зависимость проверяется в стиле shutil.which(...); если бинарник отсутствует и запуск интерактивный, dep_ensure предлагает установить его (передавая управление scripts\install.ps1 -ensure <dep> для фактической установки). При неинтерактивных запусках (шлюз, cron, безголовый десктопный запуск) запрос пропускается и выводится понятная ошибка: «для этой функции требуется <зависимость>`».
Что на самом деле делает установщик
Сверху вниз, по порядку:
- Загружает
uv— быстрый менеджер Python от Astral. Устанавливается в%USERPROFILE%\.local\bin. - Устанавливает Python 3.11 через
uv. Существующий Python не требуется. - Устанавливает Node.js 22 (winget, если доступен, иначе портативный tarball Node распаковывается в
%LOCALAPPDATA%\vibeos\node). Используется для браузерного инструмента и моста WhatsApp. - Устанавливает портативный Git — если
gitуже есть в PATH, установщик использует его; в противном случае загружает урезанный, самодостаточный PortableGit (~45 МБ, из официального релизаgit-for-windows) в%LOCALAPPDATA%\vibeos\git. Без прав администратора, без установщика Windows, без вмешательства в другие программы. - Клонирует репозиторий в
%LOCALAPPDATA%\vibeos\vibeos-agentи создаёт внутри virtualenv. - Многоуровневая
uv pip install— сначала пытается.[all], затем откатывается к постепенно меньшим наборам ([messaging,dashboard,ext]→[messaging]→.), еслиgit+httpsзависимость сбоит из-за лимитов GitHub. Предотвращает ситуацию, когда один сбой приводит к голой установке. - Автоустановка SDK для мессенджеров на основе
.env— если присутствуютTELEGRAM_BOT_TOKEN/DISCORD_BOT_TOKEN/SLACK_BOT_TOKEN/SLACK_APP_TOKEN/WHATSAPP_ENABLED, выполняетpython -m ensurepip --upgradeи целевые вызовыpip install, чтобы SDK каждой платформы были импортируемы. - Устанавливает
VIBEOS_GIT_BASH_PATHна найденныйbash.exe, чтобы VibeOS находил его детерминированно в новых оболочках. - Добавляет
%LOCALAPPDATA%\vibeos\vibeos-agent\venv\Scriptsв User PATH и устанавливаетVIBEOS_HOME=%LOCALAPPDATA%\vibeos— делает командуvibeosдоступной (и указывает на ваш каталог данных) после открытия нового терминала. - Запускает
vibeos setup— обычный мастер первого запуска (модель, провайдер, наборы инструментов). Пропускается с-SkipSetup.
В Windows настройка ключей API для каждого инструмента (Firecrawl, FAL, Browser Use, OpenAI TTS) — самая сложная часть получения полезного агента. Подписка на Nous Portal покрывает модель и все эти инструменты через один OAuth-вход. После завершения установки выполните vibeos setup --portal, чтобы всё настроить.
Матрица возможностей
Всё, кроме встроенной терминальной панели дашборда, работает нативно в Windows.
| Возможность | Нативная Windows | WSL2 |
|---|---|---|
CLI (vibeos chat, vibeos setup, vibeos gateway, …) | ✓ | ✓ |
Интерактивный TUI (vibeos --tui) | ✓ | ✓ |
| Шлюз сообщений (Telegram, Discord, Slack, WhatsApp, 15+ платформ) | ✓ | ✓ |
| Планировщик Cron | ✓ | ✓ |
| Браузерный инструмент (Chromium через Node) | ✓ | ✓ |
| MCP-серверы (stdio и HTTP) | ✓ | ✓ |
| Локальный Ollama / LM Studio / llama-server | ✓ | ✓ (через сеть WSL) |
| Веб-дашборд (сессии, задачи, метрики, конфиг) | ✓ | ✓ |
Встроенная терминальная панель дашборда /chat | ✗ (требуется POSIX PTY) | ✓ |
| Автозапуск при входе в систему | ✓ (schtasks) | ✓ (systemd) |
Вкладка /chat дашборда встраивает настоящий терминал через POSIX PTY (ptyprocess). В нативной Windows нет эквивалентного примитива; Python pywinpty / Windows ConPTY могли бы работать, но это отдельная реализация — рассматривается как будущая работа. Остальная часть дашборда работает нативно — только эта вкладка показывает баннер «используйте WSL2 для этого».
Как VibeOS выполняет shell-команды в Windows
Инструмент терминала VibeOS выполняет команды через Git Bash — та же стратегия, что и у Claude Code. Это обходит разрыв между POSIX и Windows без переписывания каждого инструмента.
Порядок разрешения bash.exe:
- Переменная окружения
VIBEOS_GIT_BASH_PATH, если установлена. %LOCALAPPDATA%\vibeos\git\usr\bin\bash.exe(PortableGit, управляемый установщиком).%LOCALAPPDATA%\vibeos\git\bin\bash.exe(старая структура Git-for-Windows).- Системная установка Git-for-Windows (
%ProgramFiles%\Git\bin\bash.exeи т.д.). - MSYS2, Cygwin или любой
bash.exeв PATH как крайнее средство.
Установщик явно задаёт VIBEOS_GIT_BASH_PATH, чтобы новым сессиям PowerShell не приходилось переоткрывать его. Переопределите эту переменную, если хотите, чтобы VibeOS использовал конкретный bash — например, ваш системный Git Bash или bash из WSL через символическую ссылку.
Проблема: Структура MinGit отличается от полного установщика Git-for-Windows — bash находится в usr\bin\bash.exe, а не в bin\bash.exe. VibeOS проверяет оба пути. Если вы вручную распаковываете zip-архив MinGit, убедитесь, что выбрали вариант не-busybox (MinGit-*-64-bit.zip, а не MinGit-*-busybox*.zip) — сборки busybox поставляют ash вместо bash, и большинство coreutils отсутствуют.
Консоль UTF-8 в Windows
Стандартный stdio Python в Windows использует активную кодовую страницу консоли (обычно cp1252 или cp437). Баннер VibeOS, список slash-команд, лента инструментов, панели Rich и описания навыков содержат Unicode. Без вмешательства любое из этого вызовет ошибку UnicodeEncodeError: 'charmap' codec can't encode character….
Исправление находится в vibeos_cli/stdio.py::configure_windows_stdio(), вызываемом рано во всех точках входа (cli.py::main, vibeos_cli/main.py::main, gateway/run.py::main). Он:
- Переключает кодовую страницу консоли на CP_UTF8 (65001) через
kernel32.SetConsoleCP/SetConsoleOutputCP. - Перенастраивает
sys.stdout/sys.stderr/sys.stdinна UTF-8 сerrors='replace'. - Устанавливает
PYTHONIOENCODING=utf-8иPYTHONUTF8=1(черезsetdefault, так что явные пользовательские значения имеют приоритет), чтобы дочерние процессы Python наследовали UTF-8. - Устанавливает
EDITOR=notepad, если ниEDITOR, ниVISUALне заданы (см. раздел о редакторе ниже).
Идемпотентно. Не работает на не-Windows системах.
Отключение: VIBEOS_DISABLE_WINDOWS_UTF8=1 в окружении возвращает старый путь stdio cp1252. Полезно для диагностики ошибки кодировки; вряд ли это правильная настройка при нормальной работе.
Редактор (Ctrl-X Ctrl-E, /edit)
До #21561 нажатие Ctrl-X Ctrl-E или ввод /edit молча ничего не делали в Windows. У prompt_toolkit есть жёстко заданный список POSIX-абсолютных путей (/usr/bin/nano, /usr/bin/pico, /usr/bin/vi, …), который никогда не разрешается в Windows — даже с полным Git for Windows.
Прокладка stdio VibeOS для Windows теперь устанавливает EDITOR=notepad по умолчанию. Блокнот поставляется с каждой установкой Windows и работает как блокирующий редактор — subprocess.call(["notepad", file]) блокируется до закрытия окна.
Пользовательские переопределения по-прежнему имеют приоритет (они проверяются до setdefault):
| Редактор | Команда PowerShell |
|---|---|
| VS Code | $env:EDITOR = "code --wait" |
| Notepad++ | $env:EDITOR = "'C:\Program Files\Notepad++\notepad++.exe' -multiInst -nosession" |
| Neovim | $env:EDITOR = "nvim" |
| Helix | $env:EDITOR = "hx" |
Флаг --wait в VS Code критически важен — без него редактор возвращается немедленно, и VibeOS получает пустой буфер.
Установите его постоянно в своём профиле PowerShell:
# В $PROFILE
$env:EDITOR = "code --wait"
Или как переменную окружения пользователя в системных настройках, чтобы её подхватывала каждая новая оболочка.
Ctrl+Enter для новой строки в CLI
Windows Terminal передаёт Ctrl+Enter как отдельную последовательность клавиш. VibeOS привязывает к ней «вставку новой строки», чтобы вы могли составлять многострочные запросы в CLI без использования Esc, а затем Enter. Работает в Windows Terminal, встроенном терминале VS Code и любом современном хост-приложении консоли Windows, поддерживающем управляющие последовательности VT.
В устаревших консолях cmd.exe Ctrl+Enter сводится к обычному Enter — используйте Esc Enter или обновитесь до Windows Terminal (он бесплатен и установлен по умолчанию в Windows 11).
Запуск шлюза при входе в Windows
vibeos gateway install в Windows использует запланированные задачи с запасным вариантом в виде папки автозагрузки — права администратора не требуются.
Установка
vibeos gateway install
Что происходит под капотом:
schtasks /Create /SC ONLOGON /RL LIMITED /TN VibeOSGateway— регистрирует задачу, которая запускается при вашем входе в систему со стандартными (не повышенными) правами. Без запроса UAC.- Если schtasks заблокирован групповой политикой, создаёт ярлык
start /min cmd.exe /d /c <обёртка> в%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup`. Тот же эффект, немного грубее. - Запускает шлюз отсоединённо через
pythonw.exe— неpython.exe. Уpythonw.exeнет прикреплённой консоли, что защищает его от широковещательных рассылокCTRL_C_EVENTот родственных процессов (реальная проблема, которая раньше убивала шлюз, когда вы нажимали Ctrl+C в любой программе той же группы процессов).
Флаги, используемые при запуске: DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP | CREATE_NO_WINDOW | CREATE_BREAKAWAY_FROM_JOB.
Управление
vibeos gateway status # Объединённое представление: schtasks + папка автозагрузки + запущенный PID
vibeos gateway start # Запускает запланированную задачу сейчас
vibeos gateway stop # Эквивалент корректного SIGTERM (TerminateProcess через psutil)
vibeos gateway restart
vibeos gateway uninstall # Удаляет запись schtasks, ярлык автозагрузки, файл pid
vibeos gateway status идемпотентен — вызывайте его тысячу раз подряд, и он никогда случайно не убьёт шлюз. (До PR #21561 он молча это делал через os.kill(pid, 0), сталкивающийся с CTRL_C_EVENT на уровне C — см. «внутреннее устройство управления процессами» ниже, если вам интересна история.)
Почему не служба Windows?
Службы требуют прав администратора для установки и привязывают жизненный цикл шлюза к загрузке машины, а не ко входу пользователя. Типичный пользователь VibeOS хочет: войти → шлюз доступен, выйти → шлюз остановлен. Запланированные задачи делают именно это без повышения прав. Если вам действительно нужна служба, используйте nssm или sc create вручную — но, вероятно, это не то, что вам нужно.
Структура данных
| Путь | Содержимое |
|---|---|
%LOCALAPPDATA%\vibeos\vibeos-agent\ | Git-репозиторий + venv. venv\Scripts\vibeos.exe — команда, добавленная в User PATH. Безопасно удалить Remove-Item -Recurse и переустановить. |
%LOCALAPPDATA%\vibeos\git\ | PortableGit (только если установщик его предоставил). |
%LOCALAPPDATA%\vibeos\node\ | Портативный Node.js (только если установщик его предоставил). |
%LOCALAPPDATA%\vibeos\bin\ | Управляемый VibeOS uv.exe (менеджер Python, используемый для обновлений). |
%LOCALAPPDATA%\vibeos\ (корень) | Ваши конфиги, аутентификация, навыки, сессии, логи (config.yaml, .env, skills\, sessions\, logs\, …). Сохраняется при переустановках. |
В нативной Windows установщик задаёт VIBEOS_HOME=%LOCALAPPDATA%\vibeos, поэтому ваши данные и одноразовая установка находятся в одном корне %LOCALAPPDATA%\vibeos: установка/исполнение — это подкаталоги vibeos-agent\, git\, node\ и bin\, а ваши файлы данных находятся непосредственно в %LOCALAPPDATA%\vibeos. Переустановка заменяет только vibeos-agent\, поэтому ваши данные сохраняются — но, поскольку они находятся в одном корне, не выполняйте Remove-Item -Recurse %LOCALAPPDATA%\vibeos, если хотите сохранить данные; вместо этого удалите подкаталог vibeos-agent\. Структура вашего каталога данных идентична Linux ~/.vibeos, так что вы можете синхронизировать его между машинами.
Переопределение VIBEOS_HOME: установите переменную окружения, указывающую на другой каталог данных (например, %USERPROFILE%\.vibeos для соответствия структуре Linux/WSL). Работает так же, как в Linux.
Браузерный инструмент
Браузерный инструмент использует agent-browser (Node-помощник) для управления Chromium. В Windows:
- Установщик помещает
agent-browserв PATH через npm. shutil.which("agent-browser", path=...)автоматически подхватывает обёртку.cmd—CreateProcessWне может выполнить shebang-скрипт без расширения, поэтому VibeOS всегда разрешает через обёртку.CMD. Не вызывайте shebang-скрипт вручную; всегда используйте.cmd.- Playwright Chromium автоматически устанавливается при первом запуске (
npx playwright install chromium). Если установка не удалась,vibeos doctorсообщит об этом с подсказкой по исправлению.
Практические заметки по запуску VibeOS в Windows
PATH после установки
Установщик добавляет %LOCALAPPDATA%\vibeos\vibeos-agent\venv\Scripts в ваш User PATH через [Environment]::SetEnvironmentVariable. Существующие терминалы этого не подхватывают — откройте новое окно PowerShell (или вкладку Windows Terminal) после установки. Закройте и откройте заново, не добавляйте $env:PATH += … вручную, если не уверены в своих действиях.
Проверка:
Get-Command vibeos # должно вывести C:\Users\<вы>\AppData\Local\vibeos\vibeos-agent\venv\Scripts\vibeos.exe
vibeos --version
Переменные окружения
VibeOS поддерживает как $env:X (область процесса), так и переменные окружения пользователя (постоянные, задаются в System Properties → Environment Variables). Установка ключей API в %LOCALAPPDATA%\vibeos\.env (ваш VIBEOS_HOME) — обычный путь, как в Linux:
OPENROUTER_API_KEY=sk-or-...
TELEGRAM_BOT_TOKEN=...
Не помещайте секреты в переменные окружения пользователя, если вы специально не хотите, чтобы их видели все процессы Windows (вам это не нужно).
Специфичные для Windows переменные окружения
Эти переменные влияют только на нативные установки Windows:
| Переменная | Эффект |
|---|---|
VIBEOS_GIT_BASH_PATH | Переопределяет поиск bash.exe. Укажите на любой bash — полный Git-for-Windows, bash из WSL через символическую ссылку, MSYS2, Cygwin. Установщик задаёт это автоматически. |
VIBEOS_DISABLE_WINDOWS_UTF8 | Установите в 1, чтобы отключить прослойку UTF-8 stdio и вернуться к кодовой странице локали. Полезно для диагностики ошибки кодировки. |
EDITOR / VISUAL | Ваш редактор для /edit и Ctrl-X Ctrl-E. VibeOS по умолчанию использует notepad, если обе переменные не заданы. |
Удаление
Из PowerShell:
vibeos uninstall
Это чистый путь — удаляет запись schtasks, ярлык из папки автозагрузки, обёртку vibeos.cmd, удаляет %LOCALAPPDATA%\vibeos\vibeos-agent\ и очищает User PATH. Остальная часть %LOCALAPPDATA%\vibeos\ (ваши конфиги, аутентификация, навыки, сессии, логи) остаётся нетронутой на случай переустановки.
Чтобы удалить всё полностью:
vibeos uninstall
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\vibeos"
# Также удалите устаревший каталог данных CLI/WSL, если вы когда-либо его использовали:
Remove-Item -Recurse -Force "$env:USERPROFILE\.vibeos"
Подкоманда CLI vibeos uninstall также обрабатывает случай, когда запись schtasks была зарегистрирована под другим именем задачи (старые установки) — она ищет по пути установки, а не по жёстко заданному имени задачи.
Внутреннее устройство управления процессами
Это справочный материал — пропустите, если не отлаживаете странность «само себя убивает».
В Linux и macOS идиома POSIX os.kill(pid, 0) — это проверка разрешений без побочных эффектов: «жив ли этот PID и могу ли я послать ему сигнал?» В Windows Python os.kill отображает sig=0 на CTRL_C_EVENT — они совпадают по целочисленному значению 0 — и направляет его через GenerateConsoleCtrlEvent(0, pid), который рассылает Ctrl+C всей группе процессов консоли, содержащей целевой PID. Это bpo-14484, открыт с 2012 года. Он не будет исправлен, потому что изменение сломает скрипты, зависящие от текущего поведения.
Следствие: любой код, который «проверял, жив ли этот PID» через os.kill(pid, 0) в Windows, молча убивал цель. VibeOS перенёс все такие места (14 в 11 файлах) на gateway.status._pid_exists(), который использует psutil.pid_exists() (который, в свою очередь, использует OpenProcess + GetExitCodeProcess в Windows — без сигналов). Если вы пишете плагин или патч, используйте psutil.pid_exists() напрямую или gateway.status._pid_exists() — никогда не используйте os.kill(pid, 0).
scripts/check-windows-footguns.py обеспечивает это в CI: любой новый вызов os.kill(pid, 0) приводит к провалу проверки «Windows footguns (blocking)», если строка не содержит маркер # windows-footgun: ok — <причина>`.
Частые проблемы
vibeos: command not found сразу после установки.
Откройте новое окно PowerShell. Установщик добавил %LOCALAPPDATA%\vibeos\bin в User PATH, но существующим оболочкам нужно перезапуститься, чтобы подхватить его. Тем временем вы можете выполнить & "$env:LOCALAPPDATA\vibeos\bin\vibeos.cmd".
WinError 193: %1 is not a valid Win32 application при запуске инструмента.
Вы наткнулись на вызов shebang-скрипта, который обошёл обёртку .cmd. VibeOS разрешает команды через shutil.which(cmd, path=local_bin), чтобы PATHEXT подхватывал .CMD — если вы вызываете инструмент через жёстко заданный путь, переключитесь на вариант .cmd (например, npx.cmd, а не npx).
[scriptblock]::Create(...) завершается ошибкой The assignment expression is not valid.
Ваша загрузка install.ps1 подхватила BOM UTF-8. Форма irm | iex автоматически удаляет BOM; [scriptblock]::Create((irm ...)) — нет. Повторите с простой формой irm | iex или загрузите скрипт вручную и сохраните без BOM через [IO.File]::WriteAllText($path, $text, (New-Object Text.UTF8Encoding $false)).
Шлюз не остаётся запущенным после перезагрузки.
Проверьте vibeos gateway status — он объединяет запись schtasks, ярлык в папке автозагрузки (если используется) и живой PID. Если schtasks зарегистрирована, но не запускается, групповая политика может блокировать триггеры ONLOGON. Выполните schtasks /Query /TN VibeOSGateway /V /FO LIST, чтобы увидеть причину сбоя задачи, или вернитесь к пути через папку автозагрузки, удалив и переустановив с VIBEOS_GATEWAY_FORCE_STARTUP=1.
/edit по-прежнему ничего не делает после установки $env:EDITOR.
Вы установили его только в текущем процессе; закройте и снова откройте оболочку или установите на уровне пользователя в System Properties → Environment Variables. Проверьте с помощью echo $env:EDITOR в новом окне PowerShell.
Браузерный инструмент запускается, но инструменты выходят по тайм-ауту.
Chromium автоматически устанавливается при первом запуске. Если установка не удалась (лимиты GitHub, сбой CDN Playwright), выполните vibeos doctor — он сообщит об отсутствующем Chromium и выведет точную команду npx playwright install chromium для исправления.
agent-browser завершается ошибкой со странной ошибкой версии Node.
Установщик предоставляет Node 22 в %LOCALAPPDATA%\vibeos\node, но ваш PATH может содержать более старую системную Node 18. Либо переместите каталог node от VibeOS раньше в PATH, либо удалите системную установку, если вы не используете Node в других целях.
Китайские / японские / арабские символы отображаются как ? в CLI.
Прослойка UTF-8 stdio не активировалась. Проверьте, что VIBEOS_DISABLE_WINDOWS_UTF8 НЕ установлен (Get-ChildItem env:VIBEOS_DISABLE_WINDOWS_UTF8). Если он пуст, а вы всё ещё видите ?, хост консоли (очень старый cmd.exe) может вообще не поддерживать UTF-8 — переключитесь на Windows Terminal.
Шлюз не может отправить фотографии Telegram — «BadRequest: payload contains invalid characters».
Это не связано с Windows, но иногда проявляется в первую очередь здесь. Обычно это означает, что ваш путь к файлу содержит неэкранированные обратные слеши в теле JSON. Telegram должен получать пути, нормализованные VibeOS, а не сырые пути Windows — если вы видите это внутри собственного плагина, убедитесь, что передаёте путь, предоставленный VibeOS, а не str(Path(...)) из пользовательского ввода.
Странности с кодировкой «на другой машине работает» после git pull.
Если вы редактировали конфиг VibeOS или навык в Windows с помощью редактора, не поддерживающего UTF-8 (Блокнот в старых версиях Windows, некоторые китайские IME), файл мог быть сохранён с BOM. VibeOS терпит utf-8-sig при большинстве чтений конфигов, но BOM внутри свёрнутого YAML-скаляра (description: >) молча ломает парсинг YAML. Пересохраните файл как обычный UTF-8 без BOM.
Куда двигаться дальше
- Установка — полная страница установки, включая Linux/macOS/WSL2/Termux.
- Windows (WSL2) — руководство — если вам нужна семантика POSIX или терминальная панель дашборда.
- Справочник по CLI — все подкоманды
vibeos. - Часто задаваемые вопросы — общие вопросы, не связанные с Windows.
- Шлюз сообщений — запуск Telegram/Discord/Slack в Windows.