Skip to Content
Руководство для пользователейВозможностиMem0

Mem0

Mem0 подключает Qwen Code к внешнему сервису памяти. Он входит в основной пакет CLI: не устанавливайте @qwen-code/external-context-mem0 и не регистрируйте отдельный MCP-сервер для этого пути.

Подключение

Добавьте следующее в пользовательские настройки (~/.qwen/settings.json), затем перезапустите Qwen Code в доверенном проекте. Как и modelProviders, envKey указывает имя переменной учётных данных, а поле env верхнего уровня может содержать её значение:

{ "env": { "MEM0_API_KEY": "<your-provider-key>" }, "memory": { "mem0": { "baseUrl": "https://your-mem0-endpoint.example", "protocol": "mem0-v2", "envKey": "MEM0_API_KEY" } } }

Эта конфигурация в одном файле не требует экспорта в оболочке. Учётные данные в JSON хранятся в открытом виде: держите их в пользовательских настройках, не коммитьте в репозиторий и не прикладывайте к отчётам. В качестве альтернативы можно не указывать поле env верхнего уровня, а задать ключ в запускающей оболочке или в ~/.qwen/.env. Непустые значения в окружении процесса имеют приоритет над значениями из .env, которые, в свою очередь, имеют приоритет над settings.env.

Используйте origin эндпоинта, при необходимости с префиксом обратного прокси; не добавляйте /v2/memories/search или другой путь операции. Выберите контракт, который реально реализует ваш сервис:

  • mem0-v2 (по умолчанию): PolarDB-стиль Authorization: Token, V2-поиск с limit, запись V1.
  • mem0-v3: Mem0 Platform V3, Authorization: Token, поиск/добавление V3.
  • mem0-oss-2026-08: фиксированный OSS REST-контракт, X-API-Key, /search и /memories.

Это полные контракты, а не универсальная совместимость версий. Неизвестные версии и другие форматы запросов/ответов требуют проверенного адаптера, а не переименованного URL. Исторические ID пресетов по-прежнему принимаются; aliyun-polardb-mysql-2026-08 сохраняет своё историческое поле поиска top_k и необработанное содержимое поиска.

Для доверенного адреса PolarDB, такого как http://your-endpoint:8080, дополнительно требуется "allowInsecureHttp": true. Обычный HTTP отправляет учётные данные в незашифрованном виде. Эта настройка не делает приватный эндпоинт достижимым и не обходит белые списки IP.

Qwen автоматически регистрирует external-context и обнаруживает context_search. Попросите Qwen выполнить поиск во внешней памяти; ничего не вспоминается и не отправляется автоматически на каждом ходу. Сервер с тем же именем в настройках оператора, конфигурации сессии или --mcp-config создаёт конфликт; удалите эту ручную конфигурацию при переходе на встроенный путь. Настройки рабочего пространства и записи .mcp.json проекта с таким именем переопределяются. Существующий приоритет MCP также затеняет сервер расширения с тем же именем, поэтому отключите расширенное расширение external-context при использовании встроенного пути. Удалите также старый ручной хук подтверждения записи, чтобы избежать дублирования подтверждений; пользовательский хук с тем же матчером не заменяет встроенное подтверждение.

Область действия и запись

Область действия пользователя/репозитория по умолчанию сохраняется между перезапусками и работает из подкаталогов Git. Перемещение репозитория или использование другого чекаута изменяет её, включая временные worktree --worktree и worktree изоляции агентов. Чтобы использовать известную область действия между worktree, установите scope.userId для V2/OSS или scope.appId для V3; необязательный scope.agentId применяется только к V2/OSS. Идентификаторы области действия не являются средствами контроля доступа на стороне провайдера.

Поиск доступен только для чтения по умолчанию. Чтобы включить сохранение, добавьте "enableWrites": true внутри memory.mem0, перезапустите интерактивный CLI и попросите Qwen сохранить нужное содержимое. Автоматически установленный хук запрашивает подтверждение точного содержимого, включая режим YOLO. Отклонение не отправляет запрос на запись. Записи используют infer: false.

PolarDB может возвращать массив сообщений одного пользователя в кодировке JSON для этих прямых импортов. mem0-v2 восстанавливает точный текст такого сообщения, когда результат помечен infer: false; исторический пресет aliyun-polardb-mysql-2026-08, обычный текст и другие протоколы остаются без изменений.

Неинтерактивные сессии и сессии ACP, а также сессии с отключёнными хуками, сохраняют только поиск. Режимы bare/safe, ненадёжные/предварительные папки и SSH-рабочие пространства не активируют эту локальную привязку. Настройки рабочего пространства не могут настроить привязку.

stored означает, что были возвращены валидные синхронные ID. accepted означает, что асинхронный запрос был принят, а не что сохранение завершено. failed означает окончательный отказ: устраните указанную причину перед повторной попыткой. unknown означает, что запись могла произойти: не повторяйте автоматически.

Параметры и устранение неполадок

envKey по умолчанию равен MEM0_API_KEY; используйте его для ссылки на другую переменную учётных данных и определите её значение через любой из источников выше. Историческое поле credentialEnv остаётся совместимым алиасом. Если оба поля заданы, их имена должны совпадать; конфликтующие имена вызывают ошибку, а не молчаливый выбор учётных данных. timeoutMs по умолчанию 5000, в диапазоне от 1 до 30000.

Проверьте статус подключения MCP при отсутствии учётных данных и ошибках провайдера. Таймаут требует проверки маршрутизации эндпоинта, белых списков IP-источников и доступности сервиса. Ошибка 401/403 требует проверки учётных данных и выбранного протокола. Не вставляйте учётные данные в логи или отчёты об ошибках.

Для исходных чекаутов выполните сборку и бандлинг один раз, чтобы существовали dist/mem0/main.js и dist/mem0/write-confirmation.js. Установленные основные пакеты содержат оба файла. Эта функция требует основного релиза CLI, содержащего изменение; публикация отдельного пакета Mem0 не требуется.

Last updated on