micro-models-agent 0.2.53 → 0.2.55

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.
Files changed (82) hide show
  1. package/README.md +354 -354
  2. package/dist/agent/loop.d.ts.map +1 -1
  3. package/dist/agent/loop.js +12 -6
  4. package/dist/agent/loop.js.map +1 -1
  5. package/dist/config/config.d.ts +13 -0
  6. package/dist/config/config.d.ts.map +1 -1
  7. package/dist/config/config.js +34 -0
  8. package/dist/config/config.js.map +1 -1
  9. package/dist/config/types.d.ts +19 -0
  10. package/dist/config/types.d.ts.map +1 -1
  11. package/dist/llm/openai-compat.d.ts.map +1 -1
  12. package/dist/llm/openai-compat.js +50 -2
  13. package/dist/llm/openai-compat.js.map +1 -1
  14. package/dist/skills/builtin/agent-test/SKILL.md +68 -68
  15. package/dist/skills/builtin/grill-me/SKILL.md +46 -46
  16. package/dist/tools/bash.d.ts.map +1 -1
  17. package/dist/tools/bash.js +68 -9
  18. package/dist/tools/bash.js.map +1 -1
  19. package/dist/tools/subagent.d.ts +1 -1
  20. package/dist/tools/subagent.d.ts.map +1 -1
  21. package/dist/tools/subagent.js +116 -9
  22. package/dist/tools/subagent.js.map +1 -1
  23. package/dist/ui/ink/components/App.js.map +1 -1
  24. package/dist/ui/ink/components/PromptInput.js.map +1 -1
  25. package/dist/ui/ink/components/SelectInput.js.map +1 -1
  26. package/package.json +4 -4
  27. package/dist/async-map.d.ts +0 -6
  28. package/dist/async-map.d.ts.map +0 -1
  29. package/dist/async-map.js +0 -16
  30. package/dist/async-map.js.map +0 -1
  31. package/dist/blog-api/types/index.d.ts +0 -2
  32. package/dist/blog-api/types/index.d.ts.map +0 -1
  33. package/dist/blog-api/types/index.js +0 -2
  34. package/dist/blog-api/types/index.js.map +0 -1
  35. package/dist/examples.d.ts +0 -22
  36. package/dist/examples.d.ts.map +0 -1
  37. package/dist/examples.js +0 -45
  38. package/dist/examples.js.map +0 -1
  39. package/dist/fibonacci.d.ts +0 -19
  40. package/dist/fibonacci.d.ts.map +0 -1
  41. package/dist/fibonacci.js +0 -61
  42. package/dist/fibonacci.js.map +0 -1
  43. package/dist/repl.d.ts +0 -5
  44. package/dist/repl.d.ts.map +0 -1
  45. package/dist/repl.js +0 -472
  46. package/dist/repl.js.map +0 -1
  47. package/dist/sort.d.ts +0 -8
  48. package/dist/sort.d.ts.map +0 -1
  49. package/dist/sort.js +0 -36
  50. package/dist/sort.js.map +0 -1
  51. package/dist/stack.d.ts +0 -9
  52. package/dist/stack.d.ts.map +0 -1
  53. package/dist/stack.js +0 -22
  54. package/dist/stack.js.map +0 -1
  55. package/dist/test-run.d.ts +0 -2
  56. package/dist/test-run.d.ts.map +0 -1
  57. package/dist/test-run.js +0 -13
  58. package/dist/test-run.js.map +0 -1
  59. package/dist/ui/components/diff-view.d.ts +0 -8
  60. package/dist/ui/components/diff-view.d.ts.map +0 -1
  61. package/dist/ui/components/diff-view.js +0 -25
  62. package/dist/ui/components/diff-view.js.map +0 -1
  63. package/dist/ui/double-press.d.ts +0 -9
  64. package/dist/ui/double-press.d.ts.map +0 -1
  65. package/dist/ui/double-press.js +0 -18
  66. package/dist/ui/double-press.js.map +0 -1
  67. package/dist/ui/opentui-renderer.d.ts +0 -53
  68. package/dist/ui/opentui-renderer.d.ts.map +0 -1
  69. package/dist/ui/opentui-renderer.js +0 -463
  70. package/dist/ui/opentui-renderer.js.map +0 -1
  71. package/dist/utils/memoize.d.ts +0 -14
  72. package/dist/utils/memoize.d.ts.map +0 -1
  73. package/dist/utils/memoize.js +0 -51
  74. package/dist/utils/memoize.js.map +0 -1
  75. package/dist/utils/types.d.ts +0 -6
  76. package/dist/utils/types.d.ts.map +0 -1
  77. package/dist/utils/types.js +0 -2
  78. package/dist/utils/types.js.map +0 -1
  79. package/dist/utils.d.ts +0 -22
  80. package/dist/utils.d.ts.map +0 -1
  81. package/dist/utils.js +0 -81
  82. package/dist/utils.js.map +0 -1
