Node.js шлюз: MAX Messenger ↔ AI-агент (OpenClaw или Hermes) через HTTP API Gateway.
- 🔄 Long polling → HTTP POST
/v1/chat/completions - 📎 Отправка файлов/изображений/аудио/видео через маркер
[FILE:/path] - 🛑 Slash-команды:
/stop,/status,/model,/model reset - ✅ Mark seen (двойные галочки) + typing indicator
- 👥 Группы: настройки requireMention через переменные окружения
- 🔒 Allowlist пользователей
- 🐛 Watchdog: авто-реконнект при сетевых ошибках (патч для
@maxhub/max-bot-api)
Пользователь MAX → MAX API (long poll) → max-gateway (Node.js/PM2)
→ HTTP POST /v1/chat/completions
→ парсинг ответа + [FILE:] маркеров → upload → ctx.reply()
Каждый MAX-пользователь получает отдельную сессию (agent:main:max:user_XXX).
mkdir -p /root/max-bot-service
cp scripts/index.js scripts/package.json scripts/patch-polling.js scripts/ecosystem.config.js /root/max-bot-service/
cd /root/max-bot-service && npm installnpm install автоматически запустит patch-polling.js (postinstall), который исправляет баг в @maxhub/max-bot-api — без патча polling loop умирает при сетевых ошибках.
Отредактировать ecosystem.config.js → env:
| Переменная | Обязательная | Описание |
|---|---|---|
MAX_BOT_TOKEN |
✅ | Токен бота из @masterbot |
OPENCLAW_TOKEN |
✅ | gateway.auth.token из openclaw.json |
OPENCLAW_AGENT_ID |
— | ID агента (default: main) |
OPENCLAW_WORKSPACE |
— | Путь к workspace агента |
OPENCLAW_API |
— | Gateway URL (default: http://127.0.0.1:18789) |
MAX_ALLOWED_USERS |
— | Allowlist user_id через запятую |
MAX_DM_POLICY |
— | allowlist (default) или open |
MAX_GROUP_SETTINGS |
— | JSON: {"chatId":{"requireMention":false}} |
pm2 start ecosystem.config.js
pm2 save && pm2 startupПрочитать references/AGENTS_SECTION.md и добавить в TOOLS.md агента — без этого агент не будет знать, как отправлять файлы в MAX.
- Временно поставить
MAX_DM_POLICY=open - Написать боту → найти в логах:
pm2 logs max-gateway | grep sender= - Вернуть
allowlist, вписать найденный ID вMAX_ALLOWED_USERS
pm2 logs max-gateway --lines 30
pm2 list
curl -s http://127.0.0.1:18789/v1/models -H "Authorization: Bearer TOKEN"| Симптом | Причина | Решение |
|---|---|---|
401 Invalid access_token |
Токен бота протух | Новый через @masterbot |
HTTP 404 |
API не включен | gateway.http.endpoints.chatCompletions.enabled: true |
| Бот молчит, логов нет | PM2 упал | pm2 restart max-gateway |
ECONNRESET / fetch failed |
Обрыв сети | Авто-реконнект (5с → 60с) |
- OpenClaw с включённым
/v1/chat/completions - Node.js 18+, PM2 (
npm i -g pm2) - Бот в MAX: создать через @masterbot → получить токен
- MAX Bot API: https://dev.max.ru/docs-api
- SDK: https://github.com/max-messenger/max-bot-api-client-ts
- NeiroHost: https://neirohost.ru
MIT