Self-learning loop для Claude Code

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

Обучающийся агент ведёт журнал. После каждой попытки он записывает, что попробовал и сработало ли это, а перед следующим заходом перечитывает свои записи. Настраивается один раз, и цикл перестаёт ходить по кругу: каждый проход стартует с того, что выучил предыдущий, а не с нуля.

Почему циклы повторяются

Обычный цикл снова и снова запускает одного и того же агента на одной и той же задаче, но память обнуляется между итерациями. Он не знает, что на второй итерации уже попробовал то, что собирается сделать на четвёртой. Цикл работает, но не учится. Лечится это памятью, которая переживает итерации.

Файл 1: журнал

Это и есть память. Обычный файл, к которому агент дописывает, но никогда не перезаписывает. Создаём .claude/loop-journal.md. Каждая запись из трёх строк: что попробовали, что получилось и какой урок на будущее.


# Loop journal
Только дозапись. Каждая попытка: что попробовали, результат, урок.

## Задача: чинить падающий тест оформления заказа

### Попытка 1
Попробовали: добавили await к вызову fetchCart.
Результат: всё равно падает, та же ошибка.
Урок: гонка не в fetchCart. Смотреть выше по стеку.

### Попытка 2
Попробовали: мемоизировали селектор корзины.
Результат: падает иначе, корзина undefined при первом рендере.
Урок: проблема в начальном состоянии.

Строка с уроком тут главная. Именно она не даёт следующей итерации повторить ту же попытку.

Файл 2: обучающий цикл

Это оркестратор и то самое правило, которое заставляет агента учиться: сначала читай журнал. Кладём в .claude/commands/learn-loop.md.


---
description: Цикл, который учится по журналу каждый проход
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
model: sonnet
---

Task: $ARGUMENTS

Каждая итерация:
1. Прочитать .claude/loop-journal.md. Никогда не повторять провальную попытку.
2. Сформировать новую гипотезу, которую журнал не исключает.
3. Внести изменение. Прогнать проверку.
4. Дописать в журнал: что попробовали, результат, урок.
5. Прошло: остановиться. Упало: к шагу 1.
6. Не больше 6 итераций.

Шаг 1 здесь и есть вся суть. Заставляя агента читать собственную историю перед действием, мы добиваемся того, что каждая итерация строится на предыдущей. Цикл накапливает знание вместо того, чтобы буксовать на месте.

Файл 3: заставить писать

Если ведение журнала опционально, агент его пропустит. Делаем запись автоматической. Хук в .claude/settings.json напоминает логировать после каждой правки. Журнал, который пишется по ходу, точен. Журнал, восстановленный по памяти, превращается в вымысел.

Память, которая охватывает все задачи

Журнал выше учится в пределах одной задачи. Больший выигрыш дают знания, переносимые между всеми задачами. Добавляем постоянный файл .claude/lessons.md для паттернов, которые стоит хранить всегда. Журнал это краткосрочная память, lessons.md долгосрочная: разница между агентом, который выучил задачу, и агентом, который выучил вашу кодовую базу.

Частые ошибки

Перезапись журнала вместо дозаписи: история теряется, и цикл снова забывает. Лог попытки без урока: журнал превращается в дневник, а не в руководство. Чтение журнала в конце, а не в начале: чтение идёт первым каждую итерацию, иначе память бесполезна.

Итог

Агент не стал умнее. Он просто перестал забывать. Цикл, который помнит, каждый раз обходит цикл, который повторяется.

Ежедневные заметки про ИИ, финансы и vibe coding: https://t.me/zodchixquant

+1
0
+1
0
+1
0
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *