Установка
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 года, поэтому область обязательна.
Куда всё ложится
Три каталога, по соглашениям операционной системы:
| Что | Linux | macOS | Windows | Что внутри |
|---|---|---|---|---|
| настройки | ~/.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.fishPowerShell — 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-messagingmax session end и bot auth remove стирают токены из ключницы. Если сначала удалить команду, запись в ключнице
останется — безвредно, но лежать будет.
Дальше
usage.md — вход в аккаунт и первые команды.