CLI Commands
У OpenCrabs полноценный CLI с 20+ субкомандами для управления каждым аспектом агента.
Использование
opencrabs [COMMAND] [OPTIONS]
Команды
| Команда | Описание |
|---|---|
chat (по умолчанию) | Запускает интерфейс чата TUI |
daemon | Работа в фоне (только channels, без TUI) |
agent | Интерактивный многоходовой чат или режим одного сообщения |
run | Выполняет один prompt неинтерактивно; --quiet убирает chrome UI для чистого машинного stdout, --format выбирает text/json/markdown (v0.5.4) |
cron | Управление запланированными задачами (add/list/remove/enable/disable/test) |
channel | Управление channels (list, doctor) |
memory | Управление памятью (list, get, stats, prune) |
session | Управление sessions (list, get) |
db | Управление базой данных (init, stats, clear) |
logs | Управление логами (status, view, clean, open) |
service | Управление системным сервисом (install/start/stop/restart/status/uninstall) |
status | Показать статус агента |
doctor | Проверка здоровья подключений; --fix чинит застрявшие строки cron, устаревшие маркеры и права (v0.3.83) |
onboard | Запуск мастера настройки |
completions | Генерация автодополнения для shell (bash/zsh/fish/powershell) |
version | Показать информацию о версии |
!command | Bang-оператор: мгновенно выполняет любую команду shell без обращения к LLM. Вывод показывается системным сообщением. Например: !git status, !ls -la |
/evolve | Автообновление: скачивает последний релиз и перезапускается на лету. Запускается автоматически при старте, если [agent] auto_update = true |
/restart | Перезапуск (v0.3.79): заново запускает тот же бинарник с теми же аргументами, так что знать или повторять способ запуска не нужно. Незавершённые ходы возобновляются автоматически при старте. В TUI возобновляется текущая session. В channels только для owner; с объявлением перед действием. |
/exit | Выключение (v0.3.79): останавливает OpenCrabs. Чтобы запустить снова, нужен доступ к машине, где он работает, поэтому это единственная команда, из которой нет пути назад через чат. В channels только для owner; с объявлением перед действием. |
/clear | Свежая session (v0.5.2): Закрывает текущую session и запускает на её месте пустую, без вызова summariser, поэтому это мгновенно. В channels только для owner. |
/btw | Параллельный агент: запускает изолированного суб-агента для побочной задачи, пока основной разговор продолжается. Например: /btw research the latest Rust async patterns |
/mission-control | Mission Control: полноэкранная панель: входящие RSI (ожидающие предложения), журнал активности (применённые улучшения) и расписание cron. Навигация vim-клавишами, применение/отклонение предложений клавишами a/r. |
/skills | Выбор skills: просмотр и запуск шаблонов рабочих процессов с нечётким поиском. Каждый загруженный skill автоматически регистрируется как slash-команда. |
/security-audit | Аудит безопасности: всеобъемлющий аудита безопасности и CVE вне зависимости от языка. Определяет тип проекта, запускает нужный сканер, просматривает свежий диф на паттерны инъекций/авторизации/криптографии, ставит оценку 0-100. |
/cost-estimate | Оценка стоимости: оценка стоимости разработки кодовой базы, разбивка ROI с учётом ИИ и справедливая рыночная оценка. Спрашивает бизнес-контекст, прежде чем дать диапазон оценки. |
/repo-audit | Аудит репозитория: проверки здоровья репозитория вне зависимости от языка. Конвейер из 5 фаз: определение языка → запуск нативных инструментов → метрики git → AST-анализ → оценка + рекомендации. Покрывает Rust, JS/TS, Python, Go. |
/goal | Автономный цикл цели: поставьте цель через /goal <текст>, и агент крутится автономно: исполняет, сам оценивает себя LLM-судьёй и продолжает, пока цель не достигнута или не исчерпан бюджет ходов (по умолчанию 20). Поддерживает /goal pause, /goal resume, /goal status, /goal clear. |
/models <provider/model> | Прямое переключение модели (v0.3.66): переключайтесь сразу на конкретную модель в любом channel. Введите /models anthropic/claude-sonnet-4-20250514 для мгновенного переключения. Селектор области применения позволяет выбрать только текущую session или глобально. |
opencrabs session set-model | Переключение модели без интерфейса (v0.3.66): переключайте модели из CLI без TUI. Полезно для скриптов и автоматизации. |
Флаги конфигурации
| Flag | По умолчанию | Описание |
|---|---|---|
[agent] auto_update | true | Автоустановка новых релизов при старте с перезапуском на лету. Поставьте false, чтобы оставить ручной диалог с вопросом. |
[agent] force_default | false | (v0.3.66) Если true, проталкивает пару провайдер/модель по умолчанию во все sessions при перезагрузке конфигурации. ��олезно для принудительного глобального переключения модели. |
[agent] config_drift_warnings | true | (v0.3.66) Предупреждения при старте, когда значение конфигурации молча расходится с ожидаемым дефолтом. Помогает ловить непреднамеренные изменения конфигурации. |
Горячие клавиши (TUI)
| Shortcut | Действие |
|---|---|
F12 | Включить/выключить захват мыши для нативного выделения текста в терминале |
Предложение обновления при старте
Когда доступна новая версия, по центру экрана заставки появляется диалог с предложением принять (Enter) или пропустить (Esc). Принятие автоматически запускает /evolve. После обновления бинарник перезапускается, и заставка показывает новую версию.
Команды channels
/doctor, /help, /usage, /evolve, /restart, /exit и системные команды работают напрямую в Telegram, Discord, Slack и WhatsApp, минуя LLM. Они исполняются мгновенно и возвращают результат в channel.
/restart и /exit объявляют о себе перед действием: когда процесс уже убит, докладывать об ошибке некому. Обе команды только для owner, как и любая другая, меняющая работающий процесс. /exit: единственная команда, из которой нет пути назад через чат: для восстановления нужен доступ к машине, где работает OpenCrabs.
С v0.3.80 остановка своими словами тоже работает: просьба остановиться естественным языком действует в channels и в TUI, а не только голое слово «stop».
Вся логика команд channels централизована в src/channels/commands.rs (847 строк): общий обработчик, убирающий дублирование логики команд между 5 реализациями channels. Каждый channel делегирует к try_execute_text_command() для единообразного поведения.
/evolve в channels теперь выполняется напрямую (скачивает и устанавливает бинарник), без обращения к LLM. Раньше шло через агента.
Режим чата
# Default: launch TUI
opencrabs
# Same as above
opencrabs chat
Режим агента
Неинтерактивный режим для скриптов и автоматизации:
# Interactive multi-turn chat
opencrabs agent
# Single-message mode
opencrabs agent -m "Какие файлы менялись сегодня?"
Режим демона против TUI
OpenCrabs работает в одном из двух режимов. Выберите подходящий машине. Для одного профиля запускайте только что-то одно.
| Режим | Как запускать | Что это | Где использовать |
|---|---|---|---|
| TUI (интерактивный) | opencrabs | Полный терминальный интерфейс: панели чата, sessions, настройки. Ваши channels тоже работают и делят вашу session. | Машина, за которой вы сидите (ноутбук/десктоп) |
| Демон (headless) | opencrabs daemon, or install as a service: opencrabs service install && opencrabs service start | Без интерфейса. Только channels (Telegram, Discord, Slack, WhatsApp) + cron. Переживает перезагрузки, обрывы SSH и падения. | Всегда включённая машина или VPS |
Почему не оба сразу?
Кред бота (например, токен Telegram) может держать только один живой опрос getUpdates. Если демон и TUI одновременно владеют токеном одного профиля, он�� дерутся (HTTP 409), и channel отваливается.
TUI всегда побеждает
Когда вы открываете TUI, пока для того же профиля работает демон, TUI сначала выключает демона, забирает channels и показывает об этом баннер. Ваши channels уже настроены, поэтому они просто возобновляются без переподключения. Демон остаётся выключенным, пока вы не запустите его снова (opencrabs service start или повторный opencrabs daemon).
На машине, где обычно работает демон, повседневный поток такой: открывайте opencrabs, когда хотите поработать с агентом; закрывайте TUI и делайте opencrabs service start, когда снова нужен headless-режим.
Автозапуск при загрузке
- Демон: используйте установщик сервиса (
opencrabs service install); он настраивает systemd (Linux) / launchd (macOS) на старт при загрузке и перезапуск при падении. Это рекомендуемая схема для постоянной работы. - TUI: чтобы терминальный интерфейс открывался автоматически при входе, используйте автозапуск терминала/десктопа, а не установщик сервиса:
- Linux-десктоп: положите файл
.desktopв~/.config/autostart/сExec=x-terminal-emulator -e opencrabs. - macOS: Системные настройки > Основные > Объекты входа > добавьте скрипт
.command, запускающийopencrabs. - VPS по SSH: запускайте внутри
tmux/screenи переподключайтесь. На headless-VPS вам обычно нужен демон, а не TUI.
- Linux-десктоп: положите файл
Настоятельно рекомендуется ежедневным пользователям. Если планируете пользоваться OpenCrabs каждый день, попросите его настроить себя как системный сервис. Просто скажите что-то вроде «настрой себя запускаться вместе с компьютером» или «убери автозапуск сервиса». Агент сам настроит и уберёт launchd (macOS) или systemd (Linux) автоматически.
Держим TUI работающим на VPS (tmux)
Если вам нужен полноценный интерактивный TUI всегда под рукой на удалённом сервере (а не headless-демон), tmux - ваш путь. Ваша session переживает обрывы SSH, сон ноутбука и капризные соединения.
1. Установите tmux
# Debian / Ubuntu
sudo apt install tmux
# RHEL / CentOS / Fedora
sudo yum install tmux
2. Найдите, куда установлен opencrabs
which opencrabs
# If that returns nothing, search the whole filesystem
find / -name "opencrabs" -type f 2>/dev/null
3. Запустите именованную сессию tmux
tmux new -s opencrabs
4. Запустите opencrabs внутри неё
opencrabs
5. Отключитесь (opencrabs продолжит работать)
Нажмите Ctrl+B, затем D. Теперь можно закрыть SSH - opencrabs продолжит работать.
6. Подключитесь позже
tmux attach -t opencrabs
Вот и всё. Возвращайтесь с любой машины, подключайтесь и продолжайте с места, где остановились. Если вам нужны только channels (Telegram, Discord, Slack, WhatsApp) в headless-режиме без TUI, демон подойдёт лучше: opencrabs service install && opencrabs service start.
Эндпоинт здоровья
Добавьте в config.toml, чтобы открыть проверку здоровья:
[daemon]
health_port = 8080
Затем GET http://localhost:8080/health возвращает 200 OK с JSON-статусом. Полезно для сторожа systemd, мониторов аптайма или балансировщиков.
Управление сервисом
Установите OpenCrabs как системный сервис (launchd на macOS, systemd на Linux):
opencrabs service install
opencrabs service start
opencrabs service stop
opencrabs service restart
opencrabs service status
opencrabs service uninstall
Сервисы с учётом профилей
Каждый профиль получает собственный независимый сервис:
# Install a specific profile as a service
opencrabs -p hermes service install
opencrabs -p hermes service start
# Each profile gets its own service name
# macOS: com.opencrabs.daemon.hermes
# Linux: opencrabs-hermes.service
# Manage independently
opencrabs -p hermes service status
opencrabs -p hermes service stop
opencrabs -p hermes service uninstall
Несколько профилей могут работать одновременно как демоны-сервисы с полной изоляцией.
Переменная окружения OPENCRABS_PROFILE
Поставьте OPENCRABS_PROFILE=hermes, чтобы выбирать профиль без флага -p. Полезно для сервисов systemd, задач cron и режима демона.
Траблшутинг: демон не поднимается
Если opencrabs service status говорит stopped:
- Вы открывали TUI? Запуск
opencrabsнамеренно выключает демона, чтобы интерактивная session завладела channels. Демон остаётся выключенным, пока вы снова не выполнитеopencrabs service start. - Старые сборки могут ещё иметь
Restart=on-failureвместоRestart=always. Перегенерируйте юнит черезopencrabs service install(затемservice start), чтобы получить политику вечного перезапуска. - Конфигурация, ключи, команды и инструменты перезагружаются на лету. Правка
config.tomlилиkeys.tomlникогда не требует перезапуска демона. Если изменение не применяется, поищите в логах строкуConfigWatcher: reloadedвместо перезапуска.
Управление cron
# List all cron jobs
opencrabs cron list
# Add a new cron job
opencrabs cron add \
--name "Daily Report" \
--cron "0 9 * * *" \
--tz "America/New_York" \
--prompt "Check emails and summarize" \
--provider anthropic \
--model claude-sonnet-4-20250514 \
--thinking off \
--deliver-to telegram:123456
# Remove a cron job (accepts name or ID)
opencrabs cron remove "Daily Report"
# Enable/disable (accepts name or ID)
opencrabs cron enable "Daily Report"
opencrabs cron disable "Daily Report"
Горячие клавиши TUI
| Клавиша | Действие |
|---|---|
Enter | Отправить сообщение |
Esc | Отмена / закрыть |
Ctrl+N | Новая session |
Ctrl+L | Экран sessions |
Ctrl+K | Очистить текущую session |
Ctrl+O | Свернуть/развернуть группу инструментов |
| | Разделить панель горизонтально |
_ | Разделить панель вертикально |
Ctrl+X | Закрыть активную панель |
Tab | Переключить фокус панелей / Принять автодополнение |
Up/Down | Навигация по подсказкам / sessions |
/ | Начать slash-команду (например, /help, /models) |
: | Открыть выбор эмодзи |