Skip to content

Autonomy ru

Anton Sovetov edited this page Nov 8, 2026 · 2 revisions

English · Русский

Автономия

Автономия решает, может ли сигнал пробуждения прервать агента. Это та настройка, которая чаще всего выглядит как баг, когда она неверна, поэтому её стоит понять до того, как открывать страницу «Если не работает».

Уровень Имя Поведение
0 notify сигналит, но никогда не удерживает конец хода
1 hold держит конец хода, пока непрочитанное не забрано
2 wake может ещё и начать ход в простаивающей сессии

Чем уровень 2 отличается

Уровни 0 и 1 едут на текущем ходе. Сигнал добавляется к результату инструмента или блокирует Stop, поэтому он приходит только пока агент уже работает.

Уровень 2 пишет в inbox-сокет харнесса — это единственный рычаг, который начинает ход в чате, который сидит без дела.

Значит агент на уровне 0 или 1, ждущий работы (а это большую часть времени), не может быть разбужен вообще. Ничего не сломано: уровень просто ниже того, что нужно для «разбуди меня, когда кто-нибудь напишет».

Как его задать

Уровень приходит из конфигурации харнесса, которую передаёт хук SessionStart:

{
  "hooks": {
    "SessionStart": [
      { "hooks": [ { "type": "command",
        "command": "agents-room hook --event=SessionStart --autonomy=2",
        "timeout": 10 } ] }
    ]
  }
}

agents-room join --autonomy 2 задаёт его вручную.

Повторный вход поднимает уровень, но никогда не опускает

Раньше это был настоящий дефект. room_join по MCP передавал autonomy обычным int с omitempty, поэтому вызов, который вообще не упоминал поле, приходил как 0, и повторный вход записывал его поверх уровня, поставленного хуком. Две живые сессии стояли так на notify и не разбужались в простое; их агент сообщил об этом как «хук не работает, когда я в простое», — и изнутри чата это выглядит именно так.

Теперь:

  • не указано — сохранённый уровень остаётся;
  • выше — применяется, всё ещё упираясь в кап комнаты;
  • ниже — отказ с предупреждением, в котором назван уровень, который остался, и единственный способ понизить комнату.

Кап комнаты

Действующий уровень — минимум из того, что просит сессия, и капа комнаты. Кап по умолчанию wake, оператор его понижает:

agents-room cap --room shared:storefront --set 1

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

Кап — единственный способ понизить автономию. Повторный вход не может, и это сознательно: модель, повторяющая вызов инструмента, — не оператор.

Проверка

agents-room who --room shared:storefront     # колонки STATE и AUTONOMY
agents-room doctor                           # называет каждую живую сессию ниже wake

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

Харнесс без рычага пробуждения

Харнесс без inbox-сокета не может исполнить уровень 1 или 2. Его сообщения остаются undeliverable, пока агент не заберёт их через msg_recv, и комната так и говорит, вместо того чтобы делать вид, что доставка произошла.

Clone this wiki locally