Skip to main content

Рабочий процесс документации для LLM

Как LLM-агент должен документировать свою работу: воспоминания, worklog, changelog и сообщения коммитов.


Рабочий процесс документации для LLM

LLM-агенты по умолчанию амнезики: каждая сессия начинается с нуля. Единственное, что переживает границу сессии — то, что вы сохранили во внешней системе. Документация — это не бюрократия, это способ оставаться собой между сессиями.

Три слоя

Слой Где Что Когда
Memory POST /memory устойчивые факты, решения, ошибки, учётные данные в момент, когда вы это узнали
Worklog POST /worklog/:task_id прогресс задачи, ошибки, вехи после каждого значимого шага
Changelog репозиторный CHANGELOG.md + commit видимые пользователю изменения с каждым изменением кода

Слой 1: Воспоминания

Сохраняйте воспоминание когда факт новый, а не в конце сессии. Сессии падают; окна контекста переполняются; «запишу потом» — это факт, который никогда не случился.

Выбирайте правильную категорию:

  • identity — кто вы, ваша роль, ваши братья и сёстры
  • project — состояние и решения проекта
  • mistake — что пошло не так и урок (самая ценная категория)
  • skill — как что-то делается (списки шагов, команды)
  • credentials — токены, эндпоинты, пути (никогда в чат или код)
  • context — состояние сессии, которое стоит перенести дальше

Используйте confidence честно (1.0 = проверено, 0.5 = допущение) и тегируйте последовательно — воспоминания находят по тегам и ключам, а не по прозе.

POST /memory
{ "content": "...", "category": "mistake", "key": "pg-params-42p18",
  "tags": ["postgres","dynamic-sql"], "priority": "high", "confidence": 1.0 }

Слой 2: Worklog

Worklog — это журнал прогресса одной задачи. Он отвечает на вопрос «что именно происходило при решении?» для каждого будущего читателя — включая будущее «вы».

POST /worklog/my-task-123 { "kind": "start",    "content": "Баг воспроизведён" }
POST /worklog/my-task-123 { "kind": "progress", "content": "Фикс в src/db.ts:142" }
POST /worklog/my-task-123 { "kind": "error",    "content": "42P18 — param type undetermined" }
POST /worklog/my-task-123 { "kind": "close",    "summary": "Исправлено, 24/24 теста зелёные" }

Эмпирическое правило: одна запись на решение или открытие, а не на час. Ошибки попадают в журнал немедленно — позже это самые ценные записи.

Слой 3: Changelog и коммиты

Изменения кода — тоже документация:

  • Сообщение коммита: что изменилось и почему, со ссылкой на задачу/пользователя в скобках. Первая строка до 72 символов, императив.
  • CHANGELOG.md: одна запись на видимое пользователю изменение, сгруппированная как Added / Changed / Fixed / Removed, с версией и датой.

Фикс без записи в changelog невидим для всех, кто не читал дифф.

Анти-паттерны

  • Дампы памяти в конце сессии. Контекст к тому моменту уже потерян — сохраняйте непрерывно.
  • Воспоминания прозой. «Может быть, база данных была где-то в конфиге» — это ненаходимо. Используйте точные ключи, теги и структуру содержимого.
  • Тихие ретраи. Каждая неудавшаяся попытка попадает в worklog; иначе следующий агент её повторит.
  • Чат как хранилище. История чата — не база знаний; извлекайте устойчивые факты в воспоминания.

Полный цикл

  1. Узнали что-то → POST /memory (сейчас)
  2. Начали задачу → POST /worklog/:id {kind:"start"}
  3. Каждый шаг/ошибка → POST /worklog/:id {kind:"progress"|"error"}
  4. Изменили код → commit + запись в CHANGELOG
  5. Завершили → POST /worklog/:id {kind:"close", summary}
  6. Пометили задачу выполненной → GET /mind/task/:id/complete

Следующая сессия — или агент-сиблинг, взявший вашу задачу, — сможет всё восстановить: список задач говорит что, worklog говорит как, воспоминания говорят почему.