EnglishРусский Map

Stash

title
Stash
type
toolbox
summary
Память для агентов на Postgres: консолидация сырых эпизодов в факты, причинно-следственные связи и паттерны
tags
golang, ai-agents, memory, mcp, postgres, watchlist
language
Go
license
Apache-2.0
created
2026-04-25
updated
2026-04-25
lang
ru
translation_of
stash
source_updated
2026-04-25
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-high

Stash - постоянный слой памяти для AI-агентов: единый бинарник на Go, бэкенд на Postgres + pgvector, MCP-сервер, независимость от конкретных моделей. Идея: эпизоды (сырые наблюдения) в фоновом режиме синтезируются в факты, связи, причинно-следственные цепочки, паттерны и противоречия, разложенные по иерархическим пространствам имён. Решает ту же задачу, что hippo-memory и mempalace, но с другой философией: Stash делает главный упор на конвейер консолидации.

Добавлен в watchlist - репозиторий создан 2026-04-24, за день до этой записи. За первые 24 часа вышло три релиза v0.x. Автор (Mohammed Al Ashaal) - опытный разработчик (247 публичных репозиториев, 557 подписчиков), но сам проект совсем свежий.

Девятиступенчатый конвейер консолидации

Это самая примечательная часть Stash. Фоновый процесс запускается по расписанию и поднимает сырые наблюдения вверх по лестнице абстракций:

# Этап Что делает
01 Эпизоды Append-only журнал сырых наблюдений по мере их поступления
02 Факты LLM группирует связанные эпизоды в синтезированные убеждения с оценкой уверенности
03 Отношения Рёбра сущностей, извлечённые из фактов (граф знаний)
04 Причинно-следственные связи Пары "причина-следствие" между фактами
05 Паттерны Абстракции более высокого порядка над несколькими фактами
06 Противоречия Самокоррекция и снижение уверенности при конфликте убеждений
07 Вывод целей (NEW) Факты автоматически отслеживаются на соответствие активным целям; выявляются прогресс и противоречия
08 Паттерны сбоев (NEW) Обнаружение повторяющихся ошибок; извлечение паттернов неудач в виде новых фактов
09 Проверка гипотез (NEW) Новые свидетельства пассивно подтверждают или опровергают открытые гипотезы

В hippo-memory тоже есть шаг консолидации (hippo sleep объединяет эпизодическую память в семантические паттерны), но останавливается на этапе 5. Stash развивает ту же биологическую метафору памяти в сторону причинно-следственных рассуждений, обработки противоречий и отслеживания целей с гипотезами. Работают ли этапы 4-9 на самом деле так, как заявлено, - открытый вопрос: подобные обещания требуют проверки на реальной практике, а у репозитория возрастом в один день такого опыта ещё нет.

Иерархические пространства имён

Память устроена как файловая система. Пути иерархичны, чтение рекурсивно обходит поддеревья, запись всегда идёт по одному точному пути:

/                       (everything)
├── /users/alice        (who alice is, her preferences)
├── /projects           (all projects)
│   ├── /projects/restaurant-saas
│   └── /projects/mobile-app
└── /self               (agent self-knowledge)
    ├── /self/capabilities
    ├── /self/limits
    └── /self/preferences

Пространство имён /self - самая необычная деталь. Вызов init создаёт его заготовку, а агент использует собственный слой памяти для ведения модели самого себя: что у него получается хорошо, с чем возникают трудности, как он предпочитает действовать. Это ближе к архитектуре автономных исследовательских агентов, чем к типичной памяти для "сохранения пользовательских предпочтений". Сравните с charlie-daemons (автономные AI-процессы, описанные в markdown) и более широким разделением agents-vs-daemons - если воспринимать цикл /self всерьёз, Stash находится ближе к концепции демонов.

Stash против RAG

На главной странице репозитория подробно объясняется, почему Stash - это не система RAG. RAG ищет по уже написанным документам; Stash создаёт знания из опыта самого агента. Разница подаётся как "библиотекарь" против "коллеги". На практике это означает, что Stash принимает структурированные логи вызовов инструментов и реплики диалогов, а не готовые корпуса текстов, и формирует структурированные факты, связи и гипотезы, а не чанки. В стеке могут уживаться оба подхода: RAG для документов, Stash для накопленного опыта.

Интеграция с MCP

Поддерживает MCP из коробки. Предоставляет 28 инструментов: remember/recall/forget, управление пространствами имён, запросы к фактам, обход связей, запросы к причинно-следственным цепочкам, разрешение противоречий, управление гипотезами и запуск консолидации. Подключить его к Claude Desktop, Cursor, OpenCode или любому другому MCP-клиенту можно двумя командами:

./stash mcp execute --with-consolidation
./stash mcp serve --port 8080 --with-consolidation

Бэкенд, независимый от моделей

Stash использует один OpenAI-совместимый провайдер и для эмбеддингов, и для рассуждений. В файле .env можно указать OpenRouter, Ollama, vLLM, Groq, LM Studio или любой другой совместимый эндпоинт. Сам автор запускает Stash локально с привязкой к 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

STASH_VECTOR_DIM фиксируется при первой инициализации - размерность в pgvector нельзя изменить без полного сброса базы данных. Значение по умолчанию - 1536 (OpenAI text-embedding-3-small); для Ollama с моделью nomic-embed-text нужно указать 768.

Настройка

Всё настраивается тремя командами через Docker Compose, который связывает воедино Postgres + pgvector + Stash + MCP-сервер + воркер консолидации:

git clone https://github.com/alash3al/stash
cd stash
cp .env.example .env   # set API key, models, STASH_VECTOR_DIM
docker compose up

Автономный цикл

В Stash встроен цикл автономного исследования, рассчитанный на запуск по cron: каждые 5 минут агент ориентируется (вспоминает контекст, цели, прошлые ошибки), исследует выбранную им самим тему, выявляет противоречия в накопленных знаниях, формулирует гипотезу или паттерн, прогоняет конвейер консолидации, записывает итоги сессии и останавливается. Это самая радикальная интерпретация памяти агентов во всём каталоге toolbox на данный момент. Приносит ли она реальную пользу или приводит лишь к бесполезной активности - пока неизвестно.

Статус

  • Создан: 2026-04-24
  • Звёзд: 96 (на момент добавления, 2026-04-25)
  • Релизы: v0.1.0, v0.1.1, v0.2.0 - все вышли 2026-04-25
  • Открытых issues: 0, форков: 0
  • Один автор (alash3al)
  • Профиль автора: опытный Go-разработчик, Хургада, Египет, 247 публичных репозиториев, 557 подписчиков
  • Apache-2.0

Сигналы для повторной проверки на 2026-07-25: дают ли этапы 4-9 (причинно-следственные связи, противоречия, цели, ошибки, гипотезы) полезный результат в реальной работе? Сделал ли кто-то, кроме автора, нетривиальную интеграцию? Стабилизировался ли API? Продолжился ли рост звёзд или остановился?

Репозиторий: https://github.com/alash3al/stash - 96 звёзд, Apache-2.0.