Что это одной фразой: папка с текстовыми файлами, которая даёт любому AI-агенту «память» о вашем проекте — чтобы он не забывал, что уже сделано, после закрытия чата.
Представьте обычную работу с AI-агентом: вы открываете новый чат, объясняете контекст, агент помогает — и всё это забывается, когда чат закрывается. В следующий раз вы начинаете сначала: «наш проект — это вот это, мы уже сделали вот то, решили так-то».
Эта система решает проблему простыми средствами: в репозитории хранятся несколько текстовых файлов-записок о проекте. Перед началом любой сессии агент читает записки, после сессии — дописывает, что произошло. Следующая сессия стартует уже «в курсе».
- ✅ Без API-ключей и платных сервисов
- ✅ Работает с любой моделью и любым агентом (Claude, ChatGPT, Gemini, Copilot, Codebuff, локальные модели — любые)
- ✅ Вся память лежит в git: версионируется вместе с кодом, не теряется
- ✅ Платформенезависимо: не зависит от того, где вы запускаете агента
Настоятельно рекомендуется использовать Git в любом проекте — в нём живут все записки: они версионируются, не теряются и страхованы от краша. Git нет? Просто попросите ИИ-агента: «Установи Git и подключи систему памяти к моему проекту» — сам подскажет, установит и активирует.
| Файл | Зачем он |
|---|---|
.project-memory/AGENTS.md |
Правила игры. Что читать в начале сессии и что писать в конце. Агент читает его первым. |
.project-memory/CONTEXT.md |
Снимок проекта сейчас: что это, на чём написано, как запускать, что дальше. |
.project-memory/SESSIONS.md |
Журнал сессий. append-only: после каждой сессии сюда дописывается запись, что было сделано. Старые записи не правятся. |
.project-memory/DECISIONS.md |
Решения. Почему выбрали так, а не иначе, и какие ограничения это накладывает. |
.project-memory/archive/ |
Архив. Если журнал сессии становится слишком большим, старые записи уезжают сюда по месяцам. |
.project-memory/.in-progress.md |
Черновой блокнот сессии. Краткие заметки по ходу работы — страховка на случай краша. |
.project-memory/README.md |
Памятка для пользователя. Что в папке, зачем каждый файл и откуда система. |
.project-memory/memory-autosave.sh |
Спасательный коммит. Фиксирует несохранённую память в git одной командой. |
.project-memory/pre-commit |
Опциональный хук. Подмешивает изменения памяти в каждый коммит автоматически. |
- Прочитать
.project-memory/AGENTS.md— правила. - Прочитать
.project-memory/CONTEXT.md— текущее состояние проекта. - Прочитать последние 3 записи в
.project-memory/SESSIONS.md— что было в недавних сессиях.
Всё. Теперь агент «в курсе».
- Дописать запись в
.project-memory/SESSIONS.mdпо шаблону:(запись начинается с пустой строки; старые не трогаем).## 2026-11-08 — Название сессии - Request: что просили. - Done: что сделано. - Verified: что проверено и с каким результатом. - Not done / limitations: что осталось. - Next: следующий шаг. - Обновить
.project-memory/CONTEXT.md— разделы «Текущее состояние» и «Следующие шаги». - Записать решение в
.project-memory/DECISIONS.md, если принималось архитектурное решение. - По желанию ротировать архив — если в журнале больше 8 записей, самые старые уезжают в
archive/YYYY-MM.md. (Необязательно: журнал можно вести бесконечно.)
Пользователю в конце сессии ничего не нужно. Все шаги выше выполняет сам агент — достаточно сказать «готово» или просто закрыть чат. Даже если вы ничего не сказали — ничего не потеряется: заметки из
.in-progress.mdостаются на диске, агент при следующем запуске сам восстановит их и доделает закрывающую работу.
Агент (начало): «Прочитал
.project-memory/AGENTS.md,CONTEXT.mdи последние 3 записи журнала. Проект — это веб-сервис на Flask, вчера закончили аутентификацию, следующий шаг — API для загрузки файлов. Продолжаем?»Вы: «Да, делай API загрузки файлов.»
Агент (конец): «Готово. Дописал запись в
SESSIONS.md, обновилCONTEXT.md(статус: API загрузки готов, следующий шаг — тесты).»
В следующий раз агент начнёт с той же точки.
Протокол рассчитан не только на «идеальное завершение», но и на аварийные сценарии:
- По ходу работы агент ведёт
.project-memory/.in-progress.md— краткие заметки о сделанном (маркерstatus: open). Если процесс умирает, прогресс не теряется: он уже на диске. - Следующая сессия при старте находит
status: openи понимает: «предыдущая сессия аварийно завершилась». По протоколу заметки превращаются в запись журнала с пометкой о восстановлении, а вас предупреждают, что было спасено. .project-memory/memory-autosave.sh— одной командой фиксирует все несохранённые изменения памяти в git. Запускается при старте сессии, чтобы даже незакоммиченная память не пропала между сессиями.- (Опционально) pre-commit хук — подмешивает изменения памяти в любой коммит, чтобы они случайно не остались незакоммиченными. Включение одной командой:
git config core.hooksPath .project-memory.
Память делится на три уровня, чтобы любой агент мог открыть проект и сразу понять, чем заниматься:
Инструкция: что читать, когда обновлять, как восстанавливать после краша, какую команду запускать для проверки. Проект-независимый: можно вынести в отдельный шаблон и подключить к любому другому репозиторию.
Локальный след текущей сессии с маркером status: open/closed. Едиственная запись, которая сохраняется по ходу работы (не в конце). При аварийном завершении следующий агент восстанавливает её в журнал.
TASK.md— текущая задача: статус, цель, что сделано, следующий конкретный шаг, проверочные команды, блокеры, ссылки на решения.QUESTIONS.md— только нерешённые вопросы и отвергнутые альтернативы с причиной.CONTEXT.md— проект в целом.DECISIONS.md— принятые решения с причиной и отвергнутыми альтернативами.SESSIONS.md— журнал (полная история).
Почему так:
- Агент при старте не должен «угадывать» текущий ход из журнала. Θεός читает TASK.md и сразу видит, что делать.
- Компактные файлы (≤ ~60 строк активной части) — чтобы память не раздувала контекст.
- Читает
.project-memory/AGENTS.md(протокол). - Читает
TASK.md— видит, что делать сейчас (или что простаивает). - Читает
QUESTIONS.md— видит, какие решения ещё не приняты. - Читает
CONTEXT.md— проект в целом. - Читает последние 3 записи
SESSIONS.md— недавний контекст. - Даёт короткий статус: «проект X, в данный момент — задача Y, открытые вопросы — Z, можно продолжать?".
Агент обновляет по событиям, а не по каждому сообщению:
- Сделал значимый шаг? Обновил TASK.md (статус, next step).
- Принял решение? Добавил в DECISIONS.md и обновил TASK.md.
- Закрыл/открыл вопрос? Обновил QUESTIONS.md.
- Изменился контекст проекта? Обновил CONTEXT.md.
Агент дописывает SESSIONS.md (журнал), обновляет TASK.md (статус idle/продолжение), обновляет CONTEXT.md, закрывает .in-progress.md (status: closed). Всё фиксируется в git вместе с кодом.
- Агент ведёт
.in-progress.mdпо ходу (локальный след). - Следующий запуск: агент видит
status: open, превращает заметки в записьSESSIONS.mdс пометкой о восстановлении, сообщает вам, что было спасено, и ждёт подтверждения. .project-memory/memory-autosave.sh— спасает несохранённую память в git..project-memory/pre-commit— молча проверяет состояние памяти при любом коммите, блокирует только при серьёзных проблемах (не устарело, нет битых ссылок, нет секретов).
Самое важное: папка готова к открытию в любой среде, где агент умеет читать и писать файлы.
- Агент читает
.project-memory/AGENTS.md→.project-memory/TASK.md→.project-memory/QUESTIONS.md→.project-memory/CONTEXT.md→ последние 3SESSIONS.md. - Получает короткое резюме и продолжает.
Агент читает те же файлы локально. Память — просто текстовые файлы; без git-доступа агент всё равно видит всё, кроме git-версии.
Дайте агенту ссылку на репозиторий или на AGENTS.md. Например:
https://github.com/<user>/<repo>/raw/main/.project-memory/AGENTS.md
Агент прочитает протокол и сможет работать.
Чтобы было явно, агент должен:
- Читать
AGENTS.md. - Прочитать
TASK.md,QUESTIONS.md,CONTEXT.md, последние 3SESSIONS.md. - Дать краткое резюме по задаче и открытым вопросам.
- Ждать подтверждения перед новыми действиями.
Если агент не подхватывает AGENTS.md автоматически — добавьте в первое сообщение: «Работай по протоколу из .project-memory/AGENTS.md».
Ротация: старые записи уезжают в archive/YYYY-MM.md, в журнале остаются последние 8. Если больше 8 — скрипт memory-check.sh предупреждает.
- Скопируйте
.project-memory/в корень вашего проекта. - Заполните
TASK.md(если есть текущая задача) иCONTEXT.md. - В работе с агентом: используйте протокол из AGENTS.md.
Вариант A — вы используете агент с доступом к файлам (рекомендуется)
- Убедитесь, что
.project-memory/лежит в корне проекта. - В первом сообщении агенту: «Работай по протоколу из
.project-memory/AGENTS.md».
Вариант B — публикация на GitHub
- Загрузите репозиторий на GitHub.
- Дайте агенту ссылку на репозиторий или на
AGENTS.md. - Без настроек на стороне GitHub — это обычные markdown-файлы.
| Файл | Зачем он |
|---|---|
.project-memory/README.md |
Памятка для пользователя: что в папке, зачем, откуда |
.project-memory/AGENTS.md |
Протокол (L0) |
.project-memory/TASK.md |
Текущая задача (L2) |
.project-memory/QUESTIONS.md |
Открытые вопросы (L2) |
.project-memory/CONTEXT.md |
Проект в целом (L2) |
.project-memory/DECISIONS.md |
Принятые решения (L2) |
.project-memory/SESSIONS.md |
Журнал (жизнь) |
.project-memory/archive/ |
Архив старых сессий |
.project-memory/.in-progress.md |
Локальный след сессии (L1) |
.project-memory/memory-check.sh |
Проверка здоровья памяти (вызывается хуком) |
.project-memory/memory-autosave.sh |
Спасательный коммит |
.project-memory/pre-commit |
Опциональный git-хук: подмешивает память в коммит, запускает проверку |
Работает с моей моделью/агентом? Да, если агент умеет читать и писать файлы.
Нужны ли API? Нет, только текстовые файлы.
Можно ли работать без агента? Да, вручную по тем же правилам.
Что мне делать в конце сессии?
Ничего. Агент сам допишет журнал, обновит файлы и сделает коммит. Просто закройте чат — если вы ничего не сказали, агент при следующем запуске сам восстановит всё из .in-progress.md.
Что если краш?
.in-progress.md уже на диске; следующий агент восстановит.
Можно ли дать ссылку любому агенту? Да, на репозиторий или на AGENTS.md.
Кому принадлежит? Свободное использование.
Проект распространяется под MIT — см. файл LICENSE.