ГАЙД · 2026

Walrus Memory: как подключить постоянную память ИИ-агенту

Walrus Memory даёт агенту память, которая живёт вне вашего приложения: SDK на Python и TypeScript, MCP-сервер одной командой, шифрование Seal и хранение в децентрализованной сети Walrus. Разбираем, как это подключить и где здесь грабли.

ГайдПамять агентаPythonMCP
Уровень СреднийВремя прохождения 20–25 минутЯзыки Python · TypeScript · любой MCP-клиентОбновлено 05.10.2026

Память агента обычно заканчивается там, где заканчивается сессия: чат, документ, векторная база внутри одного приложения. Walrus Memory (второе имя — MemWal) от Mysten Labs решает это честнее: записи лежат в сети Walrus, зашифрованы, привязаны к вашему аккаунту в Sui и достаются откуда угодно — из другого агента, другого рантайма или другой сессии. Подключается SDK на Python или TypeScript/JavaScript, а для готовых агентов есть MCP-сервер, который ставится одной командой. Ниже — рабочий путь: аккаунт, ключ, первый remember и recall, интеграция в цикл агента и честный список того, что в молодом SDK пока кусается.

Коротко о Walrus Memory
РазработчикMysten Labs — та же команда, что делает сеть Walrus и блокчейн Sui
Что этоХранилище памяти агента: SDK (Python, TypeScript/JavaScript), MCP-сервер, методы remember / recall / analyze / ask / restore / health
Версии пакетовnpm @mysten-incubation/memwal 0.1.8, MCP 0.0.14, PyPI memwal 0.1.11 (проверено 05.10.2026)
Лицензия SDKApache-2.0, код открыт: MystenLabs/MemWal (113 звёзд, 44 форка)
За что платятЗа хранение — токен WAL, за газ — SUI. Через managed relayer платить вручную не нужно
Контурыproduction (mainnet) memory.walrus.xyz и staging (testnet) staging.memory.walrus.xyz
Как мы это проверяли
Гайд собран по официальной документации docs.wal.app/walrus-memory, репозиторию MystenLabs/MemWal (README, changelog’и пакетов и папка docs/) и реестрам npm и PyPI — снимок 05.10.2026. Все команды и имена методов взяты из документации дословно. Продукт молодой: версии SDK — 0.1.x, интерфейсы ещё меняются, поэтому перед продакшном сверяйтесь с changelog своего пакета.

01Зачем выносить память из приложения

Классическая «память» агента — это либо история сообщений, либо векторная база внутри вашего сервиса. Обе живут в вашем стеке: сменили фреймворк — перепишите, сменили сервер — перелейте, завели второго агента — расскажите ему всё заново. Walrus Memory строит третий вариант: прослойка памяти существует отдельно от приложения, а приложение только пишет и читает.

  • Переносимость. Записи не привязаны к фреймворку, рантайму или модели: тот же namespace читается из Python-скрипта, из TypeScript-бэкенда и из Claude Code через MCP.
  • Явное владение и доступ. Память принадлежит кошельку Sui, а не аккаунту в чужом SaaS; доступ выдаётся делегированным ключом.
  • Шифрование и проверимость. Записи шифруются (Seal) и лежат в децентрализованной сети Walrus, откуда индекс можно восстановить заново.
  • Совместная работа агентов. Общий memory space позволяет нескольким агентам видеть один и тот же контекст — это и есть база для координации.
Когда это лишнее
Если у вас один агент, один сервер и вся память — история диалога на день, хватит файла или обычной таблицы: Walrus Memory добавляет сеть, ключи и две монеты в стоимость. Смысл появляется, когда память должна переживать смену рантайма, разделяться между агентами или принадлежать пользователю, а не вашему серверу.

02Как это устроено: memory space, релейер и сеть Walrus

Данные не ходят из вашего кода напрямую в сеть. Схема такая: SDK подписывает запрос вашим делегированным ключом (Ed25519), релейер проверяет права, шифрует текст, заливает его в Walrus как блоб и добавляет запись в векторный индекс. Поиск идёт по namespace и возвращает уже расшифрованные совпадения.

Путь одной записи
1rememberв SDK: текст, который нужно запомнить2Подпись Ed25519делегированный ключ подтверждает право писать в аккаунт3Релейерпроверяет делегата, шифрует (Seal), считает эмбеддинги4Walrusзашифрованный блоб ложится в децентрализованную сеть5recallпоиск по namespace → расшифрованные совпадения в ответеПо документации docs.wal.app/walrus-memory (обзор SDK и Python-клиент MemWal).

