| name | yamem |
| description | Навык файловой памяти проекта. Описывает структуру памяти, правила чтения, обновления, backlog, diary, topics, tasks и shared-базы. Активен всегда. |
[!IMPORTANT]
Раздел «При старте» выполняется один раз при первом сообщении в чате.
Раздел «Перед ответом» выполняется перед каждым ответом, если в ходе работы появился полезный результат для памяти.
Память проекта (yamem)
Конфигурация
Конфиг: .agents/memory/yamem.config.yaml.
Если файла нет, используй значения по умолчанию:
local.path=local
local.type=directory
local.pull_on_start=true
local.commit_on_update=false
optimization.auto=true
optimization.interval_days=7
notify_no_shared=true
diary_read_days=7
Если не указано иное, все пути ниже относительны к .agents/memory/.
Структура памяти
.agents/memory/
├── yamem.config.yaml
├── <local.path>/
│ ├── MEMORY.md
│ ├── diary/
│ │ └── YYYY-MM-DD.md
│ ├── backlog.md
│ ├── archive.md
│ ├── topics/
│ │ └── <topic>.md
│ └── tasks/
│ └── YYYY-MM-DD-topic/
│ ├── plan.md
│ ├── report.md
│ └── ...
└── shared/
└── <base>/
├── README.md
└── topics/
Канонические шаблоны
Используй эти шаблоны как основной формат. Если файлы уже существуют в похожем виде, сохраняй совместимость и не переписывай их без необходимости.
MEMORY.md
Рекомендуемая структура:
# Memory Index
Последняя оптимизация: YYYY-MM-DD
## Проект
- Краткое описание проекта
- Основные каталоги и точки входа
## Инфраструктура
- Среды, хосты, сервисы без секретов
- Где искать доступы и переменные
## Ограничения
- Что нельзя ломать
- Важные технические и организационные ограничения
## Факты
- Устойчивые факты о проекте
## Грабли и уроки
- ⚠️ Проблема и проверенное решение
## Ссылки
- Относительные ссылки на важные topics, tasks и документы
Правила:
- в
MEMORY.md храни только устойчивые факты, ограничения и уроки;
- временные заметки и сырые наблюдения туда не пиши;
- записи должны быть короткими, проверяемыми и годными для повторного чтения через недели.
backlog.md
Рекомендуемая структура:
# Бэклог
## Активные
- [ ] Краткое название задачи
created: YYYY-MM-DD
updated: YYYY-MM-DD
notes: краткий контекст
- [/] Задача в работе
created: YYYY-MM-DD
updated: YYYY-MM-DD
notes: что уже делается
## Ожидает
- [ ] Задача, зависящая от внешнего действия
created: YYYY-MM-DD
updated: YYYY-MM-DD
notes: чего именно ждём
## Идеи
- [ ] Кандидат в работу без обязательства
created: YYYY-MM-DD
updated: YYYY-MM-DD
notes: почему это может пригодиться
Завершённые задачи: см. `archive.md`
Правила:
- одна задача должна встречаться в backlog только один раз;
created ставь при создании записи;
updated обновляй при любом заметном движении по задаче;
- используй
[ ] для новых задач и ожидания, [/] для задач в работе;
- если задача завершена, перенеси её в
archive.md, а не оставляй дубликат в backlog;
- если задача потеряла актуальность, лучше явно отметить это в
notes, чем молча удалять.
archive.md
Рекомендуемая структура:
# Архив
## YYYY-MM
- [x] Завершённая задача
created: YYYY-MM-DD
completed: YYYY-MM-DD
result: краткий итог
- [x] Ещё одна завершённая задача
created: YYYY-MM-DD
completed: YYYY-MM-DD
result: что получилось или где смотреть артефакт
Правила:
- архив хранит только завершённые задачи;
- для завершённой задачи фиксируй хотя бы
completed и краткий result;
- если по задаче есть артефакт, укажи относительную ссылку в
result;
- не превращай архив в дневник: только результат, без длинного повествования.
Правила
При старте
- Прочитай
.agents/memory/yamem.config.yaml, если он существует.
- Определи:
- локальный путь памяти:
<local.path>;
- тип локальной памяти:
directory или submodule;
- список shared-баз из конфига;
- параметры синхронизации и оптимизации.
- Если локальная память отсутствует, создай минимальную структуру:
MEMORY.md по каноническому шаблону
diary/
backlog.md по каноническому шаблону
archive.md по каноническому шаблону
topics/
tasks/
- Если
local.type=submodule и local.pull_on_start=true, попытайся выполнить синхронизацию локальной памяти.
- Если синхронизация успешна, зафиксируй статус:
local memory synced
- Если неуспешна, зафиксируй статус:
local memory NOT synced (<причина>)
- Ошибка синхронизации не должна блокировать основную работу
- Для каждой shared-базы из конфига:
- если
type=submodule и pull_on_start=true, попытайся синхронизировать её;
- если синхронизация не удалась, кратко зафиксируй причину;
- если база задана как обычный каталог, используй её по правилам ниже
- Если shared-базы не настроены и
notify_no_shared=true, сообщи об этом один раз в первом ответе.
- Прочитай:
<local.path>/MEMORY.md
<local.path>/backlog.md
- файлы дневника за последние
diary_read_days дней, если они существуют
- Получи список имён файлов в
<local.path>/topics/ и <local.path>/tasks/. Содержимое не читай — нужны только имена, чтобы знать, какие темы и активные задачи существуют, и иметь к ним быстрый доступ позже.
- Если
optimization.auto=true и в MEMORY.md есть отметка Последняя оптимизация: YYYY-MM-DD, которая старше optimization.interval_days, выполни только фазу анализа и кратко предложи оптимизацию. Не меняй файлы без подтверждения пользователя.
- В первом ответе кратко укажи preflight-статус:
- синхронизация локальной памяти;
- синхронизация shared-баз;
- есть ли срочные или незавершённые задачи в backlog.
При работе над задачей
Для содержательной задачи, которая требует нескольких шагов, артефактов или накопления опыта:
- При необходимости создай папку задачи:
<local.path>/tasks/YYYY-MM-DD-topic/
- Обязательно перед содержательным действием проверь накопленное знание по теме запроса:
- сопоставь ключевые слова запроса с именами файлов из
topics/ и tasks/, полученными при старте;
- если совпадение есть (точное или близкое по смыслу) — прочитай файл целиком ДО первого действия, не действуй вслепую;
- проверь
MEMORY.md, backlog и недавний diary на упоминания темы;
- если по именам не нашлось — используй текстовый поиск (
rg, grep или эквивалент) по содержимому topics/, tasks/, MEMORY.md и shared/*/topics/.
- Если найдены предупреждения, ограничения или грабли, учитывай их при планировании.
Перед ответом
Если в ходе работы появился устойчивый полезный результат, обнови память.
Под устойчивым полезным результатом понимаются:
- новый факт о проекте;
- новое ограничение или грабля;
- новое решение, рецепт или урок;
- новая задача;
- завершение или изменение статуса задачи;
- полезный артефакт по отдельной задаче.
Если работа была короткой, ознакомительной или не оставила полезного следа, память не обновляй.
При обновлении памяти:
- Добавь краткую запись в дневник текущего дня:
<local.path>/diary/YYYY-MM-DD.md
- Обнови backlog:
- новые задачи добавь в
backlog.md;
- завершённые задачи перенеси в
archive.md;
- если задача не завершена, но ожидает внешнего действия, пометь это явно
- Общие и устойчивые факты добавь в
MEMORY.md
- Тематические знания и повторяемые решения добавь в
topics/<topic>.md
- Материалы в
shared добавляй только если они:
- обезличены;
- полезны вне текущего проекта;
- не содержат чувствительных данных;
- достаточно стабильны, чтобы считаться рецептом, а не сырым журналом
Git-правила
Если local.commit_on_update=true, коммить изменения памяти только при наличии реальных изменений.
Правила:
- не делай пустой commit;
- ошибки commit/push не должны блокировать основной ответ;
- если remote, upstream, авторизация или branch не настроены, просто сообщи об этом кратко;
- не переписывай историю памяти и не делай рискованных git-действий без явного запроса пользователя.
Для shared-баз действуют те же правила.
Безопасность
- Запрещено хранить в памяти:
- пароли, токены, ключи, секреты;
- персональные данные;
- чувствительные данные клиентов;
- внутренние URL, IP, хосты, логины;
- любые данные, которые нельзя безопасно закоммитить в git.
- В локальной памяти храни только ссылку на место поиска секрета, имя переменной или безопасное описание.
- В shared-памяти правила ещё строже: только полностью обезличенные материалы.
Поиск
- Если не уверен, где нужная информация, используй доступный в среде текстовый поиск (
rg, grep или эквивалент) по локальной памяти и нужным shared-базам.
Команды пользователя
| Фраза пользователя | Действие агента |
|---|
| «что в отложках», «что в бэклоге», «покажи бэклог», «какие задачи» | Прочитай backlog.md |
| «что делали сегодня / вчера / на прошлой неделе» | Прочитай нужные файлы из diary/ |
| «запомни это» | Сохрани факт, урок или заметку в подходящее место |
| «добавь в бэклог» | Добавь задачу в backlog.md |
| «что ты знаешь про ...» | Ищи в MEMORY.md, topics/, backlog, diary, tasks |
| «оптимизируй память» | Запусти анализ оптимизации и предложи изменения |
Оптимизация памяти
Триггер
Оптимизация запускается:
- по команде пользователя;
- автоматически только в режиме анализа, если пришло время по конфигу.
Фаза 1 — Анализ (без изменений в файлах)
Ничего не меняй в файлах.
Проверь:
- старые записи diary;
- старые task-папки;
- переполненный archive;
- backlog без движения;
- устаревшие факты в
MEMORY.md;
- дубли или пересечения между local topics и shared topics.
Консервативные правила:
- не считай локальный topic дублем, если в нём есть проектная специфика;
- не предлагай удалять старые task-папки, если из них ещё не извлечены знания;
- задачи без движения сначала предлагай пометить как
waiting или snoozed, а не удалять;
- любые удаления и переносы считай потенциально рискованными.
Фаза 2 — Отчёт
Покажи пользователю краткую сводку:
- что можно архивировать;
- что можно удалить;
- что можно перенести в
topics/ или shared/;
- какие факты выглядят устаревшими.
Жди подтверждения. До подтверждения не меняй файлы.
Фаза 3 — Выполнение (после одобрения)
После подтверждения пользователя:
- выполни только явно одобренные изменения;
- обнови
Последняя оптимизация: YYYY-MM-DD в MEMORY.md;
- при необходимости зафиксируй изменения по git-правилам выше.
Примеры
Запись в дневник (local/diary/YYYY-MM-DD.md)
# 2026-03-21
## Краткое название задачи
- Сделано: ...
- Грабля: ...
- Артефакт: [../tasks/2026-03-21-topic/](../tasks/2026-03-21-topic/)
Запись в бэклог (local/backlog.md)
# Бэклог
## Активные
- [ ] Подготовить ...
created: 2026-03-21
updated: 2026-03-21
notes: краткий контекст
- [/] В работе: ...
created: 2026-03-21
updated: 2026-03-21
notes: что уже делается
## Ожидает
- [ ] Ждём внешнего доступа для ...
created: 2026-03-21
updated: 2026-03-21
notes: чего именно ждём
Завершённые задачи: см. `archive.md`
Запись в архив (local/archive.md)
# Архив
## 2026-03
- [x] Подготовить ...
created: 2026-03-20
completed: 2026-03-21
result: задача завершена, артефакт в `tasks/2026-03-21-topic/`
Запись в топик
Файл local/topics/topic-name.md:
# Название темы
## Факты
- ...
## Грабли
- ⚠️ ...
Подключение субмодуля local/
Если local/ нужно превратить в субмодуль, сначала сохрани текущее содержимое и перенеси его в отдельный репозиторий памяти. Только после этого подключай submodule.
git submodule add <url> .agents/memory/local
Подключение shared-базы
git submodule add <url> .agents/memory/shared/<имя>