MemoryBank+ — стек для вайб-кодинга: память, workflow, граф кода и companion-плагины для AI-агентов (Claude Code, Cursor, Codex, Windsurf) в одном инсталляторе.
Это форк vanzan01/cursor-memory-bank (он же «Memory Bank 2.0»), адаптированный под практику реального проекта. Само ядро-слой по-прежнему называется «Memory Bank» —
+означает «плюс остальные слои сверху» (см. таблицу ниже).
MemoryBank+ — это стек инструментов для вайб-кодинга, компактный набор слоёв, которые превращают AI-агента из «забывчивого помощника» в дисциплинированного коллегу с долговременной памятью о проекте, точной навигацией по коду и подключённой companion-инфраструктурой.
Стек будет постоянно дополняться по мере того, как реальная практика выявляет новые проблемы — то, что доказало пользу в реальных задачах, попадает сюда и раздаётся как часть бандла.
Сейчас MemoryBank+ состоит из пяти независимых, но взаимодополняющих слоёв:
| Слой | Что делает | Откуда берётся |
|---|---|---|
| 1. Memory Bank (ядро) | Структурированная память + 6-фазный workflow задачи (VAN → PLAN → CREATIVE → BUILD → REFLECT → ARCHIVE) |
Форк vanzan01/cursor-memory-bank + расширения |
| 2. codegraph | Локальный граф кода «где определён символ / кто его вызывает» — точечная навигация без блуждания | @colbymchenry/codegraph через MCP |
| 3. Companion skills & plugins | claude-mem (кросс-сессионная память), debug-agent (доказательная отладка), supabase (MCP-плагин) |
Подтягиваются автоматически |
| 4. Status line (Claude Code) | Многострочная панель в Claude Code: модель, git, контекст, токены, стоимость, лимиты, накопленные траты | Кастомный bash-скрипт, опт-ин при установке |
| 5. Multi-target installer | Один скрипт ставит весь стек в Claude Code / Cursor / Codex / Windsurf / generic | Этот репозиторий (install.sh) |
Дальше — про каждый слой подробнее.
Система папок, файлов и slash-команд, которая даёт агенту долговременную память о проекте и дисциплинированный workflow задачи.
- Постоянная память между сессиями — агент знает, что было сделано вчера, какие решения приняты, какие уроки получены.
- Структурированный workflow задачи — 6 фаз:
VAN → PLAN → CREATIVE → BUILD → REFLECT → ARCHIVE. Каждая отвечает за своё. - Накопление знаний — рефлексии после каждой задачи + реестр уроков (
reflection/lessons-registry.md), который инкрементально накапливает повторяющиеся уроки и продвигает дозревшие в always-loaded память. - Защита от хаоса при параллельной работе — HTML-маркеры
<!-- TASK #NNNN BEGIN/END -->позволяют нескольким агентам одновременно работать в одних shared-файлах. - Экономия токенов — карта компонентов (
docs/component-map.md) маршрутизирует «файл → назначение», агент не блуждает по кодовой базе.
| Проблема | Решение |
|---|---|
| «Каждый раз пересказываю агенту, что за проект» | projectbrief.md, productContext.md, techContext.md |
| «Агент каждый раз ищет одни и те же файлы» | docs/component-map.md |
| «Один и тот же баг чиним по третьему разу» | reflection/ + reflection/lessons-registry.md |
| «AI выдумывает паттерны вместо использования существующих» | system-patterns/ + style-guide/ |
| «Большой проект не помещается в контекст» | Дисциплина чтения через _index.md |
| «Два агента сломали друг другу правки» | HTML BEGIN/END блоки с Owner |
| «Не помню, фиксили мы уже это или нет» | archive/ + tasks.md с ARCHIVED-маркерами (TTL 7 дней) |
| «Баг вернулся — это новая задача или старая?» | Round/Iteration система в BEGIN-блоке |
┌─────────────────────────────────────────────────────────┐
│ /van — оценка сложности (L1/L2/L3/L4), детект round │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ /plan — план реализации (для L2+), creative phases │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ /creative — дизайн-решения (для L3+, при необходимости)│
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ /build — реализация по плану, тесты, прогресс │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ /reflect — рефлексия, обновление component-map │
└─────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────┐
│ /archive — финализация, ARCHIVED-маркер, TTL-чистка │
└─────────────────────────────────────────────────────────┘
Уроки: /reflect (шаг 3a) инкрементально пополняет reflection/lessons-registry.md
| Уровень | Описание | Workflow |
|---|---|---|
| L1 | Быстрый багфикс, опечатка | /van → /build → /reflect → /archive |
| L2 | Простое улучшение | /van → /plan → /build → /reflect → /archive |
| L3 | Новая фича с дизайн-решениями | /van → /plan → /creative → /build → /reflect → /archive |
| L4 | Системное изменение | Полный цикл + фазная реализация |
Стек работает ровно настолько хорошо, насколько строго ты следуешь дисциплине. Без неё это просто папка с шаблонами.
Настоятельно рекомендуем:
- Одна задача = одна сессия = весь цикл фаз. Каждая задача начинается с
/vanи заканчивается на/archive. Не смешивать две темы в одном диалоге — Memory Bank, реестр уроков и Round/Iteration опираются на чёткое разделение «что мы делали в этой задаче». - Не пропускать
/reflectи/archive. Это шаги, которые окупаются с задержкой — через недели, когдаlessons-registry.mdначнёт ловить повторяющиеся паттерны и предлагать продвижение в always-loaded память. Пропустишь — будешь чинить тот же баг заново через месяц. - Уровень сложности определяется в
/van, не задним числом. Если в процессе оказалось, что задача больше — лучше прерваться и заново оценить, чем тащить L1-workflow на L3-задачу.
Исключение — batch для мелочи. Если у тебя 3-5 однотипных тривиальных правок (опечатки, переименование переменной, обновление импортов), их можно собрать в одну задачу #NNNN с пометкой batch в названии. Один /van, один /build со списком, один /reflect на всю пачку. Что-то большее — уже отдельные задачи, каждая через свой цикл.
| Команда | Что делает |
|---|---|
/mb-init |
Инициализирует пустой Memory Bank (для совсем чистого старта; обычно делает install.sh) |
/mb-bootstrap |
Сканирует существующий проект и заполняет Memory Bank кодом-производным контекстом |
/van |
VAN — оценка сложности задачи, детект round N+1, чтение реестра уроков |
/plan |
PLAN — детальный план реализации, identify creative phases |
/creative |
CREATIVE — дизайн-решения, 2-4 варианта, обоснование выбора |
/build |
BUILD — пошаговая реализация по плану, тесты, итерации |
/reflect |
REFLECT — рефлексия, обновление component-map и system-patterns |
/archive |
ARCHIVE — финализация, ARCHIVED-маркер, TTL-чистка старых указателей |
memory-bank/
├── README.md ← Этот файл для будущих агентов
├── tasks.md ← Активные задачи + ARCHIVED-маркеры
├── activeContext.md ← Текущий фокус
├── progress.md ← История реализаций
├── projectbrief.md ← Что за проект
├── productContext.md ← Продуктовый контекст
├── techContext.md ← Стек и зависимости
│
├── archive/ ← archive-NNNN-*.md (по одной на завершённую задачу)
├── reflection/ ← reflection-NNNN-*.md
│ └── lessons-registry.md ← реестр уроков (пополняется в /reflect, шаг 3a)
├── creative/ ← creative-NNNN-*.md (дизайн-решения)
│
├── plans/ ← Большие планы фич (см. WHEN_TO_USE.md)
├── backlog/ ← Парковка отложенной работы (см. WHEN_TO_USE.md)
├── audit-sql/ ← SQL-чеки перед миграциями (см. WHEN_TO_USE.md)
│
├── docs/
│ ├── component-map.md ← Маршрутизатор «файл → назначение»
│ └── codex-*.md ← Адаптеры для Codex CLI
│
├── system-patterns/
│ ├── _index.md ← Таблица «паттерн → файл»
│ └── *.md ← По одному файлу на паттерн
│
└── style-guide/
├── _index.md ← Таблица «тема → файл»
└── *.md ← По одному файлу на тему
Локальный граф «где определён символ / кто его вызывает» — позволяет агенту находить нужное место в коде без блуждания по файлам и grep'а вслепую. Сильно экономит токены и точнее, чем поиск по имени.
Ставится автоматически, если в проекте есть код.
Что попадает в проект:
scripts/codegraph-snapshot.mjs— скрипт пересборки графа..mcp.json— добавляется MCP-сервер@colbymchenry/codegraph@0.9.1(если файла нет — создаётся; существующий не трогается; при коллизии — предупреждение).memory-bank/codegraph/README.md— правила работы с графом для агента.npm run codegraph:snapshot— добавляется вpackage.json(если есть npm)..codegraph/— добавляется в.gitignore(индекс — локальный, по машине)..codegraph/codegraph.db— сам индекс строится сразу при установке (если есть Node ≥ 22; иначе — собрать вручную черезnpm run codegraph:snapshot).
Внешние инструменты, на которые опирается workflow и которые подтягиваются вместе со стеком (только для Claude Code — у остальных сред нет CLI для авто-установки плагинов).
| Что | Откуда | Зачем | Когда ставится |
|---|---|---|---|
| claude-mem | claude plugin install claude-mem@thedotmack |
Кросс-сессионная память на уровне Claude Code; backstop для сверки уроков в /reflect (шаг 3a) |
всегда, если найден CLI claude |
| debug-agent | в комплекте (template/skills/debug-agent/) копируется в ~/.claude/skills/ |
Доказательная отладка по runtime-логам (NDJSON); правила в шаблоне и /reflect ссылаются на неё |
всегда (даже без CLI claude); если скилл уже стоит — пропускается |
| supabase | claude plugin install supabase@claude-plugins-official |
Официальный MCP-плагин Supabase (DB, миграции, Edge Functions) | только если в проекте есть папка supabase/ |
Пропустить всю эту секцию: bash install.sh --no-skills.
Поставить вручную позже: claude plugin install claude-mem@thedotmack · claude plugin install supabase@claude-plugins-official.
Для Cursor / Codex / Windsurf / generic companion-секция не запускается. codegraph и Memory Bank ставятся одинаково для всех сред.
Кастомная многострочная статус-панель внизу Claude Code. Заменяет встроенную однострочную дефолтную панель.
Зачем нужна. Дефолтная панель показывает 2-3 поля. Эта — десять самостоятельных строк, каждая отвечает за свой кусок ситуации: «где я», «что делаю», «сколько потратил», «сколько осталось до лимита». Полезно, когда работаешь с агентами часами и хочешь держать всё под глазами без переключений.
Опт-ин. Установщик спросит при --target claude. По умолчанию — НЕ ставится. Принудительно: --statusline (поставить без вопроса) / --no-statusline (пропустить без вопроса).
Кросс-платформа. macOS, Linux, WSL и Git Bash на Windows. Native cmd / PowerShell на Windows не поддерживаются (нужен bash). OS определяется автоматически.
Что попадает в систему:
~/.claude/statusline.sh— сам bash-скрипт.~/.claude/settings.json— патчится блокомstatusLineчерезjqmerge (остальные ключи не трогаются).~/.claude/.session-names/— кэш auto-генерируемых имён сессий (создаётся при первом рендере).~/.claude/cache/metrics/— baselines и spend-индекс (создаётся при первом рендере).
Зависимости:
bash(везде, кроме native Windows shells — там нужен Git Bash или WSL)jq(обязательно; установщик проверит и подскажет, если нет)git— опционально, без него секция git просто пропадаетclaudeCLI — опционально, нужен только для авто-генерации имён сессий через Haiku
Панель выводит вертикальный borderless-список из 2-12 строк. Пустые секции автоматически скрываются.
| Строка | Пример | Что показывает | Зачем |
|---|---|---|---|
| title | Sonnet 4.6 · ~/proj · sub |
Модель · текущая директория (с ~) · auth-режим (sub = подписка, api = ANTHROPIC_API_KEY в env) |
Сразу видно, в каком режиме платишь и на какой модели работаешь |
| name | #0427 Toast-уведомления |
Имя сессии. Автоматически генерируется в фоне через Haiku 4.5 по первому промпту юзера (3-4 слова) и кэшируется на диск | Чтобы спустя 2 часа понять, о чём была эта сессия — без скроллинга вверх |
| id | 1e786b41-d6ea-… |
UUID сессии | Для claude --resume <id> — копируется в одно движение |
| git | myorg/myrepo · main ↑2 ✓ |
repo · branch · ↑ahead ↓behind · ●dirty / ✓clean |
Полная картина git-состояния без git status |
| arch | #0427 In-app toast notification |
Последняя архивированная задача из memory-bank/archive/archive-NNNN-*.md |
Видно, на чём остановились в прошлой задаче. Появляется только если у тебя установлен Memory Bank |
| ctx | ▰▰▰▱▱▱▱▱ 38% (76k/200k) |
Прогресс-бар окна контекста + used/max токенов. Цвет: зелёный <50% / жёлтый 50-80% / красный ≥80% | Видно, насколько близко к /compact |
| tok | in 12k · out 3k · cache 87% (r 105k w 8k) |
Суммарные токены за сессию: input / output / cache (hit rate %, read, write). Цвет hit rate: ≥70% зелёный / 40-70% жёлтый / <40% красный | Видно cache efficiency — если hit rate просел, время /compact или новой сессии |
| ses | $0.85 · 23m · +142 -38 |
Стоимость · длительность · diff-статистика (+lines added / -lines removed). Сбрасывается на /clear через baseline-вычитание |
Видно цену текущей задачи отдельно от общей |
| api / equiv | 1d $2.40 · 7d $14 · 30d $42 · 90d $108 · 180d $215 · 365d $410 |
Накопленные траты за 1/7/30/90/180/365 дней. Это две связанные строки: какая активна — зависит от auth-режима (см. ниже под таблицей). Цвет: жёлтый — активный счётчик (сейчас тратишь сюда), серый — историческая ветка (тратил раньше или гипотетический эквивалент) | Тренд расходов и сравнение «подписка vs API» |
| lim | 5h ▰▰▰▱▱▱▱▱ 42% (3h 12m) ¦ 7d ▰▰▱▱▱▱▱▱ 18% (4d 22h) |
Прогресс-бары лимитов Anthropic 5h и 7d + время до сброса. Тот же цветовой код, что в ctx | Видно, когда упрёшься в лимит — заранее можно притормозить |
Это две независимые строки, которые могут отображаться одновременно. Какая активна — определяется по наличию ANTHROPIC_API_KEY в окружении:
- Если работаешь по API-ключу (
auth = api): строкаapi— твои реальные деньги, жёлтая. Строкаequiv— серая история (что бы ты потратил, работая по подписке). - Если работаешь по подписке (
auth = sub): строкаequiv— API-эквивалент, жёлтая. Это сколько ты бы потратил, если бы платил по pay-as-you-go вместо подписки. Строкаapi— серая история твоих прошлых реальных API-списаний.
Зачем это нужно: на подписке ты платишь фикс, а Claude Code считает токены так же, как на API. Строка equiv показывает «теневой счётчик» — окупает ли подписка себя. Если equiv на 30d значительно больше цены подписки — она в плюсе. Если меньше — дешевле перейти на API.
Счётчики раздельные: переключение между API-ключом и подпиской не смешивает суммы.
- На Cursor / Codex / Windsurf / generic — статус-панель пропускается, это фича только Claude Code.
- Если у тебя уже есть
~/.claude/statusline.shилиstatusLineблок вsettings.json— установщик их не трогает (предупреждение + инструкция).
rm ~/.claude/statusline.sh
# затем в ~/.claude/settings.json удалить блок "statusLine"После удаления Claude Code вернётся к дефолтной однострочной панели.
Один bash-скрипт, который раскатывает весь стек в проект.
Открой Claude Code / Cursor / Codex / Windsurf в корне своего проекта и скажи агенту:
Установи мне MemoryBank+ из этого репозитория: https://github.com/ReSkin-Games/memorybank-plus — следуй README.
Агент склонирует репозиторий, прочитает README, запустит install.sh и сам ответит на интерактивные вопросы (либо переспросит у тебя). Это работает, потому что весь установщик идемпотентен и описан в этом README — агенту достаточно его прочитать.
Если хочешь сделать сам:
# 1. Склонируй установщик (один раз)
git clone https://github.com/ReSkin-Games/memorybank-plus.git ~/memorybank-plus
# 2. Из корня твоего проекта запусти install.sh
cd /path/to/your/project
bash ~/memorybank-plus/install.shФлаги:
--lang ru|en— язык команд--target claude|cursor|codex|generic— целевая среда--dry-run— показать что будет сделано без изменений--no-skills— пропустить companion-плагины (claude-mem / debug-agent / supabase)--statusline— поставить статус-панель без интерактивного вопроса--no-statusline— пропустить статус-панель без вопроса
- Спросит язык (русский / English) и среду (Claude Code / Cursor / Codex / Windsurf / generic). Среду пытается определить сам по наличию
~/.claude,~/.codex,.cursor/или CLIcursor— спросит только при неоднозначности. - Создаст
memory-bank/в текущей директории (если уже есть — не перезапишет, пропустит). - Положит 8 slash-команд в нужное место для среды (для Claude — в
~/.claude/commands/, для Cursor — в.cursor/commands/проекта и т.д.). - Создаст или дополнит rules-файл (
CLAUDE.md/.cursorrules/AGENTS.md). Если файл существует — припишет блок<!-- MEMORY-BANK RULES BEGIN/END -->в конец, не трогая остальное. - Базово заполнит
techContext.mdпоpackage.json/Cargo.toml/pyproject.toml/go.mod/Gemfile/composer.json/ Vite / Next.js / папкаsupabase/. - Настроит codegraph слой (если в проекте есть код) — см. секцию 2.
- Поставит companion-скиллы и плагины (только для Claude Code) — см. секцию 3.
- Спросит про статус-панель и поставит, если согласились (только для Claude Code) — см. секцию 4.
В конце скрипт сам поймёт, пустой проект или с кодом, и подскажет следующий шаг — /van <задача> или /mb-bootstrap.
| Среда | Куда устанавливаются команды | Файл правил |
|---|---|---|
| Claude Code | ~/.claude/commands/*.md |
CLAUDE.md |
| Cursor | .cursor/commands/*.md (или .cursor/rules/*.mdc) |
.cursorrules |
| Codex CLI | ~/.codex/prompts/*.md (используются docs/codex-*.md адаптеры) |
AGENTS.md |
| Windsurf | .windsurfrules (правила) + ручной запуск команд |
AGENTS.md |
| Generic | AGENTS.md универсальный fallback |
AGENTS.md |
Новый проект (пусто или почти пусто):
В Claude/Cursor: /van <описание твоей первой задачи>
Существующий проект (уже есть код):
В Claude/Cursor: /mb-bootstrap
Команда /mb-bootstrap запустит агента, который:
- Прочитает
README.md,package.json, корневые конфиги. - Обойдёт
src/(или аналог), сэмплирует 5-15 ключевых файлов. - Заполнит
projectbrief.md,productContext.md,techContext.md. - Создаст первичные таблицы в
docs/component-map.md. - Посеет 2-3 первых паттерна в
system-patterns/_index.md. - Спросит уточнения там, где не уверен.
Q: Коммитить memory-bank/ в git?
A: Да, рекомендуется. Это часть документации проекта. Если работаете в команде — выигрыш огромный: все агенты на разных машинах видят один контекст.
Q: А auto-memory (~/.claude/projects/.../memory/)?
A: Это отдельный слой Claude Code — user-specific. Не часть инсталлятора. Накапливается органически из ваших диалогов.
Q: Что если работают несколько агентов параллельно (например, Claude и Cursor)?
A: HTML-маркеры <!-- TASK #NNNN BEGIN/END --> с полем Owner защищают чужие блоки. Команды учат каждого агента не трогать чужие блоки.
Q: Можно ли использовать только часть фаз (например, без CREATIVE)?
A: Да. Для L1 достаточно van → build → archive. CREATIVE — только при необходимости дизайн-решений. Полный цикл — для L3+.
Q: Как накапливаются повторяющиеся уроки?
A: Инкрементально. На /reflect (шаг 3a) каждый урок задачи сверяется с reflection/lessons-registry.md; повторившийся ≥2 раз и глобально-применимый предлагается к продвижению в always-loaded память (auto-memory / правила). Отдельной команды-дайджеста больше нет — это убрало «мёртвый» артефакт, который никто не перечитывал.
Q: Чем MemoryBank+ отличается от Memory Bank 2.0?
A: Базовая идея и 6-фазный workflow (VAN → PLAN → CREATIVE → BUILD → REFLECT → ARCHIVE) — из vanzan01/cursor-memory-bank v0.8. MemoryBank+ выкручен под практику реального продакшен-проекта и добавляет:
- Карта компонентов (
docs/component-map.md) — маршрутизатор «файл → назначение», агент не блуждает поsrc/. - System patterns + style guide (
system-patterns/_index.md,style-guide/_index.md) — паттерны и стилевые правила с дисциплиной чтения через_index.md. - Реестр уроков (
reflection/lessons-registry.md) — инкрементальное накопление повторяющихся уроков с порогом продвижения в always-loaded память. Заменил «мёртвый» дайджест-артефакт. - Concurrency-safety — HTML-маркеры
<!-- TASK #NNNN BEGIN/END -->с полемOwnerдля параллельной работы нескольких агентов в одних shared-файлах. - Round / Iteration — повторный баг = round N+1 одной задачи, не новая задача.
- TTL для ARCHIVED-маркеров — указатели в
tasks.mdживут 7 дней, чистка в/archive. /mb-bootstrap— отдельная фаза, сканирующая существующий проект и заполняющая Memory Bank кодом-производным контекстом.- codegraph layer — локальный граф кода (
@colbymchenry/codegraph+ MCP) для точечной навигации по символам/вызовам. - Multi-target installer — Claude Code / Cursor / Codex / Windsurf / generic из одного скрипта.
- Companion-плагины —
claude-mem,debug-agent,supabaseподтягиваются автоматически.
Q: Откуда взялись эти добавки? A: Из практики реального проекта — каждое расширение появилось как ответ на конкретную проблему: пропавшие правки между агентами → BEGIN/END блоки; повторные баги одной природы → Round/Iteration; забытые ARCHIVED-указатели → TTL; «агент не знает, где что лежит» → component-map; «уроки не перечитываются» → lessons-registry.
Q: MemoryBank+ будет расширяться?
A: Да. То, что доказывает пользу в реальных задачах, попадает в стек как новый слой или новый companion-инструмент и раздаётся всем установкам через git pull + повторный install.sh (идемпотентный — не сломает существующие настройки). Версионирование идёт через v0.X теги, обратная совместимость сохраняется.
Вопросы, баг-репорты, идеи для новых слоёв стека — пишите автору в Threads: @mr.reskin
Можно про что угодно: непонятки в установке, что не сработало, что хочется добавить, как адаптировать под вашу среду.
MIT.
