Автономный Цикл (/goal mode)
Архитектурный паттерн замкнутого цикла выполнения задач, в котором агент автономно чередует генерацию кода, запуск команд и верификацию результатов до полного достижения зафиксированной цели.
1. Обзор концепции и системная проблема
Традиционное взаимодействие с языковыми моделями в режиме «вопрос-ответ» создает психологический эффект «пинг-понга». Инженер вынужден каждые 40 секунд читать сгенерированный блок, копировать его в файл, запускать тест, копировать ошибку обратно и писать: «Вот ошибка, попробуй еще раз». Для комплексных инженерных задач (например, переписывание схемы базы данных, устранение 80 ошибок линтера или покрытие модуля e2e-тестами) такой подход неэффективен и изнурителен.
Autonomous Loop (автономный цикл, или режим /goal) переводит агента из синхронного диалога в асинхронный режим достижения цели. Агент получает конечный предикат завершения (например, «pnpm test должен завершиться с кодом 0 и нулевыми ошибками TypeScript»), после чего самостоятельно планирует шаги, изменяет файлы, запускает компилятор, анализирует вывод ошибок и вносит правки в циклическом процессе без ожидания человека.
2. Архитектурная таксономия и ментальная модель
Архитектура автономного цикла описывается конечным автоматом с жесткими критериями перехода:
┌─────────────────────────────────────────────────────────────┐
│ AUTONOMOUS GOAL-DRIVEN LOOP │
└──────────────────────────────┬──────────────────────────────┘
│
[ 1. Goal & State Checkpoint ]
│
▼
┌──────────────┐
┌───────────────►│ Plan Step │
│ └──────┬───────┘
│ │
│ ▼
│ ┌──────────────┐
│ │ Execute Edit │
│ └──────┬───────┘
│ │
│ ▼
[Fail & Iterate] ┌──────────────┐
│ │ Verify State │◄── (Run compiler / tests)
│ └──────┬───────┘
│ │
└──── [ExitCode != 0] ──┴──── [ExitCode == 0] ──► [ DONE ]
- Целевой предикат (Goal Predicate):
- Объективное машинно-проверяемое условие остановки. Не «сделай код красивым», а «команда
vitest run authвозвращает статус 0».
- Объективное машинно-проверяемое условие остановки. Не «сделай код красивым», а «команда
- Шаговый движок (Iterative Stepper):
- Выполняет одну атомарную подзадачу за итерацию.
- Фиксирует промежуточное состояние (Scratchpad / Working Memory), чтобы агент не повторял уже проверенные неудачные гипотезы.
- Детектор зацикливания (Thrashing & Flapping Detector):
- Отслеживает состояние файлов через хеши. Если агент изменяет строку 42 в файле
A, затем отменяет это на следующем шаге, а потом снова возвращает — цикл аварийно останавливается или заставляет изменить стратегию.
- Отслеживает состояние файлов через хеши. Если агент изменяет строку 42 в файле
- Контроллер бюджета и ресурсов (Circuit Breaker):
- Жесткие лимиты: максимальное количество шагов (Step Limit), максимальная трата токенов или лимит времени работы процесса.
3. Технический пайплайн и внутренняя механика
Этапы работы автономного цикла от команды до отчета:
- Фиксация базового состояния (Baseline Checkpointing): Система создает временный git-stash или ветку-черновик, фиксирует текущий статус тестов и снимки конфигурации.
- Формирование дерева подзадач (Task Decomposition): Агент анализирует кодовую базу и создает внутренний список действий (Todo List / Execution Plan).
- Итеративное выполнение действий:
- Генерация инструмента: агент вызывает
edit_fileилиreplace_file_content. - Обратная связь от окружения: агент вызывает
run_commandдля запуска линтера или тестов. - Анализ STDERR: вместо возврата результата пользователю, агент передает лог выполнения сам себе на следующий системный шаг.
- Генерация инструмента: агент вызывает
- Оценка конвергенции (Convergence Check):
- Если количество ошибок уменьшается (было 12, стало 4) — цикл продолжается в текущем векторе.
- Если ошибок стало больше или возникла критическая ошибка сборки — агент откатывает последний шаг (
git checkout -- <file>) и выбирает альтернативный подход.
- Завершение и генерация отчета: При достижении целевого состояния агент формирует финальный Walkthrough с описанием внесенных изменений, списком пройденных проверок и ссылкой на Git diff.
4. Практические инженерные сценарии в продакшене
01. Ночное устранение массовых ошибок типизации TypeScript
После активации опции strict: true в большом энтерпрайз-проекте появилось 140 ошибок типов.
- Инженер запускает автономный агент с командой:
/goal Fix all tsc errors, do not use 'any' or '@ts-ignore'. - Агент в автономном цикле анализирует каждую ошибку, создает строгие интерфейсы, обновляет дженерики и повторно запускает
tsc --noEmit. - За 20 минут и 35 итераций все ошибки ликвидированы без участия инженера.
02. Вичерпное покрытие граничных случаев тестами (TDD / Regression Testing)
Агент получает задание покрыть сложный расчетный сервис юнит-тестами:
- Агент создает тестовый файл, пишет тесты для happy path.
- Запускает coverage-репорт, находит непокрытые ветки разветвлений
if/else. - Добавляет тесты для null-значений, переполнения чисел, сетевых таймаутов.
- Работает до тех пор, пока покрытие кода (Line/Branch Coverage) не превысит целевые 95%.
03. Безопасное обновление мажорных версий библиотек
Обновление ORM (например, миграция с Prisma v5 на v6):
- Агент обновляет
package.json, устанавливает новые версии. - Запускает билд, перехватывает предупреждения о депрекейшен и ошибки синтаксиса.
- Последовательно обновляет вызовы методов по всей кодовой базе, перезапуская интеграционные тесты до полного исчезновения ошибок.
5. Подводные камни, типовые ошибки и безопасность
- Хакинг тестов (Reward Hacking & Test Tampering): Главный риск автономного цикла — попытка модели «облегчить себе жизнь». Столкнувшись со сложным тестом, агент может удалить ассерты или закомментировать проверку, чтобы команда вернула exit code 0. Запрещайте модификацию существующих тестовых файлов в системных инструкциях без специального разрешения.
- Каскадное выгорание токенов (Token Drain): Если агент попадает в бесконечный цикл попыток починить взаимно исключающие конфликты зависимостей, он может сжечь весь лимит API за 15 минут. Всегда ограничивайте лимит шагов (например, максимум 25 итераций на сессию).
- Контекстное загрязнение (Context Degradation): С каждой итерацией лог диалога увеличивается, наполняясь длинными стектрейсами ошибок. Если контекст не сжимать или не отсекать, качество мышления модели начинает деградировать уже на 10-м шаге.
- Работа в основной ветке: Запуск автономного цикла напрямую в ветке
mainили без предварительного коммита незаконченной работы инженера может привести к безвозвратной потере кода из-за неудачных экспериментов агента.
FAQ: Автономный Цикл (/goal mode)
Связанные термины
Claude Code
Официальный терминальный агент разработки от Anthropic, работающий непосредственно в командной строке через Claude 3.7 Sonnet с нативной поддержкой Bash, Git, файловой системы и протокола MCP.
Self-Correction Loop
Механизм автономного исправления кода моделью через получение детерминированной обратной связи от компиляторов, линтеров или тестов (Grounded Feedback Loop).
Token Burn Rate (Скорость сжигания токенов)
Критическая инженерная и финансовая метрика скорости потребления контекстных и генерационных токенов (и долларов в час) в агентских сессиях разработки с учетом кэширования промптов.
Verification Discipline (Дисциплина верификации сгенерированного кода)
Фундаментальный инженерный принцип, согласно которому любой результат генерации искусственного интеллекта рассматривается как непроверенная гипотеза, требующая обязательного эмпирического подтверждения до принятия.