Встроить MMW в свой продукт
Эта страница для команд, у которых уже есть продукт: чат-бот, CRM, сервис поддержки, внутренний ассистент. Вы хотите, чтобы он помнил клиентов и договорённости между разговорами, и не хотите писать для этого своё хранилище.
К концу страницы у вас будет:
- схема, по которой продукт обращается к MMW;
- способ разделить память ваших пользователей;
- порядок выкатки, при котором сбой MMW не ломает продукт.
Что остаётся у вас, а что делает MMW
Заголовок раздела «Что остаётся у вас, а что делает MMW»| Ваш продукт | MMW |
|---|---|
| Пользователи, вход, права доступа | Хранит факты и решения между сессиями |
| Тарифы и оплата ваших клиентов | Поиск по смыслу и по словам |
| Основные данные и бизнес-логика | Отметки устаревания по источнику (stale) |
| Решение, что показать пользователю | Противоречия видны как conflict, а не теряются |
MMW не заменяет вашу базу данных. Это память о фактах, договорённостях и контексте, которую читает и пополняет модель.
Интерфейс → API вашего продукта → MemoryAdapter → https://mcp.mmwhub.ru/mcp │ └→ ваша БД (пользователи, права, связи с записями MMW)Весь обмен с MMW идёт через один модуль на вашем сервере, назовём его MemoryAdapter. В нём:
- адрес и ключ MMW (ключ только на сервере, никогда в браузере или мобильном приложении);
- выбор рабочей области по пользователю;
- повторы при сбоях сети и единый разбор ошибок;
- журнал вызовов без текста записей.
Интерфейс никогда не обращается к MMW напрямую.
MMW отвечает по протоколу MCP поверх HTTP. Для сервера это обычный POST с JSON-RPC, отдельная инициализация не нужна.
curl -s https://mcp.mmwhub.ru/mcp \ -H "Authorization: Bearer $MMW_API_KEY" \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search","arguments":{"query":"способ доставки","workspace":"u-1842","limit":5}}}'Ответ лежит в result.content[0].text в виде JSON. Сохранение устроено так же, с "name":"remember" и аргументами content, workspace, fact_key, source_id, confidence. Все параметры описаны в справочнике: search, remember, forget.
Как разделить ваших пользователей
Заголовок раздела «Как разделить ваших пользователей»Есть два способа.
Рабочая область на пользователя. Один ключ, привязанный к отдельному проекту продукта. Адаптер сам подставляет workspace вида u-<id пользователя в вашей системе> и никогда не берёт его из запроса клиента. Подходит большинству продуктов.
Свой проект на клиента-компанию. Если ваши клиенты сами компании и им важна строгая изоляция, заведите каждой отдельный проект и ключ. Адаптер выбирает ключ по компании. Ключи храните зашифрованными.
В обоих случаях идентификатор пользователя берите постоянный и неизменный: внутренний id, а не почту или телефон. Сменится почта, а память останется на месте.
Повторы без дублей
Заголовок раздела «Повторы без дублей»Если адаптер повторяет remember после сбоя сети, добавьте заголовок X-Idempotency-Key, например хеш от id пользователя и текста факта. Повтор с тем же ключом вернёт ту же запись, а не создаст вторую. Подробно в разделе Правила для агентов.
Для фактов, которые меняются (адрес доставки, тариф клиента), задавайте постоянный fact_key, например customer.delivery.address. Новая версия пометит старую как заменённую, и поиск вернёт актуальную.
Выкатка по шагам
Заголовок раздела «Выкатка по шагам»-
Один безопасный сценарий. Только чтение: перед ответом бот ищет в памяти пользователя и добавляет найденное в контекст модели. Функция за флагом, по умолчанию выключена. Без ключа MMW адаптер просто ничего не находит, продукт работает как раньше. Таймаут вызова 2–3 секунды.
-
Запись. Модель сохраняет итог разговора: решение клиента, договорённость, предпочтение. Повторы с
X-Idempotency-Key. В вашей БД храните id записей MMW рядом с вашими сущностями, а текст записей в свой журнал не пишите. -
Удаление по запросу. Пользователь просит забыть или удаляет аккаунт: адаптер берёт из вашей БД id его записей MMW (их вы сохраняли на шаге 2) и вызывает
forgetпо каждомуmemory_id. Это нужно для персональных данных, сделайте это до широкого запуска. -
Источники и свежесть. Если память строится из ваших документов (база знаний, регламенты), передавайте
source_idиsource_hash. Когда документ меняется, старые факты получатstale.
Чего не делать
Заголовок раздела «Чего не делать»- Не передавайте ключ MMW в браузер, мобильное приложение или промпт модели.
- Не давайте модели самой выбирать
workspace: его подставляет адаптер. - Не сохраняйте в память пароли, платёжные данные и сырые выгрузки переписки.
- Не делайте ответ продукта зависимым от MMW: при ошибке или таймауте отвечайте без памяти.
Лимиты и тарифы
Заголовок раздела «Лимиты и тарифы»Лимиты на вызовы в минуту и число записей зависят от тарифа, они собраны в разделе Лимиты. Если нужна память для многих тысяч пользователей вашего продукта, напишите на support@mmwhub.tech: подберём тариф и лимиты.