- Дата публикации
Stash: открытый «мозг» для любых ИИ‑агентов вместо блокнотной памяти ChatGPT и Claude
Что нового
Stash — это открытый слой памяти для ИИ‑агентов, который пытается дать им не просто контекст, а постоянный «опыт жизни». Главные новшества:
- Открытый исходный код и Apache 2.0: можно развернуть у себя, доработать, встроить в свои агенты.
- MCP‑совместимость по умолчанию: Stash говорит на протоколе MCP, так что его можно подключить к Claude Desktop, Cursor, OpenCode, локальным LLM и любому другому MCP‑клиенту.
- Хранение на PostgreSQL + pgvector: нормальная база, нормальный векторный поиск, без собственных закрытых форматов.
- Иерархические пространства имён (namespaces): память раскладывается по «папкам» вида
/users/alice,/projects/restaurant-saas,/selfи их подпапкам, с рекурсивным чтением. - Полноценный когнитивный пайплайн из 9 стадий:
- Episodes — сырые события.
- Facts — сжатые факты.
- Relationships — связи между сущностями.
- Causal Links — причинно‑следственные пары.
- Patterns — абстрактные паттерны.
- Contradictions — поиск противоречий и пересчёт уверенности.
- Goal Inference — отслеживание прогресса по целям.
- Failure Patterns — выделение повторяющихся ошибок.
- Hypothesis Scan — автоматическая проверка гипотез на новом контенте.
- 28 MCP‑инструментов: от простого
remember/recallдо работы с целями, неудачами, гипотезами, причинно‑следственными цепочками и противоречиями. - Автономный обучающий цикл: можно запустить агента, который каждые 5 минут сам вспоминает контекст, исследует тему, формирует выводы, консолидирует знания и «засыпает» до следующего запуска.
- Self‑model агента: отдельный namespace
/selfс тремя файлами‑областями —capabilities,limits,preferences. Агент хранит знания о себе и опирается на них при планировании. - Поддержка любых источников моделей через OpenAI‑совместимый API: OpenRouter (сотни моделей, в том числе GPT, Claude, Gemini, Mistral), локальные движки вроде Ollama, vLLM, LM Studio, llama.cpp‑серверы, Groq и другие.
- Чёткая работа с размерностью эмбеддингов: переменная
STASH_VECTOR_DIMв.envзадаёт размерность векторов для pgvector и не может меняться после инициализации базы.
Из конкретных чисел:
- 28 MCP‑инструментов в комплекте.
- 6 основных стадий пайплайна + 3 новых (Goals, Failures, Hypotheses) = 9 шагов обработки памяти.
- Примеры конфигураций показывают работу с размерностями эмбеддингов 768 и 1536.
Как это работает
Stash сидит между вашим ИИ‑агентом и внешним миром. Агент общается с пользователем, сервисами, API. Stash наблюдает всё это, сохраняет и структурирует опыт.
Модель работы с памятью
-
Episodes — сырые события.
Каждый запрос пользователя, ответ агента, важное действие или результат — отдельный эпизод. Это «чёрновики» памяти, которые Stash складывает в Postgres и индексирует векторно через pgvector.
-
Facts — сжатые факты.
LLM‑«reasoner» периодически обрабатывает пачки эпизодов и превращает их в факты с уровнем уверенности. Это похоже на конспект бесконечной переписки.
-
Relationships — граф сущностей.
Из фактов Stash выделяет сущности и связи между ними. Получается граф: кто с кем связан, какие объекты встречаются в каких контекстах.
-
Causal Links — причинно‑следственные связи.
Stash строит пары вида «если X, то Y». Это позволяет агенту не просто помнить, что произошло, а понимать, что к чему привело.
-
Patterns — абстракции.
На основе фактов и связей Stash формирует более общие паттерны: типичные сценарии, устойчивые предпочтения, повторяющиеся шаги.
-
Contradictions — самопроверка.
Когда новые факты противоречат старым, Stash помечает конфликт и снижает уверенность в устаревших данных. Это защита от «зацементированных» ошибочных выводов.
-
Goal Inference — цели.
Stash автоматически отслеживает, какие факты относятся к активным целям, фиксирует прогресс и подсвечивает, где действия шли вразрез с целями.
-
Failure Patterns — неудачи.
Если агент повторяет ошибку, Stash видит, что сценарий уже приводил к провалу, и выносит это в отдельные факты. Агент получает шанс не наступать на те же грабли.
-
Hypothesis Scan — гипотезы.
Stash хранит открытые гипотезы и при появлении новых эпизодов автоматически проверяет, подтверждают они гипотезу или опровергают.
Всё это крутится на связке PostgreSQL + pgvector. Stash не тянет собственный проприетарный стор, а использует стандартную реляционную базу с векторным расширением.
Namespaces: память как файловая система
Stash делит память на пространства имён, похожие на дерево папок:
/users/alice— кто такой пользователь, его привычки и предпочтения./projects— все проекты./projects/restaurant-saas— конкретный проект: решения, фичи, цены./self— знания агента о самом себе.
Ключевые принципы:
- Рекурсивное чтение: запрос к
/projectsавтоматически захватывает/projects/stash,/projects/mobile-appи другие подпапки. - Точный запись: запись всегда идёт в один конкретный namespace, чтобы не смешивать, например, пользователя и проект.
- Жёсткое разделение: пользовательская память не смешивается с памятью проекта, а self‑модель агента живёт отдельно в
/self.
MCP‑интеграция
Stash реализует MCP‑сервер. Агент (Claude Desktop, Cursor, локальный клиент) подключается к нему как к обычному MCP‑инструменту и получает 28 команд:
- Базовые:
remember,recall,forget,init. - Работа с целями:
goals. - Неудачи:
failures. - Гипотезы:
hypotheses. - Консолидация и запросы:
consolidate,query_facts,relationships. - Причинно‑следственные связи:
causal_links. - Противоречия:
contradictions. - Пространства имён и контекст:
namespaces,context,self-model.
Запуск MCP‑сервера выглядит так:
$ ./stash mcp execute --with-consolidation
$ ./stash mcp serve --port 8080 --with-consolidation
✓remember · recall · forget · init
✓goals · failures · hypotheses
✓consolidate · query_facts · relationships
✓causal links · contradictions
✓namespaces · context · self-model
$
Self‑model: память о самом агенте
По команде init Stash создаёт структуру /self с тремя зонами:
/self/capabilities— где агент силён./self/limits— где он регулярно ошибается./self/preferences— как ему удобнее работать: формат ответов, стиль, шаги планирования.
Агент может опрашивать эту память и адаптировать план: не брать на себя задачи, где он регулярно «падает», или менять стиль объяснений под пользователя.
Автономный обучающий цикл
Stash предлагает готовый сценарий фонового обучения агента:
- Orient — агент вспоминает контекст, активные цели, незакрытые гипотезы, прошлые провалы.
- Research — сам выбирает тему и ищет информацию в сети.
- Think — ищет противоречия и пробелы в знаниях.
- Invent — формирует новый паттерн, гипотезу или вывод.
- Consolidate — пропускает всё через пайплайн Stash.
- Reflect + Sleep — пишет резюме сессии, задаёт контекст на будущее и останавливается.
Этот цикл можно запускать по cron каждые 5 минут. Агент будет постепенно наращивать собственный «опыт» без участия человека.
Модели и инфраструктура
Stash не привязан к конкретному провайдеру. Он работает с любым сервисом, который поддерживает OpenAI‑совместимый API:
-
Через OpenRouter:
- Один endpoint:
https://openrouter.ai/api/v1. - Доступ к GPT, Claude, Gemini, Mistral и другим.
- Можно выбрать одну модель для эмбеддингов и другую для рассуждений.
- Один endpoint:
-
Локально через Ollama:
- Например, эмбеддинги
nomic-embed-text, reasonerqwen2.5:3b. - Память остаётся полностью локальной и офлайн.
- Например, эмбеддинги
-
Другие провайдеры: vLLM, LM Studio, llama.cpp‑серверы, Together AI, Groq — главное, чтобы API был в формате OpenAI.
Ключевой технический момент — переменная STASH_VECTOR_DIM: размерность эмбеддингов должна соответствовать выбранной embedding‑модели и задаётся один раз при инициализации базы.
Что это значит для вас
Когда Stash реально полезен
1. Долгие проекты с ИИ‑ассистентом
Если вы ведёте с агентом один и тот же проект неделями:
- Разработка SaaS, мобильного приложения, внутреннего инструмента.
- Исследовательский проект с длинной историей гипотез и проверок.
- Продолжительные консультации (маркетинг, продукт, стратегия).
Stash позволяет агенту помнить:
- контекст проекта;
- принятые решения;
- то, что уже пробовали и что не сработало;
- текущие цели и прогресс по ним.
Вы не тратите первые 10–15 минут каждой сессии на пересказ истории.
2. Персональные ассистенты и рабочие агенты
Если вы строите персонального помощника, который должен помнить привычки и стиль работы:
- Stash держит профиль пользователя в
/users/<id>. - Ассистент помнит ваши предпочтения по инструментам, формату документов, расписанию.
- Ошибки (например, «не предлагать больше Stripe») фиксируются как failure patterns.
3. Мульти‑модельные и локальные решения
Stash особенно полезен, если вы:
- хотите менять модели под задачу (дешёвая для рутинных вещей, более мощная для сложных);
- запускаете локальные LLM через Ollama или vLLM;
- не хотите отдавать память пользователей в облако OpenAI или Anthropic.
Память у Stash модель‑агностична: вы можете сегодня использовать одну модель, завтра другую. История и знания останутся.
4. Автономные агенты, которые учатся на собственном опыте
Если вы экспериментируете с агентами, которые:
- сами ходят в интернет;
- сами формируют гипотезы;
- сами проверяют их;
- сами обновляют свои знания,
Stash даёт им структуру:
- где хранить опыт;
- как превращать его в знания;
- как отслеживать цели и неудачи;
- как не повторять старые ошибки.
Когда Stash не нужен
- Разовые запросы к GPT/Claude. Если вы приходите раз в неделю спросить «что посмотреть вечером», Stash избыточен.
- Короткие чаты без истории. Для FAQ‑бота на 3–4 вопроса проще использовать обычный RAG по базе знаний.
- Жёсткие ограничения по инфраструктуре. Stash требует PostgreSQL и Docker (или альтернативной сборки). Если нет возможности поднять даже минимальный стек, он не подойдёт.
Вопрос доступа и VPN
Stash — это открытый проект, который вы запускаете у себя. Но для работы ему нужны модели:
- через OpenRouter (
https://openrouter.ai/api/v1); - или через другие внешние API (Groq, Together и т.д.);
- или через локальные движки (Ollama, vLLM, LM Studio).
Если внешний провайдер заблокирован в России, придётся использовать VPN или полностью локальные модели. Локальный вариант (Ollama + Stash + pgvector) не требует выхода в интернет.
Место на рынке
Stash решает ту же боль, что и «память» в ChatGPT и Claude.ai, но по‑другому.
По сравнению с «памятью» ChatGPT и Claude.ai
Из таблицы в проекте:
- Запоминает пользователя: ChatGPT — да, Claude.ai — да, Stash — да.
- Работает с любыми моделями: ChatGPT — нет, Claude.ai — нет, Stash — да.
- Работает с локальными/частными моделями: ChatGPT — нет, Claude.ai — нет, Stash — да.
- Вы владеете данными: ChatGPT — нет, Claude.ai — нет, Stash — да.
- Open source: ChatGPT — нет, Claude.ai — нет, Stash — да.
- Фоновая консолидация памяти: ChatGPT — нет, Claude.ai — нет, Stash — да.
- Отслеживание целей и намерений: ChatGPT — нет, Claude.ai — нет, Stash — да.
- Обучение на неудачах: ChatGPT — нет, Claude.ai — нет, Stash — да.
- Причинно‑следственное моделирование: ChatGPT — нет, Claude.ai — нет, Stash — да.
- Self‑model агента: ChatGPT — нет, Claude.ai — нет, Stash — да.
ChatGPT и Claude.ai дают память внутри своих платформ. Stash делает похожую идею доступной для любых агентов и моделей, включая локальные.
По сравнению с классическим RAG
RAG (Retrieval Augmented Generation) — это:
- индекс документов;
- быстрый поиск по ним;
- подмешивание найденных фрагментов в промпт.
RAG:
- знает только то, что вы заранее написали в документах;
- не учится на диалогах;
- не отслеживает цели и причинно‑следственные связи;
- не хранит противоречия и не исправляет убеждения.
Stash:
- собирает знания из диалогов и действий агента;
- строит поверх этого граф сущностей и причинно‑следственных связей;
- отслеживает цели, неудачи и гипотезы;
- даёт агенту непрерывный опыт.
RAG логичнее использовать как быстрый поиск по статическим базам знаний (документация, база статей). Stash — как долговременную память о взаимодействиях и решениях.
Ограничения и слабые места
- Нужна инфраструктура: Postgres + pgvector + Docker или аналогичная сборка.
- Размерность эмбеддингов (
STASH_VECTOR_DIM) нельзя менять после первого запуска без полной пересоздачи базы. - Скорость и стоимость зависят от выбранных моделей (через OpenRouter или других провайдеров). Встроенных бенчмарков производительности Stash не даёт — вы сами выбираете баланс качество/цена.
Установка
Stash можно поднять в пару команд через Docker Compose.
Быстрый старт в 3 шага
- Клонировать репозиторий:
$ git clone https://github.com/alash3al/stash
$ cd stash
- Скопировать и настроить
.env:
$ cp .env.example .env
# отредактируйте .env: API‑ключ, модели и STASH_VECTOR_DIM
Критично: установите STASH_VECTOR_DIM до первого запуска. pgvector фиксирует размерность, и изменить её потом нельзя без сброса базы.
- Запустить Docker Compose:
$ docker compose up
✓ postgres + pgvector ready
✓ stash migrations applied
✓ mcp server listening
✓ consolidation running in background
$
После этого Stash поднимает Postgres с pgvector, применяет миграции, запускает MCP‑сервер и фоновую консолидацию памяти.
Как запустить: конфигурации моделей
Stash использует единый OpenAI‑совместимый endpoint и разделяет модели для эмбеддингов и рассуждений.
Пример: OpenRouter (облако)
STASH_OPENAI_BASE_URL=https://openrouter.ai/api/v1
STASH_OPENAI_API_KEY=sk-or-...
STASH_EMBEDDING_MODEL=openai/text-embedding-3-small
STASH_REASONER_MODEL=anthropic/claude-3-haiku
STASH_VECTOR_DIM=1536
Здесь:
- эмбеддинги —
openai/text-embedding-3-smallс размерностью 1536; - reasoner —
anthropic/claude-3-haiku.
Пример: локальный Ollama
STASH_OPENAI_BASE_URL=http://localhost:11434/v1
STASH_EMBEDDING_MODEL=nomic-embed-text
STASH_REASONER_MODEL=qwen2.5:3b
STASH_VECTOR_DIM=768
- эмбеддинги —
nomic-embed-textс размерностью 768; - reasoner —
qwen2.5:3b.
Пример: Groq
STASH_OPENAI_BASE_URL=https://api.groq.com/openai/v1
STASH_EMBEDDING_MODEL=openai/text-embedding-3-small
STASH_REASONER_MODEL=llama-3.1-8b-instant
STASH_VECTOR_DIM=1536
Везде одно правило: STASH_VECTOR_DIM должен совпадать с размерностью выбранной embedding‑модели.
Как подключить к агентам через MCP
Чтобы ваш агент начал пользоваться памятью Stash, достаточно подключить MCP‑сервер Stash.
Команды запуска:
stash · mcp stdio
$ ./stash mcp execute --with-consolidation
$ ./stash mcp serve --port 8080 --with-consolidation
✓remember · recall · forget · init
✓goals · failures · hypotheses
✓consolidate · query_facts · relationships
✓causal links · contradictions
✓namespaces · context · self-model
$
Дальше вы настраиваете в Claude Desktop, Cursor, OpenCode или своём агенте MCP‑endpoint Stash. Агент получает доступ ко всей когнитивной «начинке» Stash и начинает помнить вас между сессиями.
Stash по сути превращает ваш ИИ‑агент из «мозга без биографии» в систему, которая накапливает опыт. Если вы строите что‑то сложнее разового чат‑бота, это один из немногих сейчас способов дать агенту долговременную память, не завязанную на конкретную платформу вроде ChatGPT или Claude.ai.