# memory-industry

Долговременная память для ИИ-агентов: граф знаний, который агент ищет, проверяет и правит между сессиями.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 30
- Автор: LeandroPG19
- Лицензия: Apache-2.0 · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/LeandroPG19/Memorys
- Обновлён: 2026-10-21
- HTML: https://affpapa.org/nevibecode/mcp/memory-industry

## Что делает

MemoryIndustry (раньше назывался cuba-memorys) — MCP-сервер на Rust с хранилищем в PostgreSQL 18 и pgvector. Агент получает граф знаний, по которому можно искать, рассуждать и вносить исправления, поэтому кодовая база не забывается от сессии к сессии. Внутри 31 MCP-инструмент (32 при `CUBA_DOCS=1`) и 28 CLI-команд, среди них гибридный поиск BM25+MMR и проверка утверждений с судьёй-LLM.

Установка короткая: `pip install memory-industry` (или `npm install -g memory-industry`), затем `claude mcp add memory-industry -- memory-industry`. При первом запуске сервер сам поднимает контейнер PostgreSQL 18 + pgvector через Docker и создаёт схему. Docker должен быть запущен, иначе ничего не стартует. Свою базу тоже можно подключить через `DATABASE_URL` — тогда понадобятся расширения `vector` и `pg_trgm`, а `cuba-memorys doctor` покажет, чего не хватает. Команда `cuba-memorys setup` прописывает конфиг всем найденным клиентам, а `setup check` сверяет их между собой: расхождение в размерности эмбеддингов ломает поиск тихо.

Вместо процесса на каждого клиента есть общий демон: `cuba-memorys serve` слушает `127.0.0.1:8787` и грузит модели один раз, а не по копии на каждое окно редактора. Если демон слушает не loopback, токен `CUBA_HTTP_TOKEN` обязателен, и на маршрутизируемом адресе он должен быть не короче 32 символов — без него граф отдаётся вообще без аутентификации. Порт открывается раньше загрузки моделей, поэтому второй демон на том же порту падает сразу, а не через две минуты.

## Требования
- Нужно: Node.js (команды через npx)
- Переменные окружения: `DATABASE_URL`, `CUBA_PROJECT_FILTER`, `CUBA_SYNC_DIR`, `CUBA_JUDGE`, `CUBA_JUEZ_CLI`, `CUBA_JUEZ_MODEL`, `CUBA_REM_RELATION_BATCH`, `CUBA_RERANKER_PATH`, `CUBA_RERANK_FIXED_SHAPE` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env DATABASE_URL=<DATABASE_URL> --env CUBA_PROJECT_FILTER=<CUBA_PROJECT_FILTER> --env CUBA_SYNC_DIR=<CUBA_SYNC_DIR> --env CUBA_JUDGE=<CUBA_JUDGE> --env CUBA_JUEZ_CLI=<CUBA_JUEZ_CLI> --transport stdio memory-industry -- npx -y memory-industry
```
Вместо <…> подставьте свои значения. Ещё 4 переменные окружения — в README сервера

### Codex

**Командой платформы**
```bash
codex mcp add memory-industry --env DATABASE_URL=<DATABASE_URL> --env CUBA_PROJECT_FILTER=<CUBA_PROJECT_FILTER> --env CUBA_SYNC_DIR=<CUBA_SYNC_DIR> --env CUBA_JUDGE=<CUBA_JUDGE> --env CUBA_JUEZ_CLI=<CUBA_JUEZ_CLI> -- npx -y memory-industry
```
Вместо <…> подставьте свои значения. Ещё 4 переменные окружения — в README сервера

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "memory-industry": {
            "command": "npx",
            "args": [
                "-y",
                "memory-industry"
            ],
            "env": {
                "DATABASE_URL": "<DATABASE_URL>",
                "CUBA_PROJECT_FILTER": "<CUBA_PROJECT_FILTER>",
                "CUBA_SYNC_DIR": "<CUBA_SYNC_DIR>",
                "CUBA_JUDGE": "<CUBA_JUDGE>",
                "CUBA_JUEZ_CLI": "<CUBA_JUEZ_CLI>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 4 переменные окружения — в README сервера

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "memory-industry": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "memory-industry"
            ],
            "env": {
                "DATABASE_URL": "<DATABASE_URL>",
                "CUBA_PROJECT_FILTER": "<CUBA_PROJECT_FILTER>",
                "CUBA_SYNC_DIR": "<CUBA_SYNC_DIR>",
                "CUBA_JUDGE": "<CUBA_JUDGE>",
                "CUBA_JUEZ_CLI": "<CUBA_JUEZ_CLI>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. Ещё 4 переменные окружения — в README сервера

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e DATABASE_URL=<DATABASE_URL> -e CUBA_PROJECT_FILTER=<CUBA_PROJECT_FILTER> -e CUBA_SYNC_DIR=<CUBA_SYNC_DIR> -e CUBA_JUDGE=<CUBA_JUDGE> -e CUBA_JUEZ_CLI=<CUBA_JUEZ_CLI> memory-industry npx -y memory-industry
```
Вместо <…> подставьте свои значения. Ещё 4 переменные окружения — в README сервера

## Когда брать
- найти нужный фрагмент кода в памяти агента по смыслу, а не по точному слову
- сохранить решения и договорённости между сессиями Claude
- проверить утверждение агента о коде с помощью судьи-LLM
- поднять общую память для нескольких окон редактора без копий моделей
- сверить конфиги MCP у разных клиентов и поймать расхождение размерности эмбеддингов

## Примеры запросов агенту
- Найди в памяти, что мы решали про схему авторизации
- Сохрани в память вывод: миграции идут через alembic
- Проверь утверждение, что этот модуль нигде не вызывается

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
