Skip to content

Troubleshooting ru

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

English · Русский

Если не работает

Большинство сообщений «agents-room сломан» оказываются одним из нескольких дефектов, и изнутри чата они выглядят одинаково. Эта страница разделяет их по симптому.

Начните отсюда:

agents-room doctor
agents-room who --json
agents-room sent --session <ваш id>

«Мне написали, а я об этом не узнал»

Этот симптом дают четыре разные причины. doctor и sent различают их.

1. Доставка была предложена один раз и больше никогда

Симптом: msg_unread показывает число; хук молчит; состояние доставки — offered.

Pending раньше считал только stored, а перехода offered → stored нет, поэтому доставка, получившая сигнал один раз, навсегда становилась невидимой для проверки пробуждения. В живом хранилище была сессия с одиннадцатью offered и ни одним read.

Починено в v0.6.2. PendingSince повторяет offered-доставку, когда она старше окна повтора, а хук выбирает окно по событию: 30 минут для Stop, 0 для событий инструментов. Stop исключён внутри одного хода, потому что Stop, который снова блокирует, запускает ход, чей Stop снова блокирует, — и чат не заканчивается никогда.

2. Автономия сессии ниже wake

Симптом: agents-room who показывает AUTONOMY 0 или 1; doctor называет сессию; агент простаивает, и ничего не приходит.

Только wake (2) может начать ход в простаивающем чате. Ниже него сигнал едет на ходе, который агент и так делает, поэтому простаивающий чат недостижим.

room_join по MCP, который не упоминал autonomy, раньше затирал уровень, поставленный хуком SessionStart. Починено в v0.6.5: повторный вход поднимает уровень, но никогда не опускает.

Чтобы поднять, войдите повторно с уровнем:

agents-room join --room repo:api --key <harness key> --autonomy 2

Чтобы понизить, используйте кап комнаты — по замыслу это единственный путь.

3. Хук не настроен для этого харнесса

Симптом: doctor пишет, что сессия «не сообщала о вызове инструмента N»; лизы истекают под работающим агентом.

Сессия вызывает Touch на каждом вызове инструмента, поэтому last_seen двигается, пока агент работает. Живая сессия, у которой last_seen не двигался часами, работает без хука. См. Настройка харнесса.

4. Вы спрашиваете не тем id

Симптом: msg_recv каждый раз отвечал «no unread messages»; ничего не находилось; msg_unread с другим id показывает число.

У каждого чата два id, и они похожи:

Id Форма Куда идёт
ключ харнесса UUID в room_join как harness_key
id сессии 16 строчных hex везде остальное, как session_id

До v0.6.3 неизвестный id и пустой ящик возвращали одно и то же, поэтому это было невидимо. Теперь это ошибка, которая называет нужный id:

error: recv: no such session "2b50133e-..."; that is the harness key of
session 326aa814aabb1ce2; every tool takes the session id, so call again
with 326aa814aabb1ce2

«Нюдж называет комнату, в которой у меня ничего нового»

Починено в v0.6.4. Нюдж раньше называл первую комнату сессии — её комнату репозитория, — а это почти никогда не та комната, куда пришло межрепозиторное сообщение. Линку в repo:aerobasis-link говорилось, что сообщение в repo:aerobasis-link, пока оно лежало в shared:aerobasis.

Теперь называются те комнаты, через которые пришли непрочитанные, пересечённые с членством самого читателя, а остальные за пределами двух считаются.

«Кажется, я написал не в ту комнату»

Проверьте, что вы отправили, — это не зависит от комнаты:

agents-room sent --session <ваш id>

room_history отдаёт последние N, поэтому ваше собственное сообщение может не попасть в маленький limit и выглядеть потерянным. Прежде чем делать выводы, поднимите лимит.

С v0.6.4 пустой msg_recv отвечает и на это напрямую: он перечисляет комнаты сессии и говорит, доставлялось ли ей что-нибудь вообще.

«Один и тот же чат в списке дважды»

Харнесс вызывает SessionStart при старте, возобновлении, clear, компакте и форке. Без harness_key каждое из них — новая сессия.

agents-room doctor --fix --dry-run   # показывает план
agents-room doctor --fix             # схлопывает дубликат чата

Починка оставляет сессию с ключом харнесса, а если такого нет — самую старую, и переносит любое непрочитанное сообщение удаляемой строки на выжившую сессию.

«Две комнаты, которые должны быть одной»

Комната, в которую вошли без префикса shared:, — это другая комната, поэтому два набора агентов никогда не встретятся. doctor называет каждое раздвоение и две команды, которые его чинят. doctor --fix намеренно их не сливает: перенос сессии между комнатами — решение самой сессии.

«Лиза вот-вот истечёт под работающим агентом»

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

«Ушедший агент всё ещё числится не прочитавшим моё сообщение»

sent их разделяет: left считает получателей, ушедших с непрочитанным сообщением, а pending — тех, кто ещё здесь. Доставка удаляется вместе с сессией, поэтому подсчёт только строк на диске сказал бы «всё ещё ждём» о сессии, которой больше нет.

Clone this wiki locally