package/README.md CHANGED
@@ -1,354 +1,354 @@
1
- # MMA — Micro Models Agent
2
-
3
- LLM-агент, который работает на маленьких моделях (Qwen3.5-9B, 32K-64K контекст). Пишет код, редактирует файлы, ищет баги, выполняет bash-команды, читает документацию — и всё это на моделях, которые запускаются на обычном ноутбуке без GPU.
4
-
5
- **Чем MMA отличается от больших агентов (OpenCode, Claude Code, Cursor):**
6
-
7
- - **Лёгкий**: не требует GPT-4 или Claude Sonnet. Работает на Qwen3.5-9B, DeepSeek-Coder и других opensource-моделях. Всё локально.
8
- - **ReAct-цикл**: модель сама планирует и вызывает инструменты через `<tool_call>` — читает/пишет/редактирует файлы, ищет по проекту, выполняет bash.
9
- - **Навыки (Skills)**: подгружаемые markdown-инструкции для специализированных задач (Docker, CSS, auth, и т.д.).
10
- - **Индексация кода**: AST-индекс символов + карта проекта (project map) для навигации по любой кодовой базе.
11
- - **Память**: долговременная память агента — запоминает факты между сессиями.
12
- - **Веб-поиск**: может искать информацию в интернете.
13
- - **Планирование**: создаёт и утверждает планы через PLAN.md перед выполнением.
14
- - **Сессии**: сохранение, восстановление, список сессий.
15
- - **MCP интеграция**: поддержка Model Context Protocol для внешних инструментов.
16
- - **Вопросы пользователю**: может уточнять детали задачи, запрашивать одобрение.
17
- - **Синтаксис @file**: загрузка файлов/директорий прямо в промпт.
18
- - **Стилизация**: сменные темы оформления.
19
- - **Мастер первого запуска**: интерактивная настройка провайдера и модели.
20
- - **12 файловых инструментов**: read, write, edit, list, create, delete, copy, move, info, glob, grep, tree.
21
- - **Простая установка**: `npm install -g micro-models-agent` и готово.
22
-
23
- Поддерживает OpenAI-совместимые API: LM Studio, Ollama, vLLM, Together AI и другие.
24
-
25
- ## Установка
26
-
27
- ### Глобально через npm (рекомендуется)
28
-
29
- ```bash
30
- npm install -g micro-models-agent
31
-
32
- # Проверка:
33
- mma --version
34
- ```
35
-
36
- ### Из исходников
37
-
38
- ```bash
39
- git clone <repo>
40
- cd mma
41
- npm install
42
- npm run build
43
- npm link
44
- ```
45
-
46
- ## Удаление
47
-
48
- ```bash
49
- npm uninstall -g micro-models-agent # удалить пакет
50
- rm -rf ~/.mma # удалить конфиг, кэш, логи, сессии
51
- ```
52
-
53
- > `~/.mma/` можно не удалять — данные останутся на случай повторной установки.
54
-
55
- ## Быстрый старт
56
-
57
- ### Интерактивный режим (REPL) — самый простой способ
58
-
59
- ```bash
60
- # Установите
61
- npm install -g micro-models-agent
62
-
63
- # И просто запустите
64
- mma
65
- ```
66
-
67
- > **Совет:** перед первым запуском запустите LM Studio → вкладка Local Server → Start Server → загрузите модель (например, [Qwen 3.5-9B](https://huggingface.co/Qwen/Qwen3.5-9B-Instruct-GGUF)). Мастер сам найдёт её и настроит.
68
-
69
- **При первом запуске** появится мастер настройки:
70
- 1. Выберите провайдера (LM Studio, Ollama или Remote API)
71
- 2. Мастер найдёт доступные модели и протестирует соединение
72
- 3. Готово — вы в REPL, можно писать запросы
73
-
74
- **При повторных запусках** REPL открывается сразу.
75
-
76
- В REPL работаете как в чате: пишете задачу, агент думает и выполняет. Доступны служебные команды:
77
-
78
- | Команда | Описание |
79
- |---------|----------|
80
- | `/help` | Справка |
81
- | `/read <file>` | Показать файл |
82
- | `/write <file>` | Записать файл |
83
- | `/bash <cmd>` | Выполнить команду |
84
- | `/clear` | Очистить контекст |
85
- | `/exit` | Выход |
86
-
87
- ### One-shot (быстрый запрос)
88
-
89
- ```bash
90
- mma "Создай React-компонент для формы входа"
91
- ```
92
-
93
- Можно передать провайдера и модель флагами:
94
-
95
- ```bash
96
- mma --provider ollama --model qwen3.5-9b "Напиши Dockerfile"
97
- ```
98
-
99
- ### С пайпом (stdin)
100
-
101
- ```bash
102
- cat package.json | mma "Опиши зависимости"
103
- ```
104
-
105
- ## Настройка провайдеров и моделей
106
-
107
- По умолчанию конфиг настроен на LM Studio (`localhost:1234`). Если нужно добавить другой сервер:
108
-
109
- ```bash
110
- # Добавить провайдера
111
- mma provider add ollama http://localhost:11434/v1
112
-
113
- # Переключиться на него
114
- mma provider use ollama
115
-
116
- # Добавить модель к активному провайдеру
117
- mma model add qwen3.5-9b qwen3.5-9b-instruct 32768
118
-
119
- # Выбрать модель (model add не активирует автоматически)
120
- mma model use qwen3.5-9b
121
- ```
122
-
123
- ### Все команды управления
124
-
125
- ```bash
126
- # Провайдеры
127
- mma provider list # Список провайдеров
128
- mma provider use ollama # Переключиться на провайдера
129
- mma provider add <имя> <url> # Добавить провайдера
130
- mma provider remove <имя> # Удалить провайдера
131
-
132
- # Модели
133
- mma model list # Список моделей активного провайдера
134
- mma model use <имя> # Переключиться на модель
135
- mma model current # Показать активную модель
136
- mma model add <имя> <id> <ctx> # Добавить модель
137
- mma model remove <имя> # Удалить модель
138
- mma model params [имя] # Параметры модели
139
- mma model set <имя> k=v # Изменить параметр (temperature=0.5)
140
-
141
- # Конфиг
142
- mma config show # Показать весь конфиг
143
- mma config reset # Сбросить настройки
144
- mma config thinking [on/off] # Включить/выключить скрытие размышлений модели
145
-
146
- # Обновления
147
- mma update # Проверить наличие обновлений
148
- mma update check # Проверить версию
149
- mma update install # Скачать и установить обновление
150
- ```
151
-
152
- ### Параметры моделей
153
-
154
- По умолчанию:
155
- - `temperature`: 0.7
156
- - `max_tokens`: 4096
157
- - `top_p`: 0.9
158
-
159
- Изменить:
160
-
161
- ```bash
162
- mma model set qwen3.5-9b temperature=0.3 max_tokens=8192
163
- mma model set qwen3.5-9b seed=42 # для воспроизводимости
164
- mma model set qwen3.5-9b seed=null # сбросить seed
165
- ```
166
-
167
- ## Конфигурация
168
-
169
- Конфиг хранится в `~/.mma/config.json`.
170
-
171
- ```json
172
- {
173
- "providers": {
174
- "lmstudio": {
175
- "type": "openai-compat",
176
- "url": "http://localhost:1234/v1",
177
- "apiKey": null,
178
- "models": {
179
- "qwen3.5-9b": {
180
- "model": "qwen3.5-9b-instruct",
181
- "contextWindow": 32768,
182
- "params": {
183
- "temperature": 0.7,
184
- "max_tokens": 4096
185
- }
186
- }
187
- }
188
- }
189
- },
190
- "active": {
191
- "provider": "lmstudio",
192
- "model": "qwen3.5-9b"
193
- },
194
- "agent": {
195
- "maxSteps": 50,
196
- "autoCompact": true,
197
- "compactThreshold": 0.85,
198
- "toolTimeout": 120,
199
- "maxOutputLength": 2000
200
- }
201
- }
202
- ```
203
-
204
- Можно также создать `.mmrc` в корне проекта — он смержится поверх глобального конфига.
205
-
206
- ### Переменные окружения
207
-
208
- | Переменная | Описание |
209
- |-----------|----------|
210
- | `MMA_PROVIDER` | Провайдер по умолчанию |
211
- | `MMA_MODEL` | Модель по умолчанию |
212
- | `MMA_STDIN=1` | Принудительное чтение stdin |
213
-
214
- ## Режимы запуска
215
-
216
- ### One-shot
217
-
218
- ```bash
219
- mma "Объясни этот код: function fib(n) { return n < 2 ? n : fib(n-1) + fib(n-2); }"
220
- ```
221
-
222
- ### Stdin (пайп)
223
-
224
- ```bash
225
- cat main.ts | mma "Найди потенциальные баги"
226
- curl -s https://api.example.com/data | mma "Проанализируй JSON"
227
- ```
228
-
229
- ### REPL
230
-
231
- ```bash
232
- mma
233
- ```
234
-
235
- В REPL доступны команды:
236
-
237
- | Команда | Описание |
238
- |---------|----------|
239
- | `/read <file>` | Показать файл с нумерацией строк |
240
- | `/write <file>` | Записать файл (до EOF) |
241
- | `/edit <file> <n>` | Заменить строку N в файле |
242
- | `/find <pattern>` | Поиск файлов по glob |
243
- | `/search <pattern>` | Поиск содержимого |
244
- | `/bash <cmd>` | Выполнить shell-команду |
245
- | `/git <args>` | Git-операции |
246
- | `/memory` | Показать память |
247
- | `/memory add <type> <text>` | Добавить в память |
248
- | `/memory search <query>` | Поиск в памяти |
249
- | `/skill` | Список навыков |
250
- | `/sessions` | Список сессий |
251
- | `/resume <id>` | Восстановить сессию |
252
- | `/save [name]` | Сохранить сессию |
253
- | `/clear` | Очистить контекст |
254
- | `/help` | Справка |
255
- | `/exit` | Выход |
256
-
257
- ## Синтаксис `@file`
258
-
259
- Загружает файлы в контекст агента:
260
-
261
- ```bash
262
- mma "@src/index.ts -- объясни эту функцию"
263
-
264
- # Несколько файлов
265
- mma "@src/auth/login.ts @src/auth/jwt.ts -- сравни"
266
-
267
- # Диапазон строк
268
- mma "@src/index.ts:10-30 -- что здесь происходит?"
269
-
270
- # Вся директория
271
- mma "@src/auth/ -- покажи структуру модуля"
272
- ```
273
-
274
- ## Навыки (Skills)
275
-
276
- Навыки — это Markdown-файлы с инструкциями для модели. Загружаются из:
277
- - `~/.mma/skills/<name>/SKILL.md`
278
- - `.agents/skills/<name>/SKILL.md`
279
- - `.claude/skills/<name>/SKILL.md`
280
-
281
- ```bash
282
- # Использовать навык
283
- mma "@docker -- помоги контейнеризовать приложение"
284
- ```
285
-
286
- ## Агент: как это работает
287
-
288
- 1. Вы даёте задачу (prompt)
289
- 2. Модель генерирует план и вызывает инструменты через `<tool_call>`
290
- 3. Агент выполняет инструменты и возвращает результат модели
291
- 4. Модель анализирует результат и решает, что делать дальше
292
- 5. Цикл продолжается до завершения задачи (макс. 50 шагов)
293
-
294
- ### Инструменты агента
295
-
296
- | Инструмент | Описание |
297
- |-----------|----------|
298
- | `read_file` | Чтение файла с нумерацией строк |
299
- | `write_file` | Атомарная запись/создание файла |
300
- | `edit_file` | Find & replace (точное совпадение) |
301
- | `list_dir` | Список директории |
302
- | `create_dir` | Рекурсивное создание директории |
303
- | `delete_file` | Удаление файла/директории |
304
- | `copy_file` | Копирование |
305
- | `move_file` | Перемещение/переименование |
306
- | `file_info` | Метаданные файла |
307
- | `glob_search` | Поиск по паттерну |
308
- | `grep_search` | Поиск по содержимому (regex) |
309
- | `tree` | Дерево директорий |
310
- | `bash` | Выполнение команд (npm, git, docker) |
311
-
312
- ## Индексация проекта
313
-
314
- Агент автоматически строит карту проекта и индекс кода:
315
-
316
- ```bash
317
- # Вручную перестроить
318
- /build index rebuild
319
- /build project-map
320
- ```
321
-
322
- ## Работа с сессиями
323
-
324
- ```bash
325
- # Автосохранение при выходе
326
- /save my-session-name
327
-
328
- # Список сессий
329
- /sessions
330
-
331
- # Восстановить
332
- /resume my-session-name
333
- ```
334
-
335
- ## Разработка
336
-
337
- ```bash
338
- npm run build # Компиляция TypeScript
339
- npm run dev # Watch-режим
340
- npm test # Тесты
341
- npm run test:all # Все тесты
342
- npm run test:watch # vitest watch
343
- ```
344
-
345
- ### Публикация новой версии
346
-
347
- ```bash
348
- npm version patch # или minor, major
349
- npm publish
350
- ```
351
-
352
- ## Лицензия
353
-
354
- MIT
1
+ # MMA — Micro Models Agent
2
+
3
+ LLM-агент, который работает на маленьких моделях (Qwen3.5-9B, 32K-64K контекст). Пишет код, редактирует файлы, ищет баги, выполняет bash-команды, читает документацию — и всё это на моделях, которые запускаются на обычном ноутбуке без GPU.
4
+
5
+ **Чем MMA отличается от больших агентов (OpenCode, Claude Code, Cursor):**
6
+
7
+ - **Лёгкий**: не требует GPT-4 или Claude Sonnet. Работает на Qwen3.5-9B, DeepSeek-Coder и других opensource-моделях. Всё локально.
8
+ - **ReAct-цикл**: модель сама планирует и вызывает инструменты через `<tool_call>` — читает/пишет/редактирует файлы, ищет по проекту, выполняет bash.
9
+ - **Навыки (Skills)**: подгружаемые markdown-инструкции для специализированных задач (Docker, CSS, auth, и т.д.).
10
+ - **Индексация кода**: AST-индекс символов + карта проекта (project map) для навигации по любой кодовой базе.
11
+ - **Память**: долговременная память агента — запоминает факты между сессиями.
12
+ - **Веб-поиск**: может искать информацию в интернете.
13
+ - **Планирование**: создаёт и утверждает планы через PLAN.md перед выполнением.
14
+ - **Сессии**: сохранение, восстановление, список сессий.
15
+ - **MCP интеграция**: поддержка Model Context Protocol для внешних инструментов.
16
+ - **Вопросы пользователю**: может уточнять детали задачи, запрашивать одобрение.
17
+ - **Синтаксис @file**: загрузка файлов/директорий прямо в промпт.
18
+ - **Стилизация**: сменные темы оформления.
19
+ - **Мастер первого запуска**: интерактивная настройка провайдера и модели.
20
+ - **12 файловых инструментов**: read, write, edit, list, create, delete, copy, move, info, glob, grep, tree.
21
+ - **Простая установка**: `npm install -g micro-models-agent` и готово.
22
+
23
+ Поддерживает OpenAI-совместимые API: LM Studio, Ollama, vLLM, Together AI и другие.
24
+
25
+ ## Установка
26
+
27
+ ### Глобально через npm (рекомендуется)
28
+
29
+ ```bash
30
+ npm install -g micro-models-agent
31
+
32
+ # Проверка:
33
+ mma --version
34
+ ```
35
+
36
+ ### Из исходников
37
+
38
+ ```bash
39
+ git clone <repo>
40
+ cd mma
41
+ npm install
42
+ npm run build
43
+ npm link
44
+ ```
45
+
46
+ ## Удаление
47
+
48
+ ```bash
49
+ npm uninstall -g micro-models-agent # удалить пакет
50
+ rm -rf ~/.mma # удалить конфиг, кэш, логи, сессии
51
+ ```
52
+
53
+ > `~/.mma/` можно не удалять — данные останутся на случай повторной установки.
54
+
55
+ ## Быстрый старт
56
+
57
+ ### Интерактивный режим (REPL) — самый простой способ
58
+
59
+ ```bash
60
+ # Установите
61
+ npm install -g micro-models-agent
62
+
63
+ # И просто запустите
64
+ mma
65
+ ```
66
+
67
+ > **Совет:** перед первым запуском запустите LM Studio → вкладка Local Server → Start Server → загрузите модель (например, [Qwen 3.5-9B](https://huggingface.co/Qwen/Qwen3.5-9B-Instruct-GGUF)). Мастер сам найдёт её и настроит.
68
+
69
+ **При первом запуске** появится мастер настройки:
70
+ 1. Выберите провайдера (LM Studio, Ollama или Remote API)
71
+ 2. Мастер найдёт доступные модели и протестирует соединение
72
+ 3. Готово — вы в REPL, можно писать запросы
73
+
74
+ **При повторных запусках** REPL открывается сразу.
75
+
76
+ В REPL работаете как в чате: пишете задачу, агент думает и выполняет. Доступны служебные команды:
77
+
78
+ | Команда | Описание |
79
+ |---------|----------|
80
+ | `/help` | Справка |
81
+ | `/read <file>` | Показать файл |
82
+ | `/write <file>` | Записать файл |
83
+ | `/bash <cmd>` | Выполнить команду |
84
+ | `/clear` | Очистить контекст |
85
+ | `/exit` | Выход |
86
+
87
+ ### One-shot (быстрый запрос)
88
+
89
+ ```bash
90
+ mma "Создай React-компонент для формы входа"
91
+ ```
92
+
93
+ Можно передать провайдера и модель флагами:
94
+
95
+ ```bash
96
+ mma --provider ollama --model qwen3.5-9b "Напиши Dockerfile"
97
+ ```
98
+
99
+ ### С пайпом (stdin)
100
+
101
+ ```bash
102
+ cat package.json | mma "Опиши зависимости"
103
+ ```
104
+
105
+ ## Настройка провайдеров и моделей
106
+
107
+ По умолчанию конфиг настроен на LM Studio (`localhost:1234`). Если нужно добавить другой сервер:
108
+
109
+ ```bash
110
+ # Добавить провайдера
111
+ mma provider add ollama http://localhost:11434/v1
112
+
113
+ # Переключиться на него
114
+ mma provider use ollama
115
+
116
+ # Добавить модель к активному провайдеру
117
+ mma model add qwen3.5-9b qwen3.5-9b-instruct 32768
118
+
119
+ # Выбрать модель (model add не активирует автоматически)
120
+ mma model use qwen3.5-9b
121
+ ```
122
+
123
+ ### Все команды управления
124
+
125
+ ```bash
126
+ # Провайдеры
127
+ mma provider list # Список провайдеров
128
+ mma provider use ollama # Переключиться на провайдера
129
+ mma provider add <имя> <url> # Добавить провайдера
130
+ mma provider remove <имя> # Удалить провайдера
131
+
132
+ # Модели
133
+ mma model list # Список моделей активного провайдера
134
+ mma model use <имя> # Переключиться на модель
135
+ mma model current # Показать активную модель
136
+ mma model add <имя> <id> <ctx> # Добавить модель
137
+ mma model remove <имя> # Удалить модель
138
+ mma model params [имя] # Параметры модели
139
+ mma model set <имя> k=v # Изменить параметр (temperature=0.5)
140
+
141
+ # Конфиг
142
+ mma config show # Показать весь конфиг
143
+ mma config reset # Сбросить настройки
144
+ mma config thinking [on/off] # Включить/выключить скрытие размышлений модели
145
+
146
+ # Обновления
147
+ mma update # Проверить наличие обновлений
148
+ mma update check # Проверить версию
149
+ mma update install # Скачать и установить обновление
150
+ ```
151
+
152
+ ### Параметры моделей
153
+
154
+ По умолчанию:
155
+ - `temperature`: 0.7
156
+ - `max_tokens`: 4096
157
+ - `top_p`: 0.9
158
+
159
+ Изменить:
160
+
161
+ ```bash
162
+ mma model set qwen3.5-9b temperature=0.3 max_tokens=8192
163
+ mma model set qwen3.5-9b seed=42 # для воспроизводимости
164
+ mma model set qwen3.5-9b seed=null # сбросить seed
165
+ ```
166
+
167
+ ## Конфигурация
168
+
169
+ Конфиг хранится в `~/.mma/config.json`.
170
+
171
+ ```json
172
+ {
173
+ "providers": {
174
+ "lmstudio": {
175
+ "type": "openai-compat",
176
+ "url": "http://localhost:1234/v1",
177
+ "apiKey": null,
178
+ "models": {
179
+ "qwen3.5-9b": {
180
+ "model": "qwen3.5-9b-instruct",
181
+ "contextWindow": 32768,
182
+ "params": {
183
+ "temperature": 0.7,
184
+ "max_tokens": 4096
185
+ }
186
+ }
187
+ }
188
+ }
189
+ },
190
+ "active": {
191
+ "provider": "lmstudio",
192
+ "model": "qwen3.5-9b"
193
+ },
194
+ "agent": {
195
+ "maxSteps": 50,
196
+ "autoCompact": true,
197
+ "compactThreshold": 0.85,
198
+ "toolTimeout": 120,
199
+ "maxOutputLength": 2000
200
+ }
201
+ }
202
+ ```
203
+
204
+ Можно также создать `.mmrc` в корне проекта — он смержится поверх глобального конфига.
205
+
206
+ ### Переменные окружения
207
+
208
+ | Переменная | Описание |
209
+ |-----------|----------|
210
+ | `MMA_PROVIDER` | Провайдер по умолчанию |
211
+ | `MMA_MODEL` | Модель по умолчанию |
212
+ | `MMA_STDIN=1` | Принудительное чтение stdin |
213
+
214
+ ## Режимы запуска
215
+
216
+ ### One-shot
217
+
218
+ ```bash
219
+ mma "Объясни этот код: function fib(n) { return n < 2 ? n : fib(n-1) + fib(n-2); }"
220
+ ```
221
+
222
+ ### Stdin (пайп)
223
+
224
+ ```bash
225
+ cat main.ts | mma "Найди потенциальные баги"
226
+ curl -s https://api.example.com/data | mma "Проанализируй JSON"
227
+ ```
228
+
229
+ ### REPL
230
+
231
+ ```bash
232
+ mma
233
+ ```
234
+
235
+ В REPL доступны команды:
236
+
237
+ | Команда | Описание |
238
+ |---------|----------|
239
+ | `/read <file>` | Показать файл с нумерацией строк |
240
+ | `/write <file>` | Записать файл (до EOF) |
241
+ | `/edit <file> <n>` | Заменить строку N в файле |
242
+ | `/find <pattern>` | Поиск файлов по glob |
243
+ | `/search <pattern>` | Поиск содержимого |
244
+ | `/bash <cmd>` | Выполнить shell-команду |
245
+ | `/git <args>` | Git-операции |
246
+ | `/memory` | Показать память |
247
+ | `/memory add <type> <text>` | Добавить в память |
248
+ | `/memory search <query>` | Поиск в памяти |
249
+ | `/skill` | Список навыков |
250
+ | `/sessions` | Список сессий |
251
+ | `/resume <id>` | Восстановить сессию |
252
+ | `/save [name]` | Сохранить сессию |
253
+ | `/clear` | Очистить контекст |
254
+ | `/help` | Справка |
255
+ | `/exit` | Выход |
256
+
257
+ ## Синтаксис `@file`
258
+
259
+ Загружает файлы в контекст агента:
260
+
261
+ ```bash
262
+ mma "@src/index.ts -- объясни эту функцию"
263
+
264
+ # Несколько файлов
265
+ mma "@src/auth/login.ts @src/auth/jwt.ts -- сравни"
266
+
267
+ # Диапазон строк
268
+ mma "@src/index.ts:10-30 -- что здесь происходит?"
269
+
270
+ # Вся директория
271
+ mma "@src/auth/ -- покажи структуру модуля"
272
+ ```
273
+
274
+ ## Навыки (Skills)
275
+
276
+ Навыки — это Markdown-файлы с инструкциями для модели. Загружаются из:
277
+ - `~/.mma/skills/<name>/SKILL.md`
278
+ - `.agents/skills/<name>/SKILL.md`
279
+ - `.claude/skills/<name>/SKILL.md`
280
+
281
+ ```bash
282
+ # Использовать навык
283
+ mma "@docker -- помоги контейнеризовать приложение"
284
+ ```
285
+
286
+ ## Агент: как это работает
287
+
288
+ 1. Вы даёте задачу (prompt)
289
+ 2. Модель генерирует план и вызывает инструменты через `<tool_call>`
290
+ 3. Агент выполняет инструменты и возвращает результат модели
291
+ 4. Модель анализирует результат и решает, что делать дальше
292
+ 5. Цикл продолжается до завершения задачи (макс. 50 шагов)
293
+
294
+ ### Инструменты агента
295
+
296
+ | Инструмент | Описание |
297
+ |-----------|----------|
298
+ | `read_file` | Чтение файла с нумерацией строк |
299
+ | `write_file` | Атомарная запись/создание файла |
300
+ | `edit_file` | Find & replace (точное совпадение) |
301
+ | `list_dir` | Список директории |
302
+ | `create_dir` | Рекурсивное создание директории |
303
+ | `delete_file` | Удаление файла/директории |
304
+ | `copy_file` | Копирование |
305
+ | `move_file` | Перемещение/переименование |
306
+ | `file_info` | Метаданные файла |
307
+ | `glob_search` | Поиск по паттерну |
308
+ | `grep_search` | Поиск по содержимому (regex) |
309
+ | `tree` | Дерево директорий |
310
+ | `bash` | Выполнение команд (npm, git, docker) |
311
+
312
+ ## Индексация проекта
313
+
314
+ Агент автоматически строит карту проекта и индекс кода:
315
+
316
+ ```bash
317
+ # Вручную перестроить
318
+ /build index rebuild
319
+ /build project-map
320
+ ```
321
+
322
+ ## Работа с сессиями
323
+
324
+ ```bash
325
+ # Автосохранение при выходе
326
+ /save my-session-name
327
+
328
+ # Список сессий
329
+ /sessions
330
+
331
+ # Восстановить
332
+ /resume my-session-name
333
+ ```
334
+
335
+ ## Разработка
336
+
337
+ ```bash
338
+ npm run build # Компиляция TypeScript
339
+ npm run dev # Watch-режим
340
+ npm test # Тесты
341
+ npm run test:all # Все тесты
342
+ npm run test:watch # vitest watch
343
+ ```
344
+
345
+ ### Публикация новой версии
346
+
347
+ ```bash
348
+ npm version patch # или minor, major
349
+ npm publish
350
+ ```
351
+
352
+ ## Лицензия
353
+
354
+ MIT