CLI tools

Установка

This page is in Russian.

max — одна команда. Ставится как обычный пакет npm, работает под Node и под Bun, ничего не компилирует при установке и сама ничего не запускает. Фоновый max serve появляется позже, когда его запустит первая команда (serve в configuration.md).

Что нужно

  • Node 22 или новее — проверено на 24.19.0; 22 — нижняя граница, она записана в package.json
  • или Bun 1.3+ — проверено на 1.3.14, отдельной проверкой в CI на каждый pull request
  • Linux, macOS или Windows — разрабатывается на Linux; тесты проходят и на macOS, и на Windows

Для доступа к ключнице (OS keyring) используется готовый бинарник — собирать ничего не нужно. Если ключницы на машине нет, токен ложится в файл рядом с настройками, и команда скажет об этом одной строкой.

Обычный способ

Запустить, ничего не устанавливая:

npx @leemour/max-cli --help
pnpm dlx @leemour/max-cli --help
bunx @leemour/max-cli --help

Поставить насовсем:

npm install -g @leemour/max-cli
pnpm add -g @leemour/max-cli
bun add -g @leemour/max-cli

Пакет называется @leemour/max-cli, а команда, которую он ставит, — max.

Проверка, что всё встало:

max --version
max --help              # список команд

Если установка прошла, а max не находится, — npx @leemour/max-cli doctor скажет почему и какую команду выполнить (troubleshooting.md).

Из исходников

Нужно, если правите код или хотите версию раньше выпуска.

git clone [email protected]:leemour/max-cli.git
cd max-cli
pnpm install
pnpm build

Дальше — либо положить команду на PATH:

pnpm link --global      # теперь работает просто `max`

либо звать по пути, ничего не связывая:

node dist/bin/max.js --help

Проверка, что всё встало:

max --version
max --help              # список команд

Имя без области (max-cli) занято чужим пакетом с 2018 года, поэтому область обязательна.

Куда всё ложится

Три каталога, по соглашениям операционной системы:

ЧтоLinuxmacOSWindowsЧто внутри
настройки~/.config/max-cli/~/Library/Preferences/max-cli/%APPDATA%\max-cli\Config\config.json, и файл с токеном, если ключницы нет
состояние~/.local/share/max-cli/~/Library/Application Support/max-cli/%LOCALAPPDATA%\max-cli\Data\profiles/<имя>.json, bots/ — чаты, которые видели боты, и их журнал отправок, каталог runs/ с записями запусков
кэш~/.cache/max-cli/~/Library/Caches/max-cli/%LOCALAPPDATA%\max-cli\Cache\<профиль>.db — локальная копия чатов и сообщений

Точные пути на этой машине показывает max doctor.

Токен хранится в ключнице операционной системы, а не в файле. В config.json для него нет поля, и схема настроек его не примет.

Каждый каталог переопределяется переменной окружения: MAX_CONFIG_DIR, MAX_STATE_DIR, MAX_CACHE_DIR.

⚠ Переменные переносят и запись в ключнице. Сессия, сохранённая с MAX_CONFIG_DIR, не видна команде, запущенной без него: под капотом меняется имя службы, под которым лежит токен. Это ровно то, что нужно для временного профиля и для тестов, и ровно то, что однажды стоило владельцу получаса с «нет сессии» при живом токене. Либо ставьте переменные всегда, либо не ставьте никогда.

Автодополнение

По Tab дополняются команды, действия, флаги и их значения, а на месте чата или человека — номер из локальной копии этого профиля, с названием чата или именем рядом. Одна строка в файле настроек оболочки:

echo 'source <(max complete zsh)' >> ~/.zshrc      # zsh
echo 'source <(max complete bash)' >> ~/.bashrc    # bash
max complete fish | source                         # fish, в config.fish

PowerShell — max complete powershell | Out-String | Invoke-Expression в профиле.

Tab никогда не подключается к MAX: подключение на каждое нажатие — это вход в аккаунт сотни раз подряд. Пока локальной копии нет, дополняются только команды и флаги. Чат предлагается по id, а название стоит рядом: название с пробелом дошло бы до max двумя словами.

Обновление и удаление

max upgrade           # тем же менеджером пакетов, которым max поставлен: pnpm, npm или bun
max upgrade --check   # только сказать, есть ли новее; ничего не ставит

Раз в сутки max сам спрашивает npm о новой версии и, если она есть, пишет после команды одну строку в stderr — только человеку в терминале: не в --json, не в трубу, не с --quiet, не в CI. Выключается max config set updateCheck false --defaults. Сам себя max не обновляет никогда.

Из исходников — git pull && pnpm install && pnpm build.

Удаление уносит команду, но не данные:

max session end                        # забыть токен ДО удаления команды
max <бот> bot auth remove              # и токен каждого бота
npm uninstall -g @leemour/max-cli
rm -rf ~/.config/max-cli ~/.local/share/max-cli ~/.cache/max-cli ~/.local/share/cli-messaging

max session end и bot auth remove стирают токены из ключницы. Если сначала удалить команду, запись в ключнице останется — безвредно, но лежать будет.

Дальше

usage.md — вход в аккаунт и первые команды.

On this page