Вернуться в блог

Как запустить Claude Code в автономном режиме на несколько часов без постоянного контроля

2026-03-057 min read

Я оставил Claude Code работать всю ночь над реальной задачей. Тестировал AIdaemon, мой личный AI-агент, через веб-интерфейс Telegram. Я проверял его в течение дня, позволял ему работать ночью, и к следующему утру он проработал более 27 часов. Выполнено 84 задачи. Он находил ошибки, исправлял код, повторно тестировал и переходил к более сложным тестам. И всё это без моего вмешательства. У меня тариф Claude Code 20x, который дает достаточно ресурсов для таких сессий.

Настройка, которая сделала это возможным, состоит из трех флагов и хорошего файла с промптом.

Сессия Claude Code, показывающая 1 день 3 часа 6 минут работы с 84+ выполненными задачами
1д 3ч 6м. Тест 88, выполнено 84+ задач, работа продолжается.

Пропускаем запросы на подтверждение

Обычно Claude Code запрашивает подтверждение перед выполнением команд или редактированием файлов. Это нормально, когда вы сидите рядом. Но для ночных запусков каждый запрос на подтверждение — это полная остановка. Сессия просто ждет, пока вы нажмете «разрешить».

claude --dangerously-skip-permissions

Название флага намеренно пугающее. Оно означает, что Claude Code выполняет все вызовы инструментов без запроса. Я бы не стал использовать это на машине с секретами продакшена. Но на машине для разработки с ограниченной задачей это то, что делает возможными автоматические запуски.

Дайте ему браузер

Мне нужно было, чтобы Claude Code взаимодействовал с веб-приложением. Я тестировал Telegram-бота AIdaemon через Telegram Web, а сам Claude Code этого сделать не может, так как он работает в терминале.

Флаг --chrome подключает его к Chrome через расширение Claude in Chrome MCP. Он может перемещаться по страницам, нажимать кнопки, заполнять формы, читать контент, делать скриншоты. Объедините оба флага, и вы получите нечто, что может писать код в терминале и тестировать его в браузере.

claude --chrome --dangerously-skip-permissions

В моем случае Claude Code отправлял сообщение AIdaemon через Telegram Web, читал ответ, решал, правильно ли поступил агент, и шел исправлять код, если нет. Затем пробовал то же самое снова, чтобы убедиться.

Поддерживайте работу с помощью Ralph Loop

Если вы просто запустите Claude Code с большим промптом, он завершит работу и выйдет. Или решит, что завершил, и выйдет. Это нормально для быстрой задачи, но бесполезно для того, что должно занять часы.

Ralph Loop — это плагин для Claude Code, который решает эту проблему. Он устанавливает хук остановки. Когда Claude пытается выйти, хук перехватывает это и снова подает тот же промпт. Каждая итерация начинает новый диалог с тем же промптом, но Claude может видеть текущее состояние файлов и историю git. Он определяет, что было сделано, и решает, что делать дальше. Название происходит от техники Ральфа Виггума Джеффри Хантли. Изначальная идея была предельно простой: цикл bash while true, который постоянно подает файл промпта в AI-агент до тех пор, пока тот не сделает все правильно. Грубая сила встречается с настойчивостью, как у персонажа «Симпсонов», который просто продолжает идти, несмотря ни на что. Anthropic оценил это настолько, что выпустил плагин Ralph Wiggum как часть Claude Code.

/ralph-loop "ваш промпт задачи здесь" --completion-promise "DONE"

--completion-promise — единственный способ выйти. Claude может прервать цикл, только выведя эту точную строку. Вы также можете установить --max-iterations в качестве меры предосторожности.

Напишите настоящий промпт

Приведенные выше инструменты — это механизм. Но промпт определяет, получите ли вы час полезной работы или двадцать семь. «Протестируй мое приложение и исправь ошибки» даст вам, возможно, час, после чего Claude объявит победу после одного исправления.

Для чего-то серьезного я пишу файл markdown. Архитектура, цели, ограничения, что на самом деле означает «готово». Затем передаю его в ralph-loop.

/ralph-loop "$(cat task-prompt.md)" --completion-promise "DONE"

Мой промпт для 27-часовой сессии выглядел примерно так.

# Задача. Тестирование и укрепление Telegram-агента AIdaemon

## Контекст
AIdaemon — это многоцелевой AI-агент, доступный через Telegram.
Веб-интерфейс находится по адресу https://web.telegram.org/k/#@aidaemon_coding_bot

## Цели
- Ставить перед агентом все более сложные задачи
- Не тестировать только «счастливые пути». Проверять граничные случаи, некорректный ввод,
сложные многоэтапные операции
- Когда что-то ломается, исправлять базовый код
(а не временное решение для конкретного случая)
- Повторно тестировать после каждого исправления, чтобы убедиться, что оно работает И ничего другое не сломалось

## Заметки по архитектуре
(соответствующие пути к файлам, как агент обрабатывает сообщения,
ключевые модули, схема базы данных, все, что нужно Клоду)

## Критерии успеха
- Все базовые операции работают надежно
- Граничные случаи обрабатываются корректно
- Сообщения об ошибках информативны, а не загадочны
- Отсутствие регрессий от предыдущих исправлений
- Вывести DONE, когда все вышеперечисленное верно

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

Что произошло за 27 часов

Я запустил команду и пошел спать.

Первый час ушел на основы. Простые сообщения боту, проверка ответов. Затем он начал эскалировать самостоятельно. Задачи по рефакторингу нескольких файлов. Восстановление после ошибок с некорректными входными данными. Он нашел уязвимость внедрения промптов, написал защиту, а затем протестировал более сложный вариант внедрения, чтобы проверить, выдержала ли защита.

К тесту 88 он заставил агента создавать парсер JSON с нуля с 79 тестовыми сценариями. Ранее он исправлял лимиты фоновых уведомлений-пингов, устранял ошибки разрешения имен инструментов и обнаружил проблему UX, из-за которой внутренние механизмы отображались в сообщениях для пользователей.

Исправления были реальными, а не поверхностными. В «дешевом профиле» использовался first_fallback вместо модели по умолчанию, поэтому он исправил логику конфигурации. Разрешение имен инструментов при насыщении чтением не работало, поэтому он добавил каскадное резервирование для всех глубин, а не только для той, которая сломалась.

Всего 84 задачи. Тесты, исправления, повторные тесты. Все автономно.

Что бы я посоветовал тем, кто это пробует

Перед этим я провел несколько сессий с однострочными промптами. Они иссякали примерно через час или два. 27-часовая сессия продолжалась, потому что файл промпта содержал достаточно контекста, чтобы Клод оставался в рамках задачи на протяжении десятков итераций.

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

Доступ к браузеру позволил обнаружить то, что не смогли бы обнаружить модульные тесты. Причуды интерфейса, проблемы с таймингом, проблемы с форматированием. --chrome позволил Клоду проводить реальное сквозное тестирование, а не просто выполнять код в изоляции.

Я просмотрел все изменения после. Большинство были хорошими. Пару — излишне усложненными, а один рефакторинг затронул больше файлов, чем требовалось. Но в целом, десятки реальных ошибок найдены и исправлены, каждая подтверждена повторным тестом.

Если хотите попробовать, установите плагин Ralph Loop, напишите правильный файл промпта и начните с малого. --max-iterations 10 для ограниченной задачи. Посмотрите, как пойдет, прежде чем масштабироваться.

Будьте в курсе

Получайте последние посты и аналитику на вашу почту.

Unsubscribe anytime. No spam, ever.