Как заставить терминального ИИ-агента бесконечно оптимизировать ваш код
Вспомните, как вы обычно ускоряете тесты или уменьшаете бандл фронтенда. Вы меняете пару строк в конфиге, запускаете сборку, сверяете секунды в консоли. Стало медленнее — откатываете. Стало на 5% быстрее — коммитите и пробуете следующую безумную идею. Этот процесс отнимает часы рутины, хотя по сути представляет собой механический цикл перебора гипотез.
Андрей Карпатый недавно показал концепт автономных экспериментов в репозитории autoresearch. Разработчик davebcn87 развил эту идею и выпустил pi-autoresearch — расширение для терминального ИИ-агента pi. Расширение отдает рутинную оптимизацию нейросети: агент формулирует идею, вносит правки в файлы, замеряет результат, сохраняет удачные находки и откатывает регрессии.
Как устроен автономный цикл
Вся идея держится на простом правиле: пробуем идею, измеряем, сохраняем при успехе, отбрасываем при неудаче.
Агент работает прямо в вашем репозитории. Когда вы запускаете сессию, расширение создает отдельную папку .auto/ в корне проекта. В ней хранятся все рабочие файлы:
.auto/prompt.md— документ с описанием текущей задачи, правилами замера и списком того, что агент уже попробовал..auto/measure.sh— bash-скрипт бенчмарка, который возвращает строку с числовым значением метрики..auto/log.jsonl— структурированный лог каждой попытки с хешем коммита и статусом..auto/checks.sh— дополнительный скрипт для верификации тестов и типов, чтобы агент не сломал логику ради красивых цифр.
Когда контекстное окно модели переполняется или агент перезапускается, он просто перечитывает .auto/prompt.md и хвост лога. Вся история экспериментов не теряется при сжатии контекста.
pi install npm:pi-autoresearch
После установки достаточно запустить навык:
/skill:autoresearch-create
Агент задаст несколько наводящих вопросов о цели, целевых файлах и команде запуска, либо сам догадается о них из контекста проекта. Затем он снимет базовые метрики и сразу уйдет в бесконечный цикл.
Борьба со случайным шумом в замерах
Любой бенчмарк подвержен флуктуациям. Фоновые процессы операционной системы, нагрев процессора или сетевые задержки могут создать иллюзию ускорения там, где его нет.
Для отсева ложных побед pi-autoresearch рассчитывает показатель доверия (confidence score) на основе медианного абсолютного отклонения (MAD). После трех прогонов расширение начинает сопоставлять полученное улучшение с уровнем шума всей серии:
- Значение ≥ 2.0x подсвечивается зеленым — выигрыш заметно превышает фоновый шум.
- Диапазон 1.0–2.0x отображается желтым — прирост есть, но на грани погрешности.
- Значение < 1.0x горит красным — результат целиком лежит в пределах статистической погрешности.
Инструмент не принимает решение об откате за агента принудительно, а лишь подсказывает ему перепроверить сомнительный запуск.
Защита от поломок через backpressure
Нейросети любят читерить. Если попросить агента уменьшить время выполнения тестов, велик соблазн просто удалить половину тестовых файлов или поставить заглушки.
Чтобы пресечь такие фокусы, в .auto/checks.sh прописывают обязательные проверки корректности:
#!/bin/bash
set -euo pipefail
pnpm test --run
pnpm typecheck
Скрипт проверки запускается после каждого удачного замера. Если тесты падают или ломается типизация, эксперимент сразу помечается как неудачный (checks_failed), а все изменения в рабочей ветке откатываются. Время выполнения самих проверок не прибавляется к основной метрике скорости.
Разбор хаоса на аккуратные ветки
Во время многочасового цикла агент создает десятки коммитов, постоянно меняя разные файлы. Вливать такой лог в основную ветку напрямую было бы кошмаром для ревьюера.
Для решения этой проблемы предусмотрена команда:
/skill:autoresearch-finalize
Навык анализирует .auto/log.jsonl, группирует успешные изменения по независимым логическим блокам и предлагает структуру вам на согласование. После подтверждения инструмент создает отдельные чистые ветки от начального коммита. Каждая ветка содержит строго один логический набор правок с описанием выигрыша в сообщении коммита, поэтому их удобно ревьюить и мержить по отдельности.
Мониторинг и хуки
Следить за ходом работы можно прямо в терминале или через браузер:
- Виджет над редактором постоянно показывает таблицу результатов.
- Сочетание клавиш
Ctrl+Shift+Fоткрывает полноэкранный терминальный дашборд со списком попыток. - Команда
/autoresearch exportгенерирует интерактивную веб-страницу с графиками динамики метрик.
Если базового цикла не хватает, в директорию .auto/hooks/ можно положить исполняемые файлы before.sh и after.sh. Они срабатывают на границах итераций. Через них можно настроить отправку системных уведомлений на рабочий стол, поиск идей во внешней документации или ведение журнала обучения. Скрипт получает контекст через стандартный ввод в формате JSON, а его вывод в stdout отдается агенту в качестве системной подсказки.
На что обратить внимание
Автономные циклы способны быстро опустошить баланс API, если оставить их без присмотра на ночь. Имеет смысл сразу настроить лимит итераций в файле .auto/config.json:
{
"maxIterations": 30
}
Агент остановится, как только выполнит тридцать экспериментов.
Инструмент хорошо показывает себя в задачах с четко измеримым числовым результатом: оптимизация размера сборки веб-пакетов, ускорение выполнения юнит-тестов, подбор гиперпараметров для обучения небольших моделей или тюнинг показателей Lighthouse. Если вы уже используете консольный агент pi, проект определенно стоит попробовать на реальной задаче оптимизации.
