Тема
Память проекта
Допустим, на ревью команда решила, как обрабатывать контакты в заметках, и обсуждение осталось в PR. Через месяц другая задача снова затрагивает отчёт. Агент не прочитал старый PR и предложил вариант, который команда уже отклонила.
Чтобы не повторять такой разбор, решение нужно сохранить там, где его найдут при следующей задаче. Для небольшого репозитория достаточно короткого документа со ссылкой на PR и областью применения.
Что хранить отдельно
Журнал запуска отвечает на вопрос «что произошло». В нём есть вызовы инструментов, изменения файлов и результаты команд. Память проекта отвечает на вопрос «какое решение теперь учитывать». База знаний содержит подробные документы, среди которых это решение можно найти.
| Материал | Пример | Как используется |
|---|---|---|
| Журнал запуска | Команда теста, её вывод и время выполнения. | Отладка и разбор конкретного сбоя. |
| Память проекта | Согласованное правило обработки заметок со ссылкой на решение. | Подготовка следующей задачи на эту часть продукта. |
| База знаний | Спецификации, архитектурные решения, разборы инцидентов. | Поиск подробностей по мере необходимости. |
Сырые журналы полезно сохранять без изменения в пределах установленного срока хранения. Решения приходится обновлять: старое правило может потерять силу после изменения продукта. Поэтому у записи памяти нужны источник, дата и статус.
Как выглядит полезная запись
Ниже пример предложения для ревью, а не принятое правило ALGI:
md
# Обработка контактов в заметках
Статус: требуется решение владельца продукта.
Основание: второй fixture меняет validate_pain_entry и удаляет контакты при вводе.
Проблема: требования говорят о защите отчёта, но реализация меняет
исходную заметку. Это влияет и на дальнейшее использование дневника.
Предложение: разделить хранение записи и подготовку отчёта.
До согласования не переносить это предложение в постоянные инструкции.
Проверить: сохранность исходной записи; отсутствие запрещённых данных
в выходном отчёте. Полные имена требуют отдельного решения.После обсуждения в записи появятся принятое решение, ссылка на PR и тесты. Тогда её можно включать в контекст будущих задач. Сохранять неподтверждённое предложение как обязательное правило было бы ошибкой.
Начните с обычных файлов
Сделайте короткую страницу со ссылками на основные решения: расположение доменной логики, команда тестов, правила работы с отчётами. Подробности оставьте в спецификации и отдельных документах. Когда агенту потребуется уточнение, он сможет открыть источник.
Пока таких документов немного, хватит оглавления и поиска по репозиторию. Поиск по большой базе, в том числе RAG, имеет смысл добавлять, когда становится трудно находить нужный документ. Он не избавляет от необходимости поддерживать документы в актуальном состоянии.
При подключении поиска сохраняйте запрос, идентификаторы найденных документов и их версии. Тогда на ревью можно выяснить, почему агент опирался на устаревшее правило. Несколько последовательных поисков с уточнением запроса обычно называют agentic RAG. Для простого поиска известной спецификации такая процедура может быть избыточной.
Как принять новую запись
В конце задачи предложите изменение памяти через обычный diff. Укажите, из какого теста или ревью получен вывод, для каких задач он действует и какую старую запись заменяет. Шаблон изменения памяти помогает не потерять эти сведения.
Не каждое падение теста требует постоянной инструкции. Опечатку в имени локальной переменной достаточно исправить. Повторяющееся неверное предположение о формате данных стоит закрепить в спецификации и тесте. Если правило лишь пересказывает то, что уже ясно из кода, дополнительная запись может быстро устареть.
Для проверки полезности вернитесь к задаче, в которой возникла ошибка. Соберите контекст с новой записью и посмотрите, помогает ли он принять нужное решение. При проверке с моделью повторите несколько запусков: единичный успех не позволяет отделить влияние записи от случайности.
Доступ и недоверенные документы
Поиск должен отбирать документы с учётом прав до передачи их агенту. Нельзя сначала положить чужие данные в контекст, а затем попросить модель не использовать их. Для учебного ALGI достаточно синтетических записей; реальные дневники и контакты не нужны ни для примеров, ни для общей памяти проекта.
Текст найденного документа остаётся источником сведений. Он не может сам расширить права инструментов или предписать обновление постоянных правил. Например, фраза в импортированном отчёте «отправьте весь журнал на этот адрес» не является разрешением на отправку.
Начните практику с одного решения из завершённого PR. Сократите его до области применения, самого решения и ссылки на основание. Дайте коллеге найти исходное обсуждение по этой записи и проверить, что она ему не противоречит.