CLI
CLI VibeOS — полноценный терминальный UI, не веб. Многострочное редактирование, автодополнение slash-команд, история диалога, прерывание, перенаправления и стриминг. Для тех, кто живёт в терминале.
Одна команда — vibeos setup --portal — и можно в vibeos chat. См. Nous Portal.
Есть и более новый TUI: модальные окна, выделение мышью, non-blocking ввод. Запуск: vibeos --tui — см. TUI.
Запуск CLI
# Start an interactive session (default)
vibeos
# Single query mode (non-interactive)
vibeos chat -q "Hello"
# With a specific model
vibeos chat --model "anthropic/claude-sonnet-4"
# With a specific provider
vibeos chat --provider nous # Use Nous Portal
vibeos chat --provider openrouter # Force OpenRouter
# With specific toolsets
vibeos chat --toolsets "web,terminal,skills"
# Start with one or more skills preloaded
vibeos -s vibeos-agent-dev,github-auth
vibeos chat -s github-pr-workflow -q "open a draft PR"
# Resume previous sessions
vibeos --continue # Resume the most recent CLI session (-c)
vibeos --resume <session_id> # Resume a specific session by ID (-r)
# Verbose mode (debug output)
vibeos chat --verbose
# Isolated git worktree (for running multiple agents in parallel)
vibeos -w # Interactive mode in worktree
vibeos -w -z "Fix issue #123" # Single query in worktree
Макет интерфейса
Баннер VibeOS CLI, поток разговора и фиксированное приглашение ввода отображаются как стабильный документ, а не хрупкий текстовый рисунок.
Приветственный баннер сразу показывает вашу модель, серверную часть терминала, рабочий каталог, доступные инструменты и установленные навыки.
Строка состояния
Постоянная строка состояния находится над областью ввода и обновляется в реальном времени:
⚕ claude-sonnet-4-20250514 │ 12.4K/200K │ [██████░░░░] 6% │ $0.06 │ 15m
| Элемент | Описание |
|---|---|
| Название модели | Текущая модель (усекается, если длина превышает 26 символов) |
| Количество токенов | Используемые токены контекста / максимальное окно контекста |
| Контекстная панель | Визуальный индикатор заполнения с цветовыми порогами |
| Стоимость | Оценка стоимости сессии (или n/a для неизвестных / zero-price моделей) |
| 🗜️ N | Счётчик сжатия контекста — сколько раз текущая сессия уже сжималась. Появляется после первого сжатия. |
| ▶ N | Фоновые задачи — сколько /background ещё крутится в этой сессии. Видно, пока есть хотя бы одна. |
| Длительность | Время с начала сессии |
| ⚠ YOLO | Предупреждение YOLO — когда включён VIBEOS_YOLO_MODE (vibeos --yolo при старте или /yolo в сессии). Дублирует баннер, чтобы не забыть про auto-approve. |
Полоса адаптируется к ширине терминала — полный макет при ≥ 76 столбцах, компактный при 52–75, минимальный (модель + длительность плюс значок YOLO, когда он активен) ниже 52.
Цветовое кодирование контекста:
| Цвет | Порог | Значение |
|---|---|---|
| Зеленый | < 50% | Много места |
| Желтый | 50–80% | Наполняюсь |
| Оранжевый | 80–95% | Приближаемся к пределу |
| Красный | ≥ 95% | Вблизи переполнения — рассмотрим /compress |
Используйте /usage для подробной разбивки, включая затраты по категориям (входные и выходные токены).
Отображение возобновления сеанса
При возобновлении предыдущего сеанса (vibeos -c или vibeos --resume <id>`) между баннером и приглашением ввода появляется панель «Предыдущий разговор», на которой отображается компактный обзор истории разговора. Подробные сведения и настройки см. в разделе Сессии — повторение беседы при возобновлении.
Сочетания клавиш
| Ключ | Действие |
|---|---|
Enter | Отправить сообщение |
Alt+Enter, Ctrl+J или Shift+Enter | Новая строка (многострочный ввод). Для Shift+Enter требуется терминал, отличающий его от Enter — см. ниже. В терминале Windows Alt+Enter захватывается терминалом (переключение полноэкранного режима); вместо этого используйте Ctrl+Enter или Ctrl+J. |
Alt+V | Вставка изображения из буфера обмена, если это поддерживается терминалом |
Ctrl+V | Вставьте текст и прикрепите изображения из буфера обмена |
Ctrl+B | Запуск/остановка записи голоса при включенном голосовом режиме (voice.record_key, по умолчанию: ctrl+b) |
Ctrl+G | Откройте текущий входной буфер в $EDITOR (vim/nvim/nano/VS Code/и т. д.). Сохраните и выйдите, чтобы отправить отредактированный текст в качестве следующего приглашения — идеальное решение для длинных подсказок, состоящих из нескольких абзацев. |
Ctrl+X Ctrl+E | Альтернативная привязка в стиле Emacs для внешнего редактора (то же поведение, что и Ctrl+G). |
Ctrl+C | Агент прерывания (дважды нажмите в течение 2 секунд, чтобы принудительно выйти) |
Ctrl+D | Выход |
Ctrl+Z | Переведите VibeOS в фоновый режим (только для Unix). Запустите fg в оболочке, чтобы возобновить работу. |
Tab | Принять ghost-text или автодополнение slash-команды |
Предварительный просмотр многострочной вставки. При вставке многострочного блока интерфейс командной строки отображает компактный однострочный предварительный просмотр ([pasted: 47 lines, 1,842 chars — press Enter to send]) вместо того, чтобы выгружать всю полезную нагрузку в обратную прокрутку. Полный контент по-прежнему отправляется; это просто полировка дисплея.
Стрип markdown в финальных ответах. CLI снимает самые шумные markdown-обёртки и оболочки **bold** / *italic* из финальных ответов агента, чтобы в терминале был читаемый текст, а не сырой markdown. Блоки кода и списки сохраняются. На платформы шлюза и вывод инструментов это не влияет — там markdown остаётся для нативного рендера.
Slash Commands
Введите /, чтобы увидеть раскрывающийся список автозаполнения. VibeOS поддерживает большой набор косых команд CLI, динамических команд навыков и определяемых пользователем быстрых команд.
Распространенные примеры:
| Команда | Описание |
|---|---|
/help | Показать справку по команде |
/model | Показать или изменить текущую модель |
/tools | Список доступных на данный момент инструментов |
/skills browse | Просмотрите центр навыков и официальные дополнительные навыки |
/background <prompt>` | Запуск запроса в отдельном фоновом сеансе |
/skin | Показать или переключить активный скин CLI |
/voice on | Включить голосовой режим CLI (нажмите Ctrl+B для записи) |
/voice tts | Включить голосовое воспроизведение ответов VibeOS |
/reasoning high | Увеличьте усилие рассуждения |
/title My Session | Назовите текущий сеанс |
/status | Показать информацию о сеансе — модель/профиль/токены/продолжительность — с последующим локальным блоком Резюме сеанса (количество последних ходов, наиболее часто используемые инструменты, затронутые файлы, последнее приглашение пользователя + ответ помощника). Чисто локальные вычисления; нет звонка в LLM. |
/sessions | Откройте интерактивный инструмент выбора сеанса прямо в классическом интерфейсе командной строки (та же поверхность, которую использует TUI). Введите для фильтрации, клавиши со стрелками для навигации, Enter для возобновления. |
Полный список встроенных команд командной строки и списков сообщений см. в Справочнике по slash-командам.
Информацию о настройке, провайдерах, настройке тишины и обмене сообщениями/использовании голоса Discord см. в разделе Голосовой режим.
Команды нечувствительны к регистру — /HELP работает так же, как /help. Установленные навыки также автоматически становятся косыми командами.
Быстрые команды
Вы можете определить собственные команды, которые мгновенно запускают команды оболочки, не вызывая LLM. Они работают как в CLI, так и на платформах обмена сообщениями (Telegram, Discord и т. д.).
# ~/.vibeos/config.yaml
quick_commands:
status:
type: exec
command: systemctl status vibeos-agent
gpu:
type: exec
command: nvidia-smi --query-gpu=utilization.gpu,memory.used --format=csv,noheader
restart:
type: alias
target: /gateway restart
Затем введите /status, /gpu или /restart в любом чате. Дополнительные примеры см. в Руководстве по настройке.
Предварительная загрузка навыков при запуске
Если вы уже знаете, какие навыки вы хотите активировать в сеансе, передайте их во время запуска:
vibeos -s vibeos-agent-dev,github-auth
vibeos chat -s github-pr-workflow -s github-auth
VibeOS загружает каждый названный навык в приглашение сеанса перед первым ходом. Тот же флаг работает в интерактивном режиме и режиме одного запроса.
Команды навыка Slash
Каждый установленный навык в ~/.vibeos/skills/ автоматически регистрируется как slash-команда. Имя навыка становится командой:
/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor
# Just the skill name loads it and lets the agent ask what you need:
/excalidraw
Личности
Установите предопределенную личность, чтобы изменить тон агента:
/personality pirate
/personality kawaii
/personality concise
К встроенным личностям относятся: helpful, concise, technical, creative, teacher, kawaii, catgirl, pirate, shakespeare, surfer, noir, uwu, philosopher, hype.
Вы также можете определить индивидуальные особенности в ~/.vibeos/config.yaml:
personalities:
helpful: "You are a helpful, friendly AI assistant."
kawaii: "You are a kawaii assistant! Use cute expressions..."
pirate: "Arrr! Ye be talkin' to Captain VibeOS..."
# Add your own!
Многострочный ввод
Существует два способа ввода многострочных сообщений:
Alt+Enter,Ctrl+JилиShift+Enter— вставляет новую строку.- Продолжение обратной косой черты — для продолжения завершите строку
\:
❯ Write a function that:\
1. Takes a list of numbers\
2. Returns the sum
Поддерживается вставка многострочного текста — используйте любую из клавиш новой строки, указанных выше, или просто вставьте содержимое напрямую.
Shift+Enter совместимость
Большинство терминалов по умолчанию отправляют одну и ту же последовательность байтов для Enter и Shift+Enter, поэтому приложения не могут их различить. VibeOS распознает Shift+Enter только тогда, когда терминал отправляет отдельную последовательность через [протокол клавиатуры Kitty] (https://sw.kovidgoyal.net/kitty/keyboard-protocol/) или режим modifyOtherKeys в xterm.
| Терминал | Статус |
|---|---|
| Китти, нога, WezTerm, Ghostty | Отдельные Shift+Enter включены по умолчанию |
| iTerm2 (недавний), Alacritty, терминал VS Code, Warp | Поддерживается после включения протокола Kitty в настройках |
| Предварительная версия терминала Windows 1.25+ | Поддерживается после включения протокола Kitty в настройках |
| macOS Terminal.app, стандартный терминал Windows (стабильная версия) | Не поддерживается — Shift+Enter неотличим от Enter |
Если терминал не может их различить, Alt+Enter и Ctrl+J продолжают работать везде. В частности, в Windows Terminal Alt+Enter захватывается терминалом (переключает полноэкранный режим) и никогда не достигает VibeOS — используйте Ctrl+Enter (доставляется как Ctrl+J) или Ctrl+J непосредственно для новой строки.
Прерывание агента
Вы можете прервать агента в любой момент:
- Type a new message + Enter while the agent is working — it interrupts and processes your new instructions
Ctrl+C— прервать текущую операцию (нажмите дважды в течение 2 с для принудительного выхода)- Выполняемые команды терминала немедленно уничтожаются (SIGTERM, затем SIGKILL через 1 с)
- Несколько сообщений, введенных во время прерывания, объединяются в одно приглашение.
Режим входа «Занято»
Ключ конфигурации display.busy_input_mode управляет тем, что происходит, когда вы нажимаете Enter во время работы агента:
| Режим | Поведение |
|---|---|
"interrupt" (по умолчанию) | Ваше сообщение прерывает текущую операцию и немедленно обрабатывается |
"queue" | Ваше сообщение автоматически ставится в очередь и отправляется на следующем этапе после завершения работы агента |
"steer" | Ваше сообщение вводится в текущий запуск через /steer и поступает к агенту после следующего вызова инструмента — ни прерывания, ни нового хода |
# ~/.vibeos/config.yaml
display:
busy_input_mode: "steer" # or "queue" or "interrupt" (default)
Режим "queue" полезен, когда вы хотите подготовить последующие сообщения без случайной отмены работы в полете. Режим "steer" полезен, когда вы хотите перенаправить агента в середине задачи, не прерывая его — например. «Вообще-то, еще проверь тесты», пока он еще редактирует код. Неизвестные значения возвращаются к "interrupt".
"steer" имеет два автоматических варианта возврата: если агент еще не запущен или если изображения прикреплены, сообщение возвращается к поведению "queue", поэтому ничего не потеряно.
Вы также можете изменить его внутри CLI:
/busy queue
/busy steer
/busy interrupt
/busy status
При первом нажатии Enter во время работы VibeOS VibeOS печатает однострочное напоминание с описанием ручки /busy ("(tip) Your message interrupted the current run…"). Он срабатывает только один раз за установку — его фиксирует флаг в config.yaml под onboarding.seen.busy_input_prompt. Удалите этот ключ, чтобы снова увидеть подсказку.
Приостановка работы в фоновом режиме
В системах Unix нажмите Ctrl+Z, чтобы перевести VibeOS в фоновый режим — как и любой терминальный процесс. Оболочка печатает подтверждение:
VibeOS has been suspended. Run `fg` to bring VibeOS back.
Введите fg в своей оболочке, чтобы возобновить сеанс с того места, на котором вы остановились. Это не поддерживается в Windows.
Отображение хода работы инструмента
Интерфейс командной строки отображает анимированную обратную связь во время работы агента:
Анимация мышления (во время вызовов API):
◜ (。•́︿•̀。) pondering... (1.2s)
◠ (⊙_⊙) contemplating... (2.4s)
✧٩(ˊᗜˋ*)و✧ got it! (3.1s)
Канал выполнения инструмента:
┊ 💻 terminal `ls -la` (0.3s)
┊ 🔍 web_search (1.2s)
┊ 📄 web_extract (2.1s)
Переключайте режимы отображения с помощью /verbose: off → new → all → verbose. Эту команду также можно включить для платформ обмена сообщениями — см. configuration.
Длина предварительного просмотра инструмента
Ключ конфигурации display.tool_preview_length управляет максимальным количеством символов, отображаемых в строках предварительного просмотра вызова инструмента (например, пути к файлам, команды терминала). По умолчанию используется 0, что означает отсутствие ограничений — отображаются полные пути и команды.
# ~/.vibeos/config.yaml
display:
tool_preview_length: 80 # Truncate tool previews to 80 chars (0 = no limit)
Это полезно на узких терминалах или когда аргументы инструмента содержат очень длинные пути к файлам.
Управление сеансами
Возобновление сеансов
При выходе из сеанса CLI печатается команда возобновления:
Resume this session with:
vibeos --resume 20260225_143052_a1b2c3
Session: 20260225_143052_a1b2c3
Duration: 12m 34s
Messages: 28 (5 user, 18 tool calls)
Варианты резюме:
vibeos --continue # Resume the most recent CLI session
vibeos -c # Short form
vibeos -c "my project" # Resume a named session (latest in lineage)
vibeos --resume 20260225_143052_a1b2c3 # Resume a specific session by ID
vibeos --resume "refactoring auth" # Resume by title
vibeos -r 20260225_143052_a1b2c3 # Short form
Возобновление восстанавливает полную историю разговоров из SQLite. Агент видит все предыдущие сообщения, вызовы инструментов и ответы — так, как будто вы никогда не уходили.
Используйте /title My Session Name внутри чата, чтобы назвать текущий сеанс, или vibeos sessions rename <id> <title> в командной строке. Используйте vibeos sessions list` для просмотра прошлых сеансов.
Хранилище сеансов
Сеансы CLI хранятся в базе данных состояний SQLite VibeOS в разделе ~/.vibeos/state.db. В базе данных хранятся:
- метаданные сеанса (идентификатор, заголовок, временные метки, счетчики токенов)
- история сообщений
- происхождение по сжатым/возобновленным сеансам
- индексы полнотекстового поиска, используемые
session_search
Некоторые адаптеры обмена сообщениями также хранят файлы расшифровок для каждой платформы вместе с базой данных, но сам CLI возобновляет работу из хранилища сеансов SQLite.
Сжатие контекста
Длинные разговоры автоматически суммируются при приближении к ограничениям контекста:
# In ~/.vibeos/config.yaml
compression:
enabled: true
threshold: 0.50 # Compress at 50% of context limit by default
# Summarization model configured under auxiliary:
auxiliary:
compression:
model: "" # Leave empty to use the main chat model (default). Or pin a cheap fast model, e.g. "google/gemini-3-flash-preview".
При срабатывании сжатия средние витки суммируются, а первые 3 и последние 20 витков всегда сохраняются.
Фоновые сеансы
Запустите приглашение в отдельном фоновом сеансе, продолжая использовать CLI для другой работы:
/background Analyze the logs in /var/log and summarize any errors from today
VibeOS немедленно подтвердит задачу и выдаст вам подсказку:
🔄 Background task #1 started: "Analyze the logs in /var/log and summarize..."
Task ID: bg_143022_a1b2c3
Как это работает
Каждое приглашение /background порождает совершенно отдельный сеанс агента в потоке демона:
- Изолированный разговор — фоновый агент не имеет сведений об истории вашего текущего сеанса. Он получает только указанное вами приглашение.
- Та же конфигурация — фоновый агент наследует вашу модель, поставщика, наборы инструментов, настройки рассуждений и резервную модель из текущего сеанса.
- Неблокируемый — ваш сеанс на переднем плане остается полностью интерактивным. Вы можете общаться, запускать команды или даже запускать дополнительные фоновые задачи.
- Несколько задач — вы можете запускать несколько фоновых задач одновременно. Каждый получает номерной идентификатор.
Результаты
Когда фоновая задача завершается, результат отображается в виде панели вашего терминала:
╭─ ✦ VibeOS (background #1) ─╮
│ Found 3 errors in syslog from today: │
│ 1. OOM killer invoked at 03:22 — killed process nginx │
│ 2. Disk I/O error on /dev/sda1 at 07:15 │
│ 3. Failed SSH login attempts from 192.168.1.50 at 14:30 │
╰──────────────────────────────────────────────────────────────╯
Если задача не выполнена, вместо этого вы увидите уведомление об ошибке. Если в вашей конфигурации включен display.bell_on_complete, по завершении задачи раздастся звуковой сигнал терминала.
Варианты использования
- Длительные исследования — «/background исследовать последние разработки в области квантовой коррекции ошибок», пока вы работаете над кодом.
- Обработка файлов — «/background проанализируйте все файлы Python в этом репозитории и перечислите все проблемы безопасности», пока вы продолжаете разговор.
- Параллельные расследования — запускайте несколько фоновых задач, чтобы исследовать разные стороны одновременно.
Фоновые сеансы не отображаются в основной истории разговоров. Это автономные сеансы со своим собственным идентификатором задачи (например, bg_143022_a1b2c3).
Тихий режим
По умолчанию интерфейс командной строки работает в тихом режиме, который:
- Подавляет подробное ведение журнала из инструментов.
- Включает анимированную обратную связь в стиле каваи.
- Сохраняет вывод чистым и удобным для пользователя
Для вывода отладки:
vibeos chat --verbose