# Как проверить, может ли ИИ-агент работать автономно и без контроля: тесты и риски

> AI Release · @ai_release1 · https://ai-release.org/guides/kak-proverit-mozhet-li-ii-agent-rabotat-avtonomno-i-bez.html

Проблема, которую решает этот гайд: вы собрали ИИ-агента (программу, которая сама вызывает инструменты и делает шаги к цели), он отвечает на вопросы в чате — и теперь надо понять, можно ли отпустить его работать без человека, или он наделает дел. Гайд подходит для любого агента, который запускается на Linux-сервере, локальном ПК или в мобильном офлайн-ассистенте: процедура не зависит от конкретной модели, нужен только доступ к API-ключу и файл с логами. Ниже — протокол тестов, метрики и список рисков, по которым вы за один вечер получите ответ «да», «нет» или «пока рано».

## Требования и подготовка
![Иллюстрация к разделу «Требования и подготовка»](https://ai-release.org/guides/img/kak-proverit-mozhet-li-ii-agent-rabotat-avtonomno-i-bez-ru-1.jpg)

- Рабочий агент с ключом API (ключ — это пароль для доступа к модели; выдайте ему отдельный ключ, не свой личный).
- Среда запуска: VPS (VPS — виртуальный сервер в интернете, который работает круглосуточно) с Linux, либо локальный ПК, либо смартфон, если тестируете офлайн-ассистента. Как это выглядит на живом пет-проекте, разобрано в гайде [Как мы за $18 подняли автономную ИИ-ленту на VPS с 1 ГБ RAM](https://ai-release.org/guides/kak-my-sobrali-telegram-kanal-ob-ii.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide).
- Если ваш агент живёт на телефоне, а не на сервере, сначала пройдите [ИИ-агент прямо на смартфоне: как установить и пользоваться офлайн-ассистентом](https://ai-release.org/guides/ii-agent-pryamo-na-smartfone-kak-ustanovit-i-polzovatsy.html?utm_source=tg&utm_medium=channel&utm_campaign=guide_inline&utm_content=guide_to_guide) — там про установку, а тесты автономности из этого гайда применяются к нему так же.
- «Золотой набор»: 5–10 задач с заранее известным правильным ответом (например, «собери 3 новости по теме X и дай ссылки»).
- Логирование: агент должен писать каждый шаг в файл или в stdout (stdout — обычный вывод программы в консоль).
- Лимиты: таймаут (максимальное время работы), максимум шагов, лимит на стоимость запросов.
- Права: отдельный непривилегированный пользователь или контейнер. Никаких личных файлов, кошельков и продакшн-баз.
- Таблица для результатов: CSV или просто заметка, куда вы пишете «задача, шагов, секунд, итог».
- Базовые понятия, которые понадобятся: идемпотентность — повторный запуск не создаёт дубль; песочница — изолированная среда, из которой агент не достанет лишнего; human-in-the-loop — человек подтверждает опасные действия.

## Пошаговая инструкция
![Иллюстрация к разделу «Пошаговая инструкция»](https://ai-release.org/guides/img/kak-proverit-mozhet-li-ii-agent-rabotat-avtonomno-i-bez-ru-2.jpg)

1. Сформулируйте, что для вас значит «автономно». Выпишите 3–5 пунктов: агент сам выбирает инструмент, сам исправляет ошибку, сам останавливается при неудаче, сам отчитывается о результате. Ожидаемый результат: у вас на руках письменный чек-лист, а не ощущение «вроде работает».
**Пример:** «1) проходит задачу без подсказок; 2) при ошибке API делает 2 повтора; 3) не выходит за список разрешённых инструментов; 4) пишет финальный отчёт».
Почему это работает: без критерия вы будете спорить о вкусах, а с критерием — считать галочки.

2. Соберите «золотой набор» задач. Возьмите 5–10 простых и 2–3 с подвохом (задача, где данных нет, и задача, где нужно отказаться). Ожидаемый результат: файл `tasks.txt`, по одной задаче в строке.
**Пример:** строка `Найди 3 источника по теме "автономные агенты" и верни ссылки` — эталонный ответ вы пишете сами заранее.

3. Прогоните агента в режиме наблюдения: человек подтверждает каждый шаг. Записывайте, где именно вы вмешались. Ожидаемый результат: список «точек вмешательства». Если вы вмешались 10 раз из 10 — автономности пока нет, и это нормальный старт.

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

| Задача | Шагов | Секунд | Итог |
|---|---|---|---|
| Поиск 3 источников | 6 | 48 | успех |
| Задача без данных | 4 | 21 | корректный отказ |

Почему это работает: метрики показывают дрейф — постепенное ухудшение, которое глазом не видно.

5. Сделайте «слепой запуск»: уберите человека и оберните агента в лимиты. Ожидаемый результат: агент либо завершает задачу, либо останавливается сам по таймауту.
**Пример:** обёртка на bash:

```bash
#!/usr/bin/env bash
# Запуск агента с жёстким лимитом времени и записью лога
mkdir -p runs
LOG="runs/$(date +%Y%m%d-%H%M%S).log"
timeout 300 python3 agent.py --task "$1" 2>&1 | tee "$LOG"
echo "exit=$? log=$LOG"
```

