@wirecat/max-cli 0.45.5 → 0.47.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +265 -414
- package/dist/bin/max.js +4 -0
- package/dist/bin/max.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="https://raw.githubusercontent.com/WireCatLabs/max-cli/main/docs/
|
|
2
|
+
<img src="https://raw.githubusercontent.com/WireCatLabs/max-cli/main/docs/images/social-preview.png" alt="MAX CLI для людей, ботов и агентов" width="100%">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
-
#
|
|
5
|
+
# MAX CLI для людей, ботов и агентов
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
чаты — сами или руками Claude, Codex, Cursor и других агентов. В группах, которые вы ведёте, —
|
|
10
|
-
следите за непрочитанным и сразу реагируйте на проблемы: спам, чужие ссылки, флуд, вопросы без
|
|
11
|
-
ответа — по вашим правилам.
|
|
7
|
+
Ваш аккаунт и ваши боты [MAX](https://max.ru) — в терминале и в ИИ-агентах. Читайте, ищите и
|
|
8
|
+
отвечайте сами или поручите это Claude, Codex и Cursor — по вашим правилам.
|
|
12
9
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
```sh
|
|
16
|
-
max sales bot messages send "Команда продаж" "Сборка готова" # от имени бота
|
|
17
|
-
max messages send "Иван Петров" "Опаздываю на 15 минут" # от вашего имени
|
|
18
|
-
```
|
|
10
|
+
[Документация](https://wirecat.dev/ru/docs/max) · [Примеры](https://github.com/WireCatLabs/max-cli/blob/main/docs/recipes.md) · [WireCat](https://wirecat.dev/ru)
|
|
19
11
|
|
|
20
12
|
[](https://www.npmjs.com/package/@wirecat/max-cli)
|
|
21
13
|
[](https://github.com/WireCatLabs/max-cli/actions/workflows/ci.yml)
|
|
@@ -24,511 +16,370 @@ max messages send "Иван Петров" "Опаздываю на 15 минут
|
|
|
24
16
|
[](https://www.npmjs.com/package/@wirecat/max-cli)
|
|
25
17
|
[](LICENSE)
|
|
26
18
|
|
|
27
|
-
|
|
19
|
+
<!-- Слот для демо: GIF или видео на 30–45 секунд, файл в docs/images/, ссылка абсолютная
|
|
20
|
+
(https://raw.githubusercontent.com/WireCatLabs/max-cli/main/docs/images/…), чтобы картинка
|
|
21
|
+
открывалась и на npmjs.com. Только вымышленный аккаунт. -->
|
|
28
22
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
Пример разговора с агентом (люди и чаты вымышленные):
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
Вы: Что я кому обещал за последние три дня?
|
|
27
|
+
Агент: (вызывает max review: 12 чатов, 3 голосовых расшифровано)
|
|
28
|
+
Я должен
|
|
29
|
+
· Алисе Пример — прислать счёт до пятницы. Личный чат, 24.09
|
|
30
|
+
Жду от других
|
|
31
|
+
· Борис Образцов — макет к 25.09. В группе «Дизайн» его пока нет
|
|
32
|
+
Нужно уточнить
|
|
33
|
+
· «Проект Альфа»: кто везёт образцы — договорились «потом решим», 25.09
|
|
34
|
+
Вы: Напомни Борису про макет.
|
|
35
|
+
Агент: Черновик: «Борис, привет! Как там макет?» Отправить?
|
|
36
|
+
Вы: Да.
|
|
37
|
+
```
|
|
32
38
|
|
|
33
|
-
|
|
34
|
-
`max <бот> bot api <операция>`: параметры — флаги, тело запроса — JSON. Удобные команды
|
|
35
|
-
для сообщений и чатов дополняются полным API для собственных сценариев и автоматизации.
|
|
36
|
-
[Руководство по Bot API](docs/bot.md) и [полный справочник команд](docs/commands.md).
|
|
39
|
+
## Быстрый старт
|
|
37
40
|
|
|
38
41
|
```sh
|
|
39
|
-
|
|
40
|
-
max
|
|
41
|
-
max
|
|
42
|
-
max sales bot messages send "Команда продаж" "Сборка готова" --file report.pdf
|
|
43
|
-
max sales bot recipients add "Команда продаж" # писать только сюда
|
|
44
|
-
max bot list --check # все боты на этом компьютере
|
|
42
|
+
npm install -g @wirecat/max-cli
|
|
43
|
+
max setup --agent claude # вход по QR-коду и навык для Claude Code
|
|
44
|
+
max inbox # непрочитанное во всех чатах, ничего не отмечая
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
|
|
48
|
-
`
|
|
49
|
-
|
|
50
|
-
- **Сообщения и чаты.** Отправка в чат по номеру, человеку как `user:<номер>` или в чат по
|
|
51
|
-
названию; правка, удаление, чтение, закрепление. `chats list` — чаты, которые бот видел: списка
|
|
52
|
-
чатов бота у MAX нет.
|
|
53
|
-
- **Файлы, участники, комментарии, кнопки, меню команд, вебхуки.** `messages send --file`,
|
|
54
|
-
`chats members`, `chats admins`, `comments`, `callbacks answer`, `commands`, `webhooks` — у каждой записи тот
|
|
55
|
-
же список получателей и журнал.
|
|
56
|
-
- **Модерация от имени бота.** `bot chats moderate` сверяет новое в группе с правилами
|
|
57
|
-
(`bot chats rules`) и удаляет спам и людей — с запретом вернуться по ссылке. Вступления видит
|
|
58
|
-
`bot watch`, который печатает всё, что происходит в чатах бота.
|
|
59
|
-
- **Копия переписки на этом компьютере.** `bot contacts show <кто>` — где человек писал и его личный
|
|
60
|
-
чат с ботом; `bot search messages --from <кто>` и `bot messages between <кто> <кто>` — без
|
|
61
|
-
запросов к MAX.
|
|
62
|
-
- **Бот для агента.** `max sales bot mcp` — MCP-сервер бота: агенту доступно то, что разрешают
|
|
63
|
-
`permissions` профиля бота; `ask` и `allow` разрешают действие без формы, а `readonly` запрещает запись.
|
|
64
|
-
- **Все методы Bot API.** Полное покрытие официальной схемы через `max bot api <операция>` — с флагами
|
|
65
|
-
для параметров и JSON-телом, которое сверяется со схемой до отправки.
|
|
66
|
-
- **Бот не напишет лишнего.** У каждого бота свой список чатов, куда ему можно писать, и журнал
|
|
67
|
-
всего, что он отправил, — без текста. `permissions` ограничивает и бота.
|
|
68
|
-
- **Токен не в файле.** Токен бота — в системном хранилище паролей, отдельно от вашего.
|
|
69
|
-
|
|
70
|
-
Бота создают на [business.max.ru](https://business.max.ru/self); MAX выдаёт их подтверждённым
|
|
71
|
-
организациям, ИП и самозанятым. Полностью — [docs/bot.md](docs/bot.md).
|
|
47
|
+
`max setup` за пять минут проводит через вход: вы сканируете QR-код в приложении MAX, и `max`
|
|
48
|
+
становится ещё одним вашим устройством. Вместо `claude` можно указать `codex`, `cursor`, `gemini`,
|
|
49
|
+
`all` или `none`; войти можно и по SMS через web.max.ru — `max setup --help`.
|
|
72
50
|
|
|
73
|
-
|
|
51
|
+
Нужен Node 22.16+ (ветка 22.x) или 24+, либо Bun 1.3+; работает в Windows, macOS и Linux.
|
|
52
|
+
Попробовать без установки — `npx @wirecat/max-cli --help`. Если `max` не находится,
|
|
53
|
+
`npx @wirecat/max-cli doctor` скажет почему.
|
|
74
54
|
|
|
75
|
-
|
|
76
|
-
чатами, историей, группами и контактами.
|
|
55
|
+
Подробнее: [установка](https://github.com/WireCatLabs/max-cli/blob/main/docs/installation.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/installation)), [вход и профили](https://github.com/WireCatLabs/max-cli/blob/main/docs/sessions.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/sessions)).
|
|
77
56
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
> аккаунтов, потерю данных или другие последствия. Бот работает через официальный API, и к нему
|
|
82
|
-
> это не относится.
|
|
57
|
+
## Что можно сделать
|
|
58
|
+
|
|
59
|
+
**Разобрать, что пришло.** «Используй max CLI: кто ждёт моего ответа и что срочно?»
|
|
83
60
|
|
|
84
61
|
```sh
|
|
85
|
-
max
|
|
86
|
-
max messages list "Иван Петров"
|
|
87
|
-
max messages send "Иван Петров" "Опаздываю на 15 минут"
|
|
62
|
+
max inbox
|
|
88
63
|
```
|
|
89
64
|
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
## Как это использовать
|
|
93
|
-
|
|
94
|
-
Самое полезное — поручить переписку агенту: Claude, Codex или другому. Он читает чаты через `max`
|
|
95
|
-
и делает то, что вы попросили словами.
|
|
65
|
+
**Найти что угодно.** «Когда мы договорились о встрече с Алисой?» — ответ с датой и самим
|
|
66
|
+
сообщением, по локальной копии и без запросов к MAX.
|
|
96
67
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
остались без ответа.
|
|
101
|
-
- **Кто кому должен.** `max review` одним вызовом отдаёт всё, что было в переписке с прошлого
|
|
102
|
-
обзора, — ваши сообщения тоже, голосовые — текстом. Агент раскладывает это на «я должен», «жду от
|
|
103
|
-
других» и «нужно уточнить», а прежде чем назвать что-то просроченным, проверяет рабочие группы:
|
|
104
|
-
может, уже сделано.
|
|
105
|
-
- **Напоминания.** Кому вы обещали ответить и не ответили; чей вопрос висит третий день.
|
|
106
|
-
- **Черновики ответов.** Агент предлагает текст, а отправляете вы — или он сам, если вы разрешили
|
|
107
|
-
писать в этот чат.
|
|
108
|
-
- **Поиск.** «Когда мы договорились о встрече с Иваном?» — ответ с датой и самим сообщением.
|
|
109
|
-
- **Группа, которую вы ведёте.** Какие вопросы висят без ответа, кто вступил за неделю и с каким
|
|
110
|
-
аккаунтом, удалить приглашения в чужие чаты — по вашим правилам и с вашим «да»
|
|
111
|
-
([ниже](#группы-которые-вы-ведёте)).
|
|
68
|
+
```sh
|
|
69
|
+
max search all "встреча Алиса"
|
|
70
|
+
```
|
|
112
71
|
|
|
113
|
-
|
|
72
|
+
**Понять, кто кому что должен.** «Что я обещал и чего жду от других?» — вся переписка с прошлого
|
|
73
|
+
обзора, ваши сообщения и голосовые текстом.
|
|
114
74
|
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Агент: (вызывает max review: 12 чатов, 3 голосовых расшифровано)
|
|
118
|
-
Я должен
|
|
119
|
-
· Ивану Петрову — прислать счёт до пятницы. «Иван Петров», 24.09
|
|
120
|
-
Жду от других
|
|
121
|
-
· Ольга — макет к 25.09. В группе «Дизайн» его пока нет
|
|
122
|
-
Нужно уточнить
|
|
123
|
-
· «Проект Альфа»: кто везёт образцы — договорились «потом решим», 25.09
|
|
124
|
-
Следующий обзор — с 26.09, 14:05.
|
|
125
|
-
Вы: Напомни Ольге про макет.
|
|
126
|
-
Агент: Черновик: «Ольга, привет! Как там макет?» Отправить?
|
|
127
|
-
Вы: Да.
|
|
75
|
+
```sh
|
|
76
|
+
max review --since-time 3d --transcribe
|
|
128
77
|
```
|
|
129
78
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
[docs/recipes.md](docs/recipes.md).
|
|
79
|
+
Ещё: сводки утром и вечером, итог недели по рабочему чату, кому вы обещали ответить, черновики
|
|
80
|
+
ответов, которые отправляете вы или агент с вашего разрешения.
|
|
133
81
|
|
|
134
|
-
|
|
82
|
+
Подробнее: [рецепты для агентов](https://github.com/WireCatLabs/max-cli/blob/main/docs/recipes.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/recipes)).
|
|
135
83
|
|
|
136
|
-
|
|
137
|
-
max review --chat "Поход" --unanswered # вопросы, на которые сутки никто не ответил
|
|
138
|
-
max chats events "Поход" # кто вступил и вышел за неделю
|
|
139
|
-
max chats members list "Поход" --all # все участники: когда заведён аккаунт
|
|
140
|
-
max chats rules set "Поход" invites delete # приглашения в чужие чаты — удалять
|
|
141
|
-
max chats moderate "Поход" --allow-dangerous # проверить группу и сделать, что разрешено
|
|
142
|
-
```
|
|
84
|
+
## Для ИИ-агентов
|
|
143
85
|
|
|
144
|
-
|
|
145
|
-
пересланное, флуд, совсем новые аккаунты. По умолчанию она только отмечает. Для каждого действия
|
|
146
|
-
вы решаете сами: никогда, только с флагом, с вашим подтверждением или сразу. Сценарии с агентом,
|
|
147
|
-
все правила и ограничения — [docs/groups.md](docs/groups.md).
|
|
148
|
-
|
|
149
|
-
## Как это работает
|
|
150
|
-
|
|
151
|
-
`max` работает от вашего имени, как ещё одно ваше устройство, а не как бот. Вы входите один раз
|
|
152
|
-
по QR-коду, и дальше доступно то же, что в приложении: чаты, сообщения, файлы, группы, контакты и
|
|
153
|
-
профиль.
|
|
154
|
-
|
|
155
|
-
Агенту `max` подключается одним из двух способов:
|
|
156
|
-
|
|
157
|
-
- **Агент с терминалом** — Claude Code, Codex, Gemini CLI. Он сам вызывает команды `max`. Дайте
|
|
158
|
-
ему навык (skill) — инструкцию, как работать с `max`: одна команда, см.
|
|
159
|
-
[ниже](#для-скриптов-и-агентов).
|
|
160
|
-
- **Агент без терминала** — Claude Desktop, Cursor и другие клиенты MCP. Подключите `max mcp`:
|
|
161
|
-
готовую запись для их настроек печатает `max mcp config`. Там же есть команды `/catch-up` (что
|
|
162
|
-
нового), `/review` (кто кому должен), `/reply` (черновик ответа) и `/find` (поиск). По умолчанию
|
|
163
|
-
права агента задают `permissions`; большинство записей разрешено по умолчанию. `readonly`
|
|
164
|
-
запрещает запись, а `ask` и `allow` допускают вызванную запись без серверной формы.
|
|
165
|
-
|
|
166
|
-
## Что умеет
|
|
167
|
-
|
|
168
|
-
- **Читать.** Чаты, история, одно сообщение вместе с соседними, непрочитанное во всех чатах
|
|
169
|
-
сразу (`max inbox`), вся переписка с прошлого обзора для разбора «кто кому должен» (`max review`), новые сообщения по мере прихода (`max watch`), скачивание вложений,
|
|
170
|
-
расшифровка голосовых в текст на вашем компьютере, выгрузка переписки в JSONL или Markdown.
|
|
171
|
-
- **Искать.** Сообщения — по тексту всего прочитанного, без подключения к MAX. Чаты и контакты —
|
|
172
|
-
по части названия или имени.
|
|
173
|
-
- **Писать.** Текст и разметка, ответы, фото, видео, файлы и голосовые, правка, пересылка, закрепление, реакции,
|
|
174
|
-
опросы, отложенная отправка, удаление — у себя или у всех.
|
|
175
|
-
- **Вести группы и каналы.** Создать группу, вступить по ссылке, выйти, участники и админы,
|
|
176
|
-
название и настройки, ссылка-приглашение, папки. Для админа — вопросы без
|
|
177
|
-
ответа, кто вступил и вышел, все участники с возрастом аккаунта, правила и проверка группы по ним
|
|
178
|
-
([docs/groups.md](docs/groups.md)).
|
|
179
|
-
- **Контакты и аккаунт.** Найти человека по номеру, добавить, удалить, переименовать для себя,
|
|
180
|
-
заблокировать, импортировать из файла; изменить профиль и фото; посмотреть и завершить другие
|
|
181
|
-
сеансы.
|
|
182
|
-
- **Входить удобным способом.** QR-код прямо в терминале, QR-код или SMS через web.max.ru в
|
|
183
|
-
браузере, или готовый токен.
|
|
184
|
-
|
|
185
|
-
## Чем он хорош
|
|
186
|
-
|
|
187
|
-
- **Читает незаметно.** Чтение не ставит отметку «прочитано»: собеседник не видит, что вы открыли
|
|
188
|
-
чат. Отметить прочитанным можно, когда нужно: `max chats mark-read` или `--mark-read`.
|
|
189
|
-
- **Агент не напишет лишнего.** Есть профиль только для чтения, список чатов, в которые можно
|
|
190
|
-
писать, и лимит сообщений в час. В MCP сервер проверяет права профиля; подтверждение действий настраивается в приложении агента.
|
|
191
|
-
Если имя подходит к двум чатам, `max` не выбирает сам, а показывает оба.
|
|
192
|
-
- **Модерация по вашим правилам, а не по чужим.** Проверка группы по умолчанию только отмечает.
|
|
193
|
-
Удалить сообщение или человека она может, только если вы разрешили: для каждого действия —
|
|
194
|
-
никогда, с флагом, с вашим подтверждением или сразу. Не больше 10 действий за раз, и ничего не
|
|
195
|
-
следит за группой в фоне.
|
|
196
|
-
- **Сообщение не уйдёт дважды.** Если связь оборвалась во время отправки, `max` прямо говорит, что
|
|
197
|
-
не знает, дошло ли сообщение, и даёт команду для повтора. MAX узнаёт повтор и второго сообщения не
|
|
198
|
-
создаёт.
|
|
199
|
-
- **Своя копия переписки.** Всё прочитанное сохраняется на вашем компьютере. По ней работает
|
|
200
|
-
быстрый поиск по тексту сообщений, и её можно читать без интернета (`--offline`). При входе MAX
|
|
201
|
-
присылает только изменившихся людей. Полный список заново — `max contacts sync`; данные
|
|
202
|
-
покинутых чатов удаляет `max store clear --left --allow-dangerous`.
|
|
203
|
-
- **Чужой текст не управляет вашим терминалом.** Имена, названия чатов, имена файлов и сообщения
|
|
204
|
-
пишут другие люди. Управляющие символы из них показываются как текст, имя всегда печатается в одну
|
|
205
|
-
строку, а автодополнение подставляет только номер чата — поддельную строку переписки или команду в
|
|
206
|
-
оболочке так не подсунуть.
|
|
207
|
-
- **Пароль от аккаунта не лежит в файле.** Токен входа хранится в системном хранилище паролей:
|
|
208
|
-
Keychain в macOS, Secret Service (GNOME Keyring, KWallet) в Linux, диспетчер учётных данных в
|
|
209
|
-
Windows. В историю команд он не попадает.
|
|
210
|
-
- **Скрипт и агент разбирают ответ без догадок.** С `--json` команда отдаёт только данные, в одной и
|
|
211
|
-
той же форме, без текста для человека вокруг. Ошибка приходит отдельно и с номером, поэтому
|
|
212
|
-
скрипт сразу понимает, что случилось: нет входа, чат не найден или MAX не ответил вовремя.
|
|
213
|
-
- **Разбор проблем без вашей переписки.** `--trace` показывает каждый запрос к MAX, чтобы понять,
|
|
214
|
-
почему команда не сработала. В этой записи нет текстов, имён, телефонов и токена, поэтому её
|
|
215
|
-
можно приложить к сообщению об ошибке. Полностью удачный запуск без флага не записывается; ошибки и частичные результаты сохраняются по умолчанию без текстов, если запись явно не выключена.
|
|
216
|
-
|
|
217
|
-
## Под заказ
|
|
218
|
-
|
|
219
|
-
Делаем автоматизацию процессов и инструменты под вашу задачу: интеграции с MAX и другими
|
|
220
|
-
мессенджерами, ИИ-агентов, внутренние сервисы. Пишите на [info@neirox.ai](mailto:info@neirox.ai).
|
|
221
|
-
|
|
222
|
-
## Чем отличается от других
|
|
223
|
-
|
|
224
|
-
Для MAX уже есть хорошие проекты, и max-cli многому у них научился.
|
|
225
|
-
[PyMax](https://github.com/MaxApiTeam/PyMax) — самая полная библиотека для личного аккаунта; её код
|
|
226
|
-
помог разобрать многие операции протокола. Выбирайте то, что подходит под задачу.
|
|
86
|
+
Ваш агент. Ваш MAX. Ваши правила.
|
|
227
87
|
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
| готовые команды — не нужно писать свою программу | ✅ | — (библиотека для своего кода на Python) | — |
|
|
235
|
-
| локальная копия с поиском и чтением без интернета | ✅ | — | — |
|
|
236
|
-
| новые сообщения в реальном времени | ✅ `max watch` | ✅ обработчики событий | — |
|
|
237
|
-
| отложенная отправка — уходит, даже если компьютер выключен | ✅ | ✅ | — |
|
|
238
|
-
| выгрузка переписки в JSONL или Markdown | ✅ | — | — |
|
|
239
|
-
| чтение, отправка текста, фото и файлов | ✅ | ✅ | ✅ |
|
|
240
|
-
| реакции, правка, пересылка, закрепление | ✅ | ✅ | — |
|
|
241
|
-
| удаление сообщений — у себя или у всех, с лимитом | ✅ | ✅ | — |
|
|
242
|
-
| отметка «прочитано» по запросу | ✅ | ✅ | — |
|
|
243
|
-
| группы и каналы: создать, вступить, участники, админы | ✅ | ✅ | чтение каналов |
|
|
244
|
-
| для админа группы: вопросы без ответа, новенькие, проверка по правилам | ✅ | — | — |
|
|
245
|
-
| контакты, профиль, другие сеансы | ✅ | ✅ | — |
|
|
246
|
-
| отправка видео | ✅ | ✅ | — |
|
|
247
|
-
| отправка кружков | — | ✅ | — |
|
|
248
|
-
| отправка голосовых | ✅ | ⚠️ в 2.4.1 не проходит ([#102](https://github.com/MaxApiTeam/PyMax/issues/102), [#103](https://github.com/MaxApiTeam/PyMax/issues/103)) | — |
|
|
249
|
-
| опросы: показать, проголосовать, создать, закрыть | ✅ | ✅ | — |
|
|
250
|
-
| фото профиля | ✅ | ✅ | — |
|
|
251
|
-
| вход с облачным паролем | ✅ по QR-коду | ✅ | — |
|
|
252
|
-
| установить или снять облачный пароль | — | ✅ | — |
|
|
253
|
-
|
|
254
|
-
Для бота есть `max bot` — через официальный Bot API, отдельно от личного аккаунта
|
|
255
|
-
([docs/bot.md](docs/bot.md)). Таблица выше — про личный аккаунт.
|
|
256
|
-
|
|
257
|
-
## Содержание
|
|
258
|
-
|
|
259
|
-
- [Бот](#бот)
|
|
260
|
-
- [Личный аккаунт](#личный-аккаунт)
|
|
261
|
-
- [Группы, которые вы ведёте](#группы-которые-вы-ведёте)
|
|
262
|
-
- [Установка](#установка)
|
|
263
|
-
- [Вход](#вход)
|
|
264
|
-
- [Использование](#использование)
|
|
265
|
-
- [Для скриптов и агентов](#для-скриптов-и-агентов)
|
|
266
|
-
- [Безопасность](#безопасность)
|
|
267
|
-
- [Документация](#документация)
|
|
268
|
-
- [Разработка](#разработка)
|
|
269
|
-
- [Дорожная карта](#дорожная-карта)
|
|
270
|
-
- [Лицензия](#лицензия)
|
|
271
|
-
- [Участие](#участие)
|
|
272
|
-
|
|
273
|
-
## Установка
|
|
274
|
-
|
|
275
|
-
Пакет — **`@wirecat/max-cli`**, команда, которую он ставит, — **`max`**.
|
|
276
|
-
|
|
277
|
-
Запустить, ничего не устанавливая:
|
|
88
|
+
- **Агент с терминалом** — Claude Code, Codex, Cursor, Gemini CLI. Он сам вызывает `max`, а навык
|
|
89
|
+
(skill) — инструкция для агента — объясняет ему команды и ограничения. `max setup` ставит навык
|
|
90
|
+
сам; отдельно — `max skill install`.
|
|
91
|
+
- **Приложение без терминала** — Claude Desktop, Cursor и другие клиенты MCP. Подключите
|
|
92
|
+
MCP-сервер `max mcp`; готовые просьбы `/catch-up`, `/review`, `/reply` и `/find` уже внутри.
|
|
93
|
+
- **ChatGPT или Claude в браузере** — через HTTPS-туннель и вход по коду.
|
|
278
94
|
|
|
279
95
|
```sh
|
|
280
|
-
|
|
96
|
+
max mcp setup claude-code # или codex
|
|
97
|
+
max mcp config # запись для Claude Desktop, Cursor и других
|
|
281
98
|
```
|
|
282
99
|
|
|
283
|
-
|
|
100
|
+
С `--json` каждая команда отдаёт только данные, а ошибка приходит отдельно, с постоянным кодом
|
|
101
|
+
завершения.
|
|
284
102
|
|
|
285
|
-
|
|
286
|
-
npm install -g @wirecat/max-cli
|
|
287
|
-
max --version
|
|
288
|
-
max setup --agent codex # вход и подключение навыка агента
|
|
289
|
-
```
|
|
103
|
+
Подробнее: [MCP-сервер](https://github.com/WireCatLabs/max-cli/blob/main/docs/mcp.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/mcp)), [браузер](https://github.com/WireCatLabs/max-cli/blob/main/docs/remote.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/remote)), [контракт для скриптов](https://github.com/WireCatLabs/max-cli/blob/main/docs/cli-contract.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/cli-contract)).
|
|
290
104
|
|
|
291
|
-
|
|
292
|
-
для новых терминалов. Агенту в уже открытом терминале нужно обновить окружение и прочитать
|
|
293
|
-
`max skill show` перед входом. `MAX_INSTALL_AGENT=none` отключает установку навыка.
|
|
105
|
+
## Почему max
|
|
294
106
|
|
|
295
|
-
|
|
296
|
-
|
|
107
|
+
- **Весь аккаунт, а не только бот.** Чаты, история, группы, контакты, файлы и голосовые — как в
|
|
108
|
+
приложении. И отдельно бот через официальный Bot API.
|
|
109
|
+
- **Своя копия переписки.** Всё прочитанное хранится на вашем компьютере: быстрый поиск и чтение
|
|
110
|
+
без интернета (`--offline`), выгрузка в JSONL или Markdown.
|
|
111
|
+
- **Сделан для агентов.** Навык, MCP-сервер, одна форма JSON и коды ошибок, по которым скрипт
|
|
112
|
+
решает, что делать дальше.
|
|
113
|
+
- **Безопасен по умолчанию.** Чтение не ставит отметку «прочитано». Есть профиль только для чтения,
|
|
114
|
+
список чатов для записи и лимит сообщений в час. Если имя подходит к двум чатам, `max` не выбирает
|
|
115
|
+
сам. Если связь оборвалась при отправке, `max` так и скажет, а повтор не создаст второе сообщение.
|
|
116
|
+
- **Порядок в группах, которые вы ведёте.** Вопросы без ответа, кто вступил, проверка по вашим
|
|
117
|
+
правилам: спам, чужие ссылки, флуд. По умолчанию проверка только отмечает.
|
|
297
118
|
|
|
298
|
-
|
|
299
|
-
напечатает команду, которая это исправит.
|
|
119
|
+
### Чем отличается от других
|
|
300
120
|
|
|
301
|
-
|
|
121
|
+
Для MAX есть и другие хорошие проекты; [PyMax](https://github.com/MaxApiTeam/PyMax) — самая полная
|
|
122
|
+
библиотека для личного аккаунта, и её код помог разобрать протокол. Коротко, для личного аккаунта:
|
|
302
123
|
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
124
|
+
| | max-cli | [PyMax](https://github.com/MaxApiTeam/PyMax) | [max-mcp](https://github.com/renosaza/max-mcp) |
|
|
125
|
+
|---|:-:|:-:|:-:|
|
|
126
|
+
| что это | программа и MCP-сервер | библиотека на Python | MCP-сервер на PyMax |
|
|
127
|
+
| готовые команды, навык и MCP для агентов | ✅ | — | MCP |
|
|
128
|
+
| ограничения для агента: только чтение, список чатов, лимит в час | ✅ | — | — |
|
|
129
|
+
| локальная копия с поиском без интернета | ✅ | — | — |
|
|
130
|
+
| расшифровка голосовых на вашем компьютере | ✅ | — | — |
|
|
131
|
+
| реакции, правка, пересылка, опросы, отложенная отправка | ✅ | ✅ | — |
|
|
132
|
+
| для админа группы: вопросы без ответа, проверка по правилам | ✅ | — | — |
|
|
307
133
|
|
|
308
|
-
|
|
309
|
-
max setup --agent codex # QR-вход и навык Codex
|
|
310
|
-
max setup --agent claude # или Claude Code
|
|
311
|
-
max setup --method qr-chrome # QR через web.max.ru в Chromium
|
|
312
|
-
max setup --method sms # номер телефона вводится в браузере
|
|
313
|
-
max setup --method token # скрытый ввод токена или stdin
|
|
314
|
-
max setup --help # все способы и примеры
|
|
315
|
-
```
|
|
134
|
+
Подробнее: [полная таблица](https://github.com/WireCatLabs/max-cli/blob/main/docs/index.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max)).
|
|
316
135
|
|
|
317
|
-
|
|
318
|
-
`max skill show`; инструкция доступна без сессии. `max session start` остаётся отдельной
|
|
319
|
-
командой импорта токена, а `max session start qr` — явного повторного входа при истёкшей сессии
|
|
320
|
-
([docs/sessions.md](docs/sessions.md)).
|
|
136
|
+
## Личный аккаунт
|
|
321
137
|
|
|
322
|
-
|
|
138
|
+
`max` без слова `bot` работает с вашим аккаунтом как ещё одно ваше устройство.
|
|
139
|
+
|
|
140
|
+
> ⚠️ **Для личного аккаунта max-cli использует неофициальный внутренний API MAX.** API может
|
|
141
|
+
> измениться без предупреждения, а использование инструмента может нарушать условия сервиса. Вы
|
|
142
|
+
> используете max-cli на свой риск; авторы и контрибьюторы не несут ответственности за блокировки
|
|
143
|
+
> аккаунтов, потерю данных или другие последствия. Бот работает через официальный API, и к нему
|
|
144
|
+
> это не относится.
|
|
145
|
+
|
|
146
|
+
- **Читать.** Чаты, история, сообщение вместе с соседними, непрочитанное во всех чатах (`max inbox`),
|
|
147
|
+
разбор «кто кому должен» (`max review`), новые сообщения по мере прихода (`max watch`), вложения,
|
|
148
|
+
голосовые — текстом на вашем компьютере.
|
|
149
|
+
- **Писать.** Текст и разметка, ответы, фото, видео, файлы и голосовые, правка, пересылка,
|
|
150
|
+
закрепление, реакции, опросы, отложенная отправка, удаление — у себя или у всех.
|
|
151
|
+
- **Группы и каналы.** Создать, вступить по ссылке, выйти, участники и админы, настройки, ссылка-приглашение, папки.
|
|
152
|
+
- **Контакты и аккаунт.** Найти по номеру, добавить, переименовать, заблокировать, свои заметки о
|
|
153
|
+
людях; профиль и фото; другие сеансы.
|
|
323
154
|
|
|
324
155
|
```sh
|
|
325
|
-
max
|
|
326
|
-
max
|
|
327
|
-
|
|
156
|
+
max inbox # непрочитанное, ничего не отмечая
|
|
157
|
+
max messages list "Алиса Пример" --limit 20
|
|
158
|
+
max messages send "Алиса Пример" "Созвонимся в 15:00?" --reply-to <id>
|
|
159
|
+
max reactions add "Алиса Пример" <id> 👍
|
|
160
|
+
max messages send 0 "Позвонить Борису" --at-time 2h # напоминание себе в «Избранное»
|
|
161
|
+
max chats mark-read "Алиса Пример" # отметить прочитанным, когда нужно
|
|
328
162
|
```
|
|
329
163
|
|
|
330
|
-
|
|
164
|
+
Подробнее: [личный аккаунт](https://github.com/WireCatLabs/max-cli/blob/main/docs/usage.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/usage)), [один человек](https://github.com/WireCatLabs/max-cli/blob/main/docs/people.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/people)), [ответы](https://github.com/WireCatLabs/max-cli/blob/main/docs/replies.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/replies)).
|
|
165
|
+
|
|
166
|
+
## Бот
|
|
331
167
|
|
|
332
|
-
|
|
168
|
+
`max bot` работает через **официальный** [Bot API MAX](https://dev.max.ru/docs-api) по токену бота.
|
|
169
|
+
Ботов может быть несколько: каждый хранится под именем, которое вы выбираете, и это имя — первое
|
|
170
|
+
слово команды. Бота создают на [business.max.ru](https://business.max.ru/self); MAX выдаёт их
|
|
171
|
+
подтверждённым организациям, ИП и самозанятым.
|
|
333
172
|
|
|
334
173
|
```sh
|
|
174
|
+
max sales bot auth set # токен — в скрытом вводе, MAX его проверит
|
|
175
|
+
max sales bot recipients add "Команда продаж" # писать только сюда
|
|
335
176
|
max sales bot messages send "Команда продаж" "**Сборка готова**" --md --file report.pdf
|
|
336
|
-
max sales bot messages pin "Команда продаж" <mid>
|
|
337
|
-
max sales bot watch --events # всё, что происходит в чатах
|
|
338
|
-
max sales bot chats rules set "Команда продаж" links delete
|
|
177
|
+
max sales bot messages pin "Команда продаж" <mid> # id сообщения — из ответа на send
|
|
178
|
+
max sales bot watch --events # всё, что происходит в чатах бота
|
|
339
179
|
max sales bot chats moderate "Команда продаж" --dry-run # что нарушает правила — без действий
|
|
340
|
-
max sales bot
|
|
180
|
+
max sales bot api get-updates --limit 10 # любой метод Bot API
|
|
181
|
+
max bot list --check # все боты на этом компьютере
|
|
341
182
|
```
|
|
342
183
|
|
|
343
|
-
|
|
184
|
+
- **Полный Bot API.** Каждый метод официальной схемы — `max <бот> bot api <операция>`: параметры —
|
|
185
|
+
флаги, тело — JSON, который сверяется со схемой до отправки.
|
|
186
|
+
- **Сообщения и чаты.** Чат называют по номеру, по названию, если бот его видел, или человека как
|
|
187
|
+
`user:<номер>`. Файлы, участники, комментарии, кнопки, меню команд, вебхуки.
|
|
188
|
+
- **Модерация.** `bot chats rules` и `bot chats moderate` удаляют спам и людей по вашим правилам.
|
|
189
|
+
- **Копия переписки бота.** `bot contacts show`, `bot search messages --from`,
|
|
190
|
+
`bot messages between` — без запросов к MAX.
|
|
191
|
+
- **Бот не напишет лишнего.** Свой список чатов для записи, журнал отправленного без текста,
|
|
192
|
+
`permissions` и MCP-сервер `max <бот> bot mcp`. Токен — в системном хранилище паролей, отдельно от вашего.
|
|
344
193
|
|
|
345
|
-
|
|
346
|
-
max inbox # непрочитанное во всех чатах, ничего не отмечая
|
|
347
|
-
max messages list "Иван Петров" --limit 20
|
|
348
|
-
max messages send "Иван Петров" "Созвонимся в 15:00?" --reply-to <id>
|
|
349
|
-
max reactions add "Иван Петров" <id> 👍
|
|
350
|
-
max messages send 0 "Позвонить маме" --at-time 2h # напоминание себе в «Избранное» через два часа
|
|
351
|
-
max review --since-time 1d # вся переписка за сутки: кто кому что обещал
|
|
352
|
-
```
|
|
194
|
+
Подробнее: [бот MAX](https://github.com/WireCatLabs/max-cli/blob/main/docs/bot.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/bot)).
|
|
353
195
|
|
|
354
|
-
|
|
196
|
+
## Группы, которые вы ведёте
|
|
355
197
|
|
|
356
198
|
```sh
|
|
357
|
-
max chats create "Поход" "Аня" "Борис" # создать и позвать людей
|
|
358
|
-
max chats admins add "Поход" "Аня" --can pin,members
|
|
359
|
-
max chats link reset "Поход" # старая ссылка-приглашение перестаёт работать
|
|
360
|
-
max polls create "Поход" "Когда едем?" "Суббота" "Воскресенье"
|
|
361
199
|
max review --chat "Поход" --unanswered # вопросы, на которые сутки никто не ответил
|
|
362
|
-
max chats
|
|
200
|
+
max chats events "Поход" # кто вступил и вышел
|
|
201
|
+
max chats members list "Поход" --all # все участники: когда заведён аккаунт
|
|
202
|
+
max chats rules set "Поход" invites delete # приглашения в чужие чаты — удалять
|
|
203
|
+
max chats moderate "Поход" --dry-run # что нарушает правила — без действий
|
|
363
204
|
```
|
|
364
205
|
|
|
365
|
-
|
|
206
|
+
Проверка сверяет новое в группе с вашими правилами: заблокированные люди, приглашения, ссылки,
|
|
207
|
+
пересланное, флуд, совсем новые аккаунты. По умолчанию она только отмечает. Для каждого действия вы
|
|
208
|
+
решаете сами: никогда, только с флагом, с вашим подтверждением или сразу. Не больше 10 действий за
|
|
209
|
+
раз, и ничего не следит за группой в фоне.
|
|
210
|
+
|
|
211
|
+
Подробнее: [группы](https://github.com/WireCatLabs/max-cli/blob/main/docs/groups.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/groups)), [рейтинги](https://github.com/WireCatLabs/max-cli/blob/main/docs/rankings.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/rankings)).
|
|
212
|
+
|
|
213
|
+
## Локальная копия и поиск
|
|
214
|
+
|
|
215
|
+
Всё прочитанное сохраняется на вашем компьютере. По копии работают поиск и чтение без интернета;
|
|
216
|
+
историю чата можно скачать глубже и выгрузить.
|
|
366
217
|
|
|
367
218
|
```sh
|
|
368
|
-
max search all "договор"
|
|
369
|
-
max search messages "договор" --chat "Проект Альфа" # только
|
|
370
|
-
max store fetch "Проект Альфа" --last 500
|
|
219
|
+
max search all "договор" # сообщения, почта и заметки сразу
|
|
220
|
+
max search messages "договор" --chat "Проект Альфа" # только один чат
|
|
221
|
+
max store fetch "Проект Альфа" --last 500 # последние 500 сообщений — в копию
|
|
371
222
|
max store export "Проект Альфа" --format markdown --output alfa.md
|
|
223
|
+
max chats list --offline # без подключения к MAX
|
|
372
224
|
```
|
|
373
225
|
|
|
374
|
-
|
|
226
|
+
Поиск понимает слова, людей, даты, файлы, ссылки и ваши метки; есть поиск по темам и сохранённые
|
|
227
|
+
запросы. Текст из сохранённых вложений ищется через `content:`.
|
|
375
228
|
|
|
376
|
-
|
|
377
|
-
[docs/commands.md](docs/commands.md) — эта страница собирается из самой программы, поэтому описать
|
|
378
|
-
версию, которой не существует, она не может.
|
|
229
|
+
Подробнее: [локальная копия](https://github.com/WireCatLabs/max-cli/blob/main/docs/archive.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/archive)), [поиск](https://github.com/WireCatLabs/max-cli/blob/main/docs/search.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/search)), [язык запросов](https://github.com/WireCatLabs/max-cli/blob/main/docs/query-language.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/query-language)), [поиск по темам](https://github.com/WireCatLabs/max-cli/blob/main/docs/topic-search.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/topic-search)), [вложения](https://github.com/WireCatLabs/max-cli/blob/main/docs/attachments.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/attachments)), [голосовые](https://github.com/WireCatLabs/max-cli/blob/main/docs/audio-recognition.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/audio-recognition)).
|
|
379
230
|
|
|
380
|
-
##
|
|
231
|
+
## Агенты: навык и MCP
|
|
381
232
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
какие команды есть, что агент делает только по вашей просьбе и как безопасно повторить отправку.
|
|
386
|
-
Его понимают **Claude Code**, **Codex**, **Cursor** и **Gemini CLI**. Навык ставится одной командой и всегда
|
|
387
|
-
той же версии, что и `max`:
|
|
233
|
+
**Навык** ставится одной командой и всегда той же версии, что и `max`: в `~/.claude/skills/max-cli/`
|
|
234
|
+
для Claude Code и в `~/.agents/skills/max-cli/` для Codex, Gemini CLI и Cursor. После обновления
|
|
235
|
+
`max` запустите установку ещё раз.
|
|
388
236
|
|
|
389
237
|
```sh
|
|
390
|
-
max skill show
|
|
391
|
-
max skill install --for all
|
|
238
|
+
max skill show # прочитать до входа
|
|
239
|
+
max skill install --for all # или --for claude, --for agents
|
|
392
240
|
```
|
|
393
241
|
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
242
|
+
**MCP-сервер** работает с тем же аккаунтом. Права профиля проверяются при каждом вызове; формы
|
|
243
|
+
подтверждения на сервере нет — подтверждение вызовов настраивается в приложении агента. Навык
|
|
244
|
+
доступен ресурсом `max://skill`.
|
|
245
|
+
|
|
246
|
+
```sh
|
|
247
|
+
max mcp doctor # проверить локальный MCP
|
|
248
|
+
max mcp --http --public-url https://<имя>.ts.net # для ChatGPT и Claude в браузере
|
|
249
|
+
max mcp --permission messages.send=ask # временно изменить право
|
|
250
|
+
```
|
|
398
251
|
|
|
399
|
-
|
|
400
|
-
[Gemini CLI](https://geminicli.com/docs/cli/skills/).
|
|
252
|
+
Подробнее: [MCP-сервер](https://github.com/WireCatLabs/max-cli/blob/main/docs/mcp.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/mcp)), [браузер](https://github.com/WireCatLabs/max-cli/blob/main/docs/remote.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/remote)), [внешние модели](https://github.com/WireCatLabs/max-cli/blob/main/docs/external-models.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/external-models)).
|
|
401
253
|
|
|
402
|
-
|
|
254
|
+
## Для скриптов
|
|
403
255
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
Серверных форм подтверждения нет; подтверждение вызовов зависит от настроек вашего ИИ-приложения.
|
|
407
|
-
Навык доступен ресурсом `max://skill`. Для браузерных клиентов есть
|
|
408
|
-
`max mcp --http --public-url https://<имя>.ts.net`: HTTPS-туннель и вход по коду.
|
|
409
|
-
`--permission ключ=уровень` временно переопределяет права процесса ([подключение](docs/remote.md)).
|
|
256
|
+
С `--json` команда печатает только данные; так же она работает, когда её вывод читает другая
|
|
257
|
+
программа (`max … | jq`). Любой список приходит в одной форме:
|
|
410
258
|
|
|
411
|
-
```
|
|
412
|
-
|
|
413
|
-
max mcp setup codex # Codex
|
|
414
|
-
max mcp setup claude-code # Claude Code
|
|
415
|
-
max mcp config # запись для Claude Desktop, Cursor и других — с полными путями
|
|
259
|
+
```json
|
|
260
|
+
{ "items": [ … ], "page": 1, "limit": 20, "hasMore": true }
|
|
416
261
|
```
|
|
417
262
|
|
|
418
|
-
|
|
419
|
-
|
|
263
|
+
Ошибка приходит одной строкой JSON в stderr, stdout остаётся пустым. Код завершения говорит, что
|
|
264
|
+
случилось: `4` — нужно войти, `5` — права не разрешают, `6` — чат или сообщение не найдены, `8` —
|
|
265
|
+
лимит, `9` — MAX не ответил вовремя, `14` — неизвестно, ушло ли сообщение (повторять только с тем же
|
|
266
|
+
`--send-id`). Частичный результат может прийти с кодом `0`: проверьте поле `complete`.
|
|
420
267
|
|
|
421
|
-
|
|
268
|
+
Подробнее: [контракт](https://github.com/WireCatLabs/max-cli/blob/main/docs/cli-contract.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/cli-contract)), [все команды и коды](https://github.com/WireCatLabs/max-cli/blob/main/docs/commands.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/commands)).
|
|
269
|
+
|
|
270
|
+
## Вход и профили
|
|
422
271
|
|
|
423
272
|
```sh
|
|
424
|
-
max
|
|
273
|
+
max setup --agent codex # QR-код в терминале и навык Codex
|
|
274
|
+
max setup --method qr-chrome # QR через web.max.ru в браузере
|
|
275
|
+
max setup --method sms # номер телефона — в браузере
|
|
276
|
+
max setup --method token # готовый токен, скрытым вводом или через stdin
|
|
277
|
+
max session start qr # повторный вход, когда сессия истекла
|
|
425
278
|
```
|
|
426
279
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
список — чаты, сообщения, участники, всё у бота — приходит в одной форме:
|
|
280
|
+
Несколько аккаунтов — несколько профилей; профиль называется **первым словом**:
|
|
281
|
+
`max personal chats list`, или `export MAX_PROFILE=personal` на всю сессию оболочки.
|
|
430
282
|
|
|
431
|
-
|
|
432
|
-
{ "items": [ … ], "page": 1, "limit": 20, "hasMore": true }
|
|
433
|
-
```
|
|
283
|
+
Подробнее: [вход и сессии](https://github.com/WireCatLabs/max-cli/blob/main/docs/sessions.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/sessions)), [профили](https://github.com/WireCatLabs/max-cli/blob/main/docs/profiles.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/profiles)).
|
|
434
284
|
|
|
435
|
-
|
|
436
|
-
нельзя принять за пустой результат:
|
|
285
|
+
## Настройки и права
|
|
437
286
|
|
|
438
|
-
|
|
439
|
-
|
|
287
|
+
У каждого профиля свои настройки и права; без файла настроек действуют встроенные значения.
|
|
288
|
+
|
|
289
|
+
| Настройка | Что делает | По умолчанию |
|
|
290
|
+
|---|---|---|
|
|
291
|
+
| `permissions` | что можно: `deny`, `readonly`, `ask`, `allow` — для команды или группы команд | всё, кроме удаления и других необратимых действий: они спрашивают |
|
|
292
|
+
| `sendsPerHour` | сколько сообщений профиль отправит за час | `30` |
|
|
293
|
+
| `requestsPerMinute` | темп обращений к MAX | `20` |
|
|
294
|
+
| `catchUpMarksRead` | `inbox` и `review` отмечают показанное прочитанным | `false` |
|
|
295
|
+
| `limit` | сколько строк в списке | `20` |
|
|
296
|
+
|
|
297
|
+
```sh
|
|
298
|
+
max config set permissions.messages readonly # профиль только для чтения
|
|
299
|
+
max config set permissions.messages.send ask # спрашивать перед отправкой
|
|
440
300
|
```
|
|
441
301
|
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
302
|
+
Подробнее: [настройки](https://github.com/WireCatLabs/max-cli/blob/main/docs/configuration.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/configuration)), [права](https://github.com/WireCatLabs/max-cli/blob/main/docs/permissions.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/permissions)), [все ключи](https://github.com/WireCatLabs/max-cli/blob/main/docs/configuration-reference.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/configuration-reference)).
|
|
303
|
+
|
|
304
|
+
## Ограничения
|
|
445
305
|
|
|
446
|
-
|
|
306
|
+
`max` держит каждый профиль в одном темпе: первые 10 запросов идут сразу, дальше — 20 в минуту, и
|
|
307
|
+
две команды одновременно делят этот темп. Если MAX отвечает «слишком много запросов», `max`
|
|
308
|
+
останавливается и не повторяет запрос сам. Фоновый `max serve` держит одно подключение для всех
|
|
309
|
+
команд и сам останавливается, когда им 15 минут никто не пользуется.
|
|
310
|
+
|
|
311
|
+
Подробнее: [ограничения и ожидания](https://github.com/WireCatLabs/max-cli/blob/main/docs/limits.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/limits)).
|
|
447
312
|
|
|
448
313
|
## Безопасность
|
|
449
314
|
|
|
450
|
-
- Токен входа — в системном хранилище паролей, не в файле и не в
|
|
451
|
-
- Локальная копия
|
|
452
|
-
|
|
315
|
+
- Токен входа — в системном хранилище паролей, не в файле и не в истории команд.
|
|
316
|
+
- Локальная копия и служебные файлы доступны только вашему пользователю; от кражи диска защищает
|
|
317
|
+
шифрование диска целиком.
|
|
453
318
|
- Перед каждой отправкой, в том числе через фоновый сервер и MCP, `max` проверяет ограничения
|
|
454
319
|
профиля и пишет строку в журнал — без текста сообщения.
|
|
455
|
-
-
|
|
456
|
-
|
|
457
|
-
|
|
320
|
+
- `--file` не отправит известные файлы с учётными данными, папки `max` и хранилище.
|
|
321
|
+
- Чужой текст не управляет вашим терминалом: управляющие символы из имён и сообщений показываются
|
|
322
|
+
как текст.
|
|
458
323
|
- Ограничения защищают от агента, которого уговорило прочитанное сообщение, но не от агента,
|
|
459
|
-
который хочет их обойти:
|
|
460
|
-
|
|
324
|
+
который хочет их обойти: для этого нужна песочница или отдельный пользователь.
|
|
325
|
+
|
|
326
|
+
Подробнее: [безопасность](https://github.com/WireCatLabs/max-cli/blob/main/docs/security.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/security)).
|
|
327
|
+
|
|
328
|
+
## Когда не работает
|
|
329
|
+
|
|
330
|
+
```sh
|
|
331
|
+
max doctor # где лежат файлы и есть ли вход; к MAX не подключается
|
|
332
|
+
max chats list --trace # каждый запрос к MAX — без текстов, имён и токена
|
|
333
|
+
max runs list # неудачные и частичные запуски сохраняются сами
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
Запись `--trace` можно приложить к сообщению об ошибке.
|
|
461
337
|
|
|
462
|
-
|
|
463
|
-
[docs/security.md](docs/security.md).
|
|
338
|
+
Подробнее: [по симптому](https://github.com/WireCatLabs/max-cli/blob/main/docs/troubleshooting.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/troubleshooting)), [диагностика](https://github.com/WireCatLabs/max-cli/blob/main/docs/diagnostics.md) ([wirecat.dev](https://wirecat.dev/ru/docs/max/diagnostics)).
|
|
464
339
|
|
|
465
340
|
## Документация
|
|
466
341
|
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
- [docs/cli-
|
|
474
|
-
- [docs/
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
-
|
|
481
|
-
- [docs/security.md](docs/security.md) — что пишется на диск, а что никогда
|
|
482
|
-
- [docs/troubleshooting.md](docs/troubleshooting.md) — по симптому: что делать, когда не работает
|
|
483
|
-
- [docs/commands.md](docs/commands.md) — каждая команда и опция — **генерируется** из программы
|
|
484
|
-
- [docs/dev/protocol.md](docs/dev/protocol.md) — каждый опкод и откуда известна его форма — **генерируется**
|
|
485
|
-
- [docs/dev/ARCHITECTURE.md](docs/dev/ARCHITECTURE.md) — как это устроено и какие швы нельзя пересекать
|
|
486
|
-
- [docs/dev/BACKLOG.md](docs/dev/BACKLOG.md) — что осталось
|
|
487
|
-
|
|
488
|
-
Оглавление целиком — [docs/README.md](docs/README.md).
|
|
342
|
+
Каждая страница есть и на сайте — [wirecat.dev/ru/docs/max](https://wirecat.dev/ru/docs/max); ниже —
|
|
343
|
+
исходники в этом репозитории.
|
|
344
|
+
|
|
345
|
+
| Раздел | Страницы |
|
|
346
|
+
|---|---|
|
|
347
|
+
| Начало | [обзор и сравнение](https://github.com/WireCatLabs/max-cli/blob/main/docs/index.md) · [установка](https://github.com/WireCatLabs/max-cli/blob/main/docs/installation.md) |
|
|
348
|
+
| Как пользоваться | [личный аккаунт](https://github.com/WireCatLabs/max-cli/blob/main/docs/usage.md) · [вход и сессии](https://github.com/WireCatLabs/max-cli/blob/main/docs/sessions.md) · [локальная копия](https://github.com/WireCatLabs/max-cli/blob/main/docs/archive.md) · [поиск](https://github.com/WireCatLabs/max-cli/blob/main/docs/search.md) · [вложения](https://github.com/WireCatLabs/max-cli/blob/main/docs/attachments.md) · [голосовые](https://github.com/WireCatLabs/max-cli/blob/main/docs/audio-recognition.md) · [внешние модели](https://github.com/WireCatLabs/max-cli/blob/main/docs/external-models.md) · [рейтинги](https://github.com/WireCatLabs/max-cli/blob/main/docs/rankings.md) · [поиск по темам](https://github.com/WireCatLabs/max-cli/blob/main/docs/topic-search.md) · [язык запросов](https://github.com/WireCatLabs/max-cli/blob/main/docs/query-language.md) · [бот MAX](https://github.com/WireCatLabs/max-cli/blob/main/docs/bot.md) · [группы](https://github.com/WireCatLabs/max-cli/blob/main/docs/groups.md) · [один человек](https://github.com/WireCatLabs/max-cli/blob/main/docs/people.md) · [ответы](https://github.com/WireCatLabs/max-cli/blob/main/docs/replies.md) · [MCP-сервер](https://github.com/WireCatLabs/max-cli/blob/main/docs/mcp.md) · [браузер](https://github.com/WireCatLabs/max-cli/blob/main/docs/remote.md) · [рецепты](https://github.com/WireCatLabs/max-cli/blob/main/docs/recipes.md) |
|
|
349
|
+
| Справочник | [все команды](https://github.com/WireCatLabs/max-cli/blob/main/docs/commands.md) · [настройки](https://github.com/WireCatLabs/max-cli/blob/main/docs/configuration.md) · [права](https://github.com/WireCatLabs/max-cli/blob/main/docs/permissions.md) · [профили](https://github.com/WireCatLabs/max-cli/blob/main/docs/profiles.md) · [все ключи настроек](https://github.com/WireCatLabs/max-cli/blob/main/docs/configuration-reference.md) · [контракт для скриптов](https://github.com/WireCatLabs/max-cli/blob/main/docs/cli-contract.md) · [ограничения](https://github.com/WireCatLabs/max-cli/blob/main/docs/limits.md) |
|
|
350
|
+
| Если что-то не так | [диагностика](https://github.com/WireCatLabs/max-cli/blob/main/docs/diagnostics.md) · [когда не работает](https://github.com/WireCatLabs/max-cli/blob/main/docs/troubleshooting.md) · [безопасность](https://github.com/WireCatLabs/max-cli/blob/main/docs/security.md) |
|
|
351
|
+
| Проект | [дорожная карта](https://github.com/WireCatLabs/max-cli/blob/main/docs/roadmap.md) |
|
|
352
|
+
| Изменения | [CHANGELOG.md](https://github.com/WireCatLabs/max-cli/blob/main/CHANGELOG.md) |
|
|
353
|
+
|
|
354
|
+
Для разработчиков: [архитектура](https://github.com/WireCatLabs/max-cli/blob/main/docs/dev/ARCHITECTURE.md), [проверки](https://github.com/WireCatLabs/max-cli/blob/main/docs/dev/TESTING.md),
|
|
355
|
+
[протокол](https://github.com/WireCatLabs/max-cli/blob/main/docs/dev/protocol.md) (генерируется), [что осталось](https://github.com/WireCatLabs/max-cli/blob/main/docs/dev/BACKLOG.md).
|
|
489
356
|
|
|
490
357
|
## Разработка
|
|
491
358
|
|
|
492
359
|
```sh
|
|
493
360
|
pnpm install
|
|
494
361
|
pnpm lint && pnpm typecheck && pnpm test
|
|
495
|
-
pnpm build && pnpm smoke:bun # собранная команда под
|
|
362
|
+
pnpm build && pnpm smoke:bun # собранная команда под Bun
|
|
496
363
|
pnpm generate # переписать сгенерированные файлы
|
|
497
364
|
```
|
|
498
365
|
|
|
499
|
-
Протокол MAX неофициальный и разобран обратной
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
Половина, не имеющая отношения к MAX — потоки вывода, рендерер, коды ошибок, хранилище паролей, часы, —
|
|
504
|
-
вынесена в [`@wirecat/cli-core`](https://github.com/WireCatLabs/cli-core) и общая с `braze-cli`.
|
|
505
|
-
|
|
506
|
-
## Дорожная карта
|
|
507
|
-
|
|
508
|
-
[docs/roadmap.md](docs/roadmap.md).
|
|
509
|
-
|
|
510
|
-
## Лицензия
|
|
366
|
+
Протокол MAX неофициальный и разобран обратной инженерией. Каждый опкод объявлен один раз в
|
|
367
|
+
`src/spec/`, а реестр, типизированный клиент и `docs/dev/protocol.md` из него генерируются; CI
|
|
368
|
+
падает, если дерево устарело. Общая часть — потоки вывода, коды ошибок, хранилище паролей — в
|
|
369
|
+
[`@wirecat/cli-core`](https://github.com/WireCatLabs/cli-base).
|
|
511
370
|
|
|
512
|
-
|
|
371
|
+
## Часть WireCat
|
|
513
372
|
|
|
514
|
-
|
|
373
|
+
max-cli — часть [WireCat](https://wirecat.dev/ru): открытого слоя контекста для ИИ-агентов, который
|
|
374
|
+
хранит данные на вашем компьютере. Начните с MAX. Добавьте Telegram, почту и заметки, когда
|
|
375
|
+
понадобится. Ваш контекст. Любой агент.
|
|
515
376
|
|
|
516
|
-
|
|
517
|
-
[issues](https://github.com/WireCatLabs/max-cli/issues). Как устроен код и как его проверять —
|
|
518
|
-
[docs/dev/ARCHITECTURE.md](docs/dev/ARCHITECTURE.md) и [docs/dev/TESTING.md](docs/dev/TESTING.md).
|
|
377
|
+
## Участие и лицензия
|
|
519
378
|
|
|
520
|
-
|
|
379
|
+
Пулл-реквесты, сообщения об ошибках и предложения —
|
|
380
|
+
[issues](https://github.com/WireCatLabs/max-cli/issues).
|
|
521
381
|
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
`contacts notes add <person> --file <path>`, затем `list`, `show`, `edit --revision <n>` и `remove`.
|
|
525
|
-
`contacts show --with-notes` включает заметки явно; `contacts list --search-notes <text>` ищет в них.
|
|
526
|
-
Заметка о контакте видна в каждом профиле, который видит этот контакт; псевдоним — только в своём.
|
|
527
|
-
Обновление контактов сохраняет заметки и псевдонимы. Связывание людей не объединяет эти данные.
|
|
382
|
+
Делаем автоматизацию и инструменты под задачу: интеграции с MAX и другими мессенджерами,
|
|
383
|
+
ИИ-агентов, внутренние сервисы — [info@neirox.ai](mailto:info@neirox.ai).
|
|
528
384
|
|
|
529
|
-
|
|
530
|
-
`metadata get --chat <id>` читает сохранённые данные. `tags auto --chat <id> --dry-run`
|
|
531
|
-
показывает метки по ключевым словам. Для актуального описания добавьте `--refresh-metadata`
|
|
532
|
-
без `--dry-run`. Команда обрабатывает не более 500 чатов за запуск, по умолчанию 50.
|
|
533
|
-
Автоматические метки не удаляют ручные; `tags list|remove --source auto` выбирает только
|
|
534
|
-
автоматические метки. Текст сообщений и внешние модели при классификации не используются.
|
|
385
|
+
Apache License 2.0 — [LICENSE](LICENSE).
|
package/dist/bin/max.js
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { migrateFolders } from "@wirecat/cli-messaging/background";
|
|
2
3
|
import { ensureSqlite } from "@wirecat/cli-messaging/sqlite-runtime";
|
|
4
|
+
import { MAX_APP } from "../app.js";
|
|
3
5
|
// `max chats --json | head` closes the pipe while we are still writing, and an unhandled EPIPE
|
|
4
6
|
// makes Node print a stack trace over the output of the command that just worked. A reader that
|
|
5
7
|
// stopped reading is not an error: leave quietly, as every other Unix tool does.
|
|
@@ -13,6 +15,8 @@ for (const stream of [process.stdout, process.stderr]) {
|
|
|
13
15
|
throw error;
|
|
14
16
|
});
|
|
15
17
|
}
|
|
18
|
+
// Before anything resolves a path: a write into a new folder first would strand the old one.
|
|
19
|
+
migrateFolders(MAX_APP);
|
|
16
20
|
await ensureSqlite();
|
|
17
21
|
// A static import would load the whole program, and its SQLite, before ensureSqlite could swap it.
|
|
18
22
|
const { run } = await import("../program.js");
|
package/dist/bin/max.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max.js","sourceRoot":"","sources":["../../src/bin/max.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAA;
|
|
1
|
+
{"version":3,"file":"max.js","sourceRoot":"","sources":["../../src/bin/max.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAA;AACpE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,+FAA+F;AAC/F,gGAAgG;AAChG,iFAAiF;AACjF,KAAK,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IACtD,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;QAClD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACxD,OAAM;QACR,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,6FAA6F;AAC7F,cAAc,CAAC,OAAO,CAAC,CAAA;AACvB,MAAM,YAAY,EAAE,CAAA;AACpB,mGAAmG;AACnG,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAA;AAC7C,OAAO,CAAC,QAAQ,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.47.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const VERSION = "0.
|
|
1
|
+
export const VERSION = "0.47.0";
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wirecat/max-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.47.0",
|
|
4
4
|
"description": "MAX Messenger bots through the official Bot API, and a personal MAX account, from the terminal — built for agents and scripts",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": "Viacheslav Ptsarev",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"LICENSE"
|
|
25
25
|
],
|
|
26
26
|
"scripts": {
|
|
27
|
-
"build": "tsc --build",
|
|
27
|
+
"build": "tsc --build --force",
|
|
28
28
|
"generate": "node --experimental-strip-types scripts/bot/generate.ts && pnpm build && node --experimental-strip-types scripts/generate.ts && node --experimental-strip-types scripts/commands.ts",
|
|
29
29
|
"bot:spec:sync": "node --experimental-strip-types scripts/bot/sync-spec.ts",
|
|
30
30
|
"bot:generate": "node --experimental-strip-types scripts/bot/generate.ts",
|
|
@@ -99,8 +99,8 @@
|
|
|
99
99
|
"@modelcontextprotocol/server": "2.1.0",
|
|
100
100
|
"@msgpack/msgpack": "3.1.3",
|
|
101
101
|
"@valibot/to-json-schema": "1.8.0",
|
|
102
|
-
"@wirecat/cli-core": "0.
|
|
103
|
-
"@wirecat/cli-messaging": "0.
|
|
102
|
+
"@wirecat/cli-core": "0.20.0",
|
|
103
|
+
"@wirecat/cli-messaging": "0.248.0",
|
|
104
104
|
"commander": "15.0.0",
|
|
105
105
|
"lossless-json": "4.3.1",
|
|
106
106
|
"ogg-opus-decoder": "1.7.5",
|