Память делится на изолированные участки — memory space. Он определяется тремя значениями одновременно, и этого достаточно, чтобы два приложения или два пользователя не пересеклись:

ЗначениеЧто этоКто задаёт
Адрес владельцакошелёк Sui, которому принадлежит памятьаккаунт Walrus Memory
Namespaceваш ярлык, например chatbot-prod или team-supportразработчик
App IDидентификатор пакета Walrus Memory (MEMWAL_PACKAGE_ID), свой у каждого развёртывания релейераплатформа
Определение memory space из документации (раздел «Memory Space», 05.10.2026).
Namespace — это не пароль
Namespace организует записи внутри аккаунта, но изоляция между пользователями держится на владельце. Если писать в чужой account ID (например, скопированный из примера в документации), ваши записи уедут в общий контур, который читают все, кто использует тот же аккаунт. Документация предупреждает об этом прямым текстом.

03Шаг нулевой: аккаунт, ключ и пароль-обвязка

Для production-контура аккаунт и делегированный ключ выдают на memory.walrus.xyz, для теста — на staging.memory.walrus.xyz. Из этой пары и адреса релейера собирается конфигурация клиента; в коде они читаются из переменных окружения и никогда не хардкодятся.

Подготовка за четыре шага
1
Создать аккаунт
Открыть memory.walrus.xyz (или staging-домен для теста) и создать аккаунт Walrus Memory.
2
Скопировать account ID
Это объект MemWalAccount в Sui — он пойдёт в accountId клиента.
3
Сохранить ключ
Делегированный приватный ключ Ed25519 в hex. В репозиторий он не попадает: только секрет-менеджер или переменные окружения.
4
Выбрать контур и namespace
Релейер: relayer.memory.walrus.xyz (mainnet) или relayer-staging.memory.walrus.xyz (testnet). Namespace — свой для каждого приложения.
переменные окружения (пример)bash
export MEMWAL_KEY="<ваш Ed25519 приватный ключ, hex>"
export MEMWAL_ACCOUNT_ID="<account ID из memory.walrus.xyz>"
export MEMWAL_SERVER_URL="https://relayer.memory.walrus.xyz"
# тестовый контур: https://relayer-staging.memory.walrus.xyz

04Python: от pip install до первого recall

Python-пакет memwal повторяет TypeScript-клиент: тот же релейер, та же авторизация, те же методы. Ставится без зависимостей, подпись — через PyNaCl. На 05.10.2026 в PyPI лежит версия 0.1.11.

терминалbash
pip install memwal
pip install memwal[langchain]   # middleware для LangChain
pip install memwal[openai]      # middleware для OpenAI SDK
pip install memwal[all]         # всё сразу

Клиент создаётся из ключа, аккаунта и пресета окружения. Дальше — шесть методов, которые покрывают почти всё:

МетодЧто делаетКогда нужен
remember / remember_and_waitсохраняет одну запись; вариант с _and_wait дожидается, пока релейер зашифрует, зальёт и проиндексирует, и возвращает blob IDкогда нужно подтверждение записи
recallищет по смыслу в рамках namespace, возвращает совпадения с расстояниемперед каждым ответом агента
analyzeсам вытаскивает факты из длинного текста и сохраняет ихкогда на входе протокол встречи или длинный лог
askотвечает на вопрос, опираясь на сохранённые записикогда не нужен сырой список совпадений
restoreпересобирает потерянный индекс из Walrus, по одному namespaceпосле сбоя индекса
healthпроверяет доступность релейера без авторизациив мониторинге и при старте
Методы по документации Python SDK (05.10.2026).
app.pypython
import asyncio, os
from memwal import MemWal, RecallParams

memwal = MemWal.create(
    key=os.environ["MEMWAL_KEY"],
    account_id=os.environ["MEMWAL_ACCOUNT_ID"],
    env="prod",                 # или server_url="https://<свой релейер>"
    namespace="chatbot-prod",
)

async def main():
    # 1. сохраняем факт и ждём подтверждения
    done = await memwal.remember_and_wait("Клиент работает в Hanoi и предпочитает тёмную тему.")
    print(done.blob_id)

    # 2. достаём по смыслу
    res = await memwal.recall(RecallParams(query="Что мы знаем о клиенте?", limit=5))
    for m in res.results:
        print(m.text, m.distance)

asyncio.run(main())

Если приложение не async, есть MemWalSync с тем же API — он просто выполняет вызовы через asyncio.run(), поэтому в ноутбуках и скриптах удобнее он. Для LangChain и OpenAI SDK предусмотрены готовые middleware: with_memwal_langchain и with_memwal_openai — они добавляют память к существующей цепочке, не переписывая её.

05TypeScript и JavaScript: три входа в одну библиотеку

В npm-пакете @mysten-incubation/memwal (на 05.10.2026 — версия 0.1.8) три точки входа. Выбирать нужно по тому, кто выполняет криптографию: релейер или ваш клиент.

ИмпортКогда использоватьЧто подтянуть
@mysten-incubation/memwalПо умолчанию: релейер сам считает эмбеддинги, делает Seal-шифрование и загрузку. Меньше кода, меньше ключей на клиенте.ничего
@mysten-incubation/memwal/manualКогда эмбеддинги и локальные Seal-операции должны остаться на клиенте.@mysten/sui, @mysten/seal, @mysten/walrus
@mysten-incubation/memwal/aiКогда уже есть Vercel AI SDK и память нужна как middleware (withMemWal).ai, zod
Три точки входа TypeScript SDK по официальному quick-start (05.10.2026).
терминалbash
npm install @mysten-incubation/memwal
# для режима manual:
npm install @mysten/sui @mysten/seal @mysten/walrus
# для Vercel AI SDK:
npm install ai zod
Версии @mysten/* должны совпадать по мажору
Документация называет проверенный набор: @mysten/sui@^2.16.2, @mysten/seal@^1.1.3, @mysten/walrus@^1.1.7. Пакет @mysten/walrus@0.x тянет за собой @mysten/sui@1.x и конфликтует с @mysten/seal@1.x — если установка падает с ERESOLVE, виноват именно этот перекос версий.
memwal.tstypescript
import { MemWal } from "@mysten-incubation/memwal";

const memwal = MemWal.create({
  key: process.env.MEMWAL_KEY!,            // Ed25519, hex
  accountId: process.env.MEMWAL_ACCOUNT_ID!,
  serverUrl: "https://relayer.memory.walrus.xyz",
  namespace: "chatbot-prod",
});

await memwal.remember("Клиент предпочитает тёмную тему.");
const hits = await memwal.recall({ query: "Какие предпочтения у клиента?" });
Как часто выходили пакеты Walrus Memoryнакопительно, по датам релизов
0 релизов2,5 релизов5 релизов7,5 релизов10 релизов09.0915.0922.0902.1036910
Накопительное число релизов трёх пакетов (SDK, MCP, Python SDK) по данным GitHub releases репозитория MystenLabs/MemWal, снято 05.10.2026. Три волны за две недели сентября — SDK ещё молодой и меняется быстро.

В JavaScript-приложении, которое работает в браузере, есть отдельный нюанс: в версии 0.1.8 хэширование тел запросов перевели на @noble/hashes, потому что прежний путь тянул встроенный модуль Node и ломался в Vite-сборке. Если вы сидите на версии ниже — обновитесь, это как раз тот случай. И у TypeScript-SDK объявлен пол Node 20.

06MCP: одна команда — и память у вашего агента

Самый быстрый путь для тех, кто уже работает в агентской среде: MCP-сервер Walrus Memory. Он один для всех клиентов — отличается только место, где лежит конфигурация. Пакет запускается через npx, отдельная установка не нужна, но требуется Node.js 20 или новее.

КлиентКуда добавляется сервер
Claude Codeкомандой claude mcp add либо плагином из маркетплейса (плагин добавляет хуки автоматической памяти)
Claude Desktop и веб-чатOAuth-коннектор — локальный Node.js и CLI не нужны
CursorJSON-блок mcpServers в ~/.cursor/mcp.json; плагин ставится в ~/.cursor/plugins/local/memwal
Codexфайл config.toml
OpenCodeфайл opencode.json
Antigravityплагин или JSON-блок конфигурации
Список поддерживаемых MCP-клиентов по документации (05.10.2026).
универсальная команда сервераbash
npx -y @mysten-incubation/memwal-mcp

# пример для Cursor (~/.cursor/mcp.json):
# {
#   "mcpServers": {
#     "memwal": {
#       "command": "npx",
#       "args": ["-y", "@mysten-incubation/memwal-mcp"]
#     }
#   }
# }
Что происходит после подключения
1
Перезапустить клиент
MCP-серверы подхватываются при старте приложения.
2
Войти
Попросить агента выполнить memwal_login и открыть выданную ссылку. Аккаунт можно создать прямо в этом потоке.
3
Проверить
Спросить агента, какие инструменты памяти он видит, и записать пробный факт.
Файл учётных данных внутри проекта требует одобрения
В свежих версиях MCP-пакета файл .memwal/credentials.json внутри репозитория больше не решает сам, куда писать память: пока вы явно не одобрите проектный путь, аккаунт, ключ и релейер командой memwal-mcp approve-project, используются глобальные учётные данные. Одобрение хранится вне репозитория, в ~/.memwal/project-approvals.json. Причина простая: файл в репозитории мог молча увести все записи на чужой аккаунт.

Если хочется не только инструментов, но и автоматики, ставьте плагин, а не одиночную запись сервера: он добавляет хуки на старт сессии, на подсказку пользователя и на вызов инструментов, и память подтягивается и сохраняется сама. Тогда есть и «умолчание по умолчанию» — риск, что в память уедет лишнее, поэтому в плагине есть и политика записи, и выключатель автосохранения.

07Как встроить память в цикл агента

Память — не «функция», а место в цикле. Рабочая схема: перед ответом подтянуть контекст, после ответа сохранить то, что стоит помнить. Всё остальное — детали реализации.

Цикл с памятью
1recallперед ответом: что мы уже знаем про пользователя и задачу2Контекстсовпадения подмешиваются в промпт как факты, а не как «история чата»3Работаагент отвечает или действует4rememberпосле: сохраняем новые факты, решения, договорённости5analyzeдля длинных текстов — извлечение фактов автоматомПаттерн, который документация называет циклом хранилища агента (agent storage loop).
  • Идемпотентность обязательна. Релейер не дедуплицирует записи: повторный remember после сетевого сбоя создаст вторую копию. Считайте хэш содержимого и не пишите то же самое дважды.
  • Ретраи — только на временные ошибки. Экспоненциальная задержка и ограничение попыток; ответы вида 503 документация относит к временной недоступности, а не к проблеме с ключом.
  • Подтверждайте запись, если от неё зависит следующий шаг. remember_and_wait дожидается blob ID; вариант без ожидания только принимает задание.
  • Батчите и ограничивайте. Пакетная запись и лимит записей на цикл — прямой способ не удивиться счёту за хранение.
  • Деградируйте мягко. Если релейер недоступен, агент должен продолжить работу без памяти, а не упасть.

08Сколько это стоит и кто за что платит

Сам SDK бесплатный: лицензия Apache-2.0. Платят за хранение и операции сети, и здесь две разные монеты — в этом месте чаще всего путаются.

За чтоЧем платятКто платит в типовой схеме
Хранение блобов в сети WalrusWALрелейер, если он спонсирует; иначе ваш кошелёк
Газ за запись в SuiSUIто же
Вызовы SDK и MCPничегоплатформа (SDK бесплатен)
Свой релейеринфраструктура + WAL + SUIвы: кошелёк с WAL и SUI, свой сервер
Модель оплаты по документации: два токена (WAL за хранение, SUI за газ) и несколько вариантов спонсирования.

На практике почти все начинают с managed relayer Walrus Foundation: кошелёк не нужен, оплата спрятана за релейером, контур общий. Обратная сторона — доверие и отсутствие гарантий: документация прямо пишет, что hosted-релейер видит текст до шифрования, делит развёртывание с другими пользователями и не даёт SLA. Если это неприемлемо, есть три пути: развернуть свой релейер, использовать publisher-спонсирование или выдавать агенту заранее пополненные WAL и ресурсы хранения из общего казначейства.

Ключ — не «ещё одна переменная»
Делегированный ключ даёт право писать в память. Документация советует держать его в секрет-менеджере, а не в .env рядом с кодом, и уметь отзывать делегата. Это не паранойя: утечка ключа означает не только чтение памяти, но и запись мусора в неё.

09Что может пойти не так

СимптомПричина и что делать
Записи видны не тому, кому должныСкорее всего, взят чужой account ID из примера в документации: recall ограничен связкой аккаунт + namespace. Создайте свой аккаунт и проверьте, что memwal_health показывает именно ваш аккаунт и релейер.
Дубликаты в памятиРелейер не дедуплицирует записи. Считайте хэш содержимого перед записью и не повторяйте уже сохранённое.
Установка падает с ERESOLVEПерекос версий @mysten/*. Держите проверенный набор из quick-start и не смешивайте @mysten/walrus@0.x с @mysten/seal@1.x.
Память «пропала» после сбояИндекс можно пересобрать: restore умеет перечитывать записи из Walrus по namespace. В свежих версиях он ещё и возвращает список неудачных записей отдельно от пропущенных — не считайте их успешными.
Таймаут записи выглядит успехомВ версиях до MCP 0.0.13 тайм-аут мог отражаться как безопасная запись. Обновите пакет и не полагайтесь на «принято» без blob ID.
Клиент не видит памятьПроверьте Node.js 20+ и то, что MCP-сервер вообще стартует: npx разрешает имя пакета относительно каталога, из которого запущен клиент.
Сводка по changelog’ам пакетов (SDK, MCP, Python), разделу о продакшне и документации релейера, снято 05.10.2026.
Что проверить перед продакшном
Пять пунктов: свой аккаунт вместо примерного; ключ в секрет-менеджере; идемпотентные записи; подтверждение записи там, где от неё зависит следующий шаг; поведение агента при недоступном релейере. Всё это — из раздела документации о продакшн-готовности, а не наши домыслы.

10Чем Walrus Memory отличается от других слоёв памяти

Слоёв памяти для агентов много, и по зрелости они пока разного возраста. Чтобы не создавать ложного впечатления, вот честный снимок звёзд на GitHub — это мера размера сообщества, а не качества продукта.

Звёзды GitHub у слоёв памяти для агентов
0 ★40 000 ★80 000 ★mem066 601 ★cognee31 389 ★Letta25 028 ★Zep4 945 ★Walrus Memory (MemWal)113 ★
Снято 05.10.2026 через GitHub API. MemWal — самый молодой проект из списка (репозиторий создан в июле 2025, SDK в статусе 0.1.x), зато единственный, где память хранится в децентрализованной сети, а владение привязано к кошельку.
КритерийWalrus MemoryОбычный слой памяти в вашем стеке
Где живут записив сети Walrus, зашифрованными блобамив вашей БД или облаке вендора
Кому принадлежит памятьвашему кошельку Suiаккаунту в сервисе или вашему серверу
Доступделегированные ключи, явные праваключ API сервиса
Зрелость0.1.x, changelog меняется каждую неделюзависит от проекта (от месяцев до лет)
Порог входааккаунт, ключ, две монеты в стоимостиобычно регистрация и API-ключ
Когда братьнужна переносимость, проверимость и владениенужна память «сегодня и просто»
Сравнение по официальным описаниям продуктов и документации, 05.10.2026.

Короткий вывод: Walrus Memory — не замена mem0 «по умолчанию», а другой выбор по владению. Если память должна принадлежать пользователю, переживать смену рантайма и быть проверяемой — смотрите сюда. Если нужно быстро добавить память в существующее приложение — начните с привычного слоя, а сюда приходите, когда упрётесь в их границы.

Частые вопросы

Что такое Walrus Memory одним предложением?
Это память для ИИ-агентов, которая живёт вне вашего приложения: SDK на Python и TypeScript, MCP-сервер для агентских клиентов, шифрование Seal и хранение в децентрализованной сети Walrus, а права и владение привязаны к аккаунту в Sui.
Нужно ли переписывать стек, чтобы подключить память?
Нет. Для существующего кода есть SDK (две строки на подключение клиента) и middleware для LangChain и OpenAI SDK; для готовых агентских клиентов память подключается как MCP-сервер или плагин. Переписывать приложение под Walrus не нужно.
Это бесплатно?
SDK бесплатный (Apache-2.0). Платят за хранение и операции сети: WAL за хранение и SUI за газ. На managed relayer Walrus Foundation платить вручную не нужно, но у этого варианта общий контур, отсутствие SLA и доверие хостингу — он видит текст до шифрования.
Где физически лежит память и кто её видит?
Записи шифруются и заливаются в сеть Walrus блобами; доступ определяется делегированным ключом вашего аккаунта. При managed-релейере на его стороне видно текст до шифрования — именно поэтому для чувствительных данных советуют свой релейер.
Что значит memory space и зачем namespace?
Memory space — изолированный участок памяти, который определяется владельцем (кошелёк Sui), вашим namespace и идентификатором приложения. Namespace — ваш ярлык вроде chatbot-prod, он организует записи внутри аккаунта, но изоляцию между пользователями обеспечивает владелец.
Можно ли этим пользоваться из России?
Технических ограничений на сам SDK нет, оплата и доступ к сети идут в криптовалюте (WAL и SUI), а не картой. Практический вопрос — доступность сервисов и обменных операций; общие схемы оплаты AI-сервисов из РФ мы разбирали отдельно. Начните с тестового контура: он бесплатный.

Официальные источники

Начать с тестового контура
Начните на staging: он бесплатный и повторяет production по интерфейсу. Дальше достаточно решить, работаете вы через managed relayer или поднимаете свой — и перенести те же namespace и код на mainnet.