Здесь `timeout 300` убивает процесс через 300 секунд, а `tee` пишет всё в лог и на экран. Почему это работает: зацикливание перестаёт быть бесконечным — вы всегда получаете управление обратно.

6. Проверьте идемпотентность: запустите одну и ту же задачу дважды подряд. Ожидаемый результат: второй прогон не создаёт дублей (двух одинаковых постов, двух писем, двух записей в базе).
**Пример:** если агент публикует пост, после двух запусков в ленте должен быть один пост, а не два.

7. Проверьте восстановление после сбоя. Сломайте что-нибудь специально: отключите сеть, подставьте неверный ключ. Ожидаемый результат: агент делает 1–2 повтора с паузой и останавливается с понятной ошибкой, а не молотит запросы час.
**Пример:** ошибка вида `401 Unauthorized` в логе должна сопровождаться строкой «останавливаюсь после 2 попыток».

8. Проверьте границы: дайте задачу, которая требует запрещённого действия (удалить файл, потратить деньги, отправить письмо наружу). Ожидаемый результат: отказ и запись в лог «действие не разрешено».
Почему это работает: вы тестируете не ум, а тормоза. У автономного агента тормоза важнее ума.

9. Проведите серию: 20 запусков подряд без вмешательства. Считайте долю успешных. Ожидаемый результат: цифра с контекстом, например «18 из 20 задач закрыты, 2 остановлены по таймауту, средний прогон 52 секунды».
Почему это работает: один успех — случайность, серия — статистика.

10. Проверьте наблюдаемость и «стоп-кран». Убедитесь, что у вас есть: лог с шагами, уведомление об ошибке и команда остановки. Ожидаемый результат: вы можете убить агента одной командой и понять по логу, что он делал последние 5 минут.
**Пример:** чек-лист перед допуском к автономной работе:

- [ ] отдельный API-ключ с лимитом расходов
- [ ] таймаут 300 секунд задан
- [ ] лимит шагов (например, 15) задан
- [ ] логи пишутся в файл и не перезаписываются
- [ ] агент работает под непривилегированным пользователем
- [ ] проверен стоп-кран (kill switch)
- [ ] в песочнице нет реальных данных, денег и личных файлов
- [ ] серия из 20 запусков пройдена

## Возможные проблемы и решения
![Иллюстрация к разделу «Возможные проблемы и решения»](https://ai-release.org/guides/img/kak-proverit-mozhet-li-ii-agent-rabotat-avtonomno-i-bez-ru-3.jpg)

- **Симптом:** в логе одни и те же вызовы по кругу, время прогона растёт, стоимость токенов ползёт вверх. Это зацикливание. Решение: 1) поставьте счётчик шагов и жёсткий лимит (например, 15); 2) добавьте таймаут через `timeout`; 3) детектируйте повтор: если два шага подряд совпали — остановка с ошибкой «нет прогресса»; 4) перезапустите на «золотом наборе» и убедитесь, что задача закрывается за прежнее число шагов.

- **Симптом:** ошибка вида `429 Too Many Requests` или «превышен лимит запросов». Решение: 1) добавьте паузу между запросами; 2) сделайте повтор с увеличивающейся задержкой (backoff — после каждой неудачи ждём дольше: 2 с, 4 с, 8 с); 3) ограничьте параллельные запуски одним; 4) проверьте лимиты вашего ключа в панели провайдера.

- **Симптом:** агент молчит: задача вроде сделана, но лог обрывается на середине, финального отчёта нет. Решение: 1) сделайте финальный отчёт обязательным шагом, без него прогон считается проваленным; 2) пишите лог построчно с временем (`tee` уже это делает); 3) проверьте, не убивает ли процесс сам хостинг по памяти — на слабом VPS это частая причина; 4) запустите задачу локально и сравните логи.

- **Симптом:** при повторе той же задачи результат другой (то 3 источника, то 1). Решение: 1) зафиксируйте параметры генерации, насколько это позволяет модель; 2) снизьте «свободу» формулировок в промпте; 3) считайте не один прогон, а долю успехов на серии из 20; 4) если разброс большой — оставьте human-in-the-loop на финальном шаге.

## FAQ

**Сколько запусков нужно, чтобы сказать «агент автономен»?**
Ориентируйтесь на серию из 20 запусков на «золотом наборе». Если 18–20 задач закрыты без вмешательства, а остальные корректно остановлены с понятной ошибкой — можно говорить об автономности в рамках этих задач.

**Агент один раз прошёл тест без человека. Этого достаточно?**
Нет. Один успех ничего не доказывает: он может быть случайным. Нужны серия, замер времени и токенов, проверка идемпотентности и тест на запрещённые действия.

**Чем опасен автономный агент на VPS?**
Он работает круглосуточно и без вас: может зациклиться и жечь бюджет запросов, публиковать дубли, а при широких правах — трогать файлы и внешние сервисы. Поэтому отдельный ключ с лимитом, непривилегированный пользователь, таймаут и стоп-кран обязательны.

**Нужен ли человек в цикле, если все тесты пройдены?**
Для безопасных задач (сбор и пересказ информации) можно убирать. Для необратимых действий — публикация, отправка писем, платежи, удаление — оставляйте подтверждение человека. Правило простое: чем труднее отменить действие, тем нужнее human-in-the-loop.
