From afa1cf36943c52ae4cbcdfbc5dfc15897b964421 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Thu, 18 Jun 2026 09:51:15 +0600 Subject: [PATCH] [2026-06-18] eagle: personal/agent/commands/reset-stop.md personal/projects/zulip-router-approval-reactions.md --- personal/agent/commands/reset-stop.md | 36 +++++++++++-------- .../zulip-router-approval-reactions.md | 3 ++ 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/personal/agent/commands/reset-stop.md b/personal/agent/commands/reset-stop.md index 86903060..ee8a6bc0 100644 --- a/personal/agent/commands/reset-stop.md +++ b/personal/agent/commands/reset-stop.md @@ -1,24 +1,30 @@ -# /reset и /stop — Слеш-команды НЕ обрабатываются Hermes +# /reset и /stop — Слеш-команды в gateway -Слеш-команды (`/reset`, `/stop` и любые другие `/...`) передаются агенту как обычный текст промпта. -Hermes **не перехватывает** их на уровне платформы или роутера — они идут прямо в контекст агента. +## /stop -Это значит: -- Агент **видит** `/reset` или `/stop` как часть сообщения -- Агент **обязан сам** решить, что с этим делать -- Hermes не сбрасывает контекст, не стопает инференс, не очищает историю при `/reset` +**Обрабатывается gateway'ом** на уровне `_message_handler` (строка 7719 run.py): -## Что это значит на практике +1. `_message_handler` перехватывает /stop **ДО** роутинга в `_route_to_active_session` +2. Вызывает `_interrupt_and_clear_session()` — принудительное прерывание + чистка сессии +3. Interrupt в `_route_to_active_session` (строки 3500-3504) тоже срабатывает, но это не ломает — /stop должен прерывать агента -| Команда | Реальность | -|---------|------------| -| `/reset` | Не сбрасывает контекст — агент видит это как текст и должен сам остановиться / начать заново | -| `/stop` | Не останавливает агента — агент видит это как текст и должен сам прекратить действия | -| Любая `/команда` | Идёт агенту в промпт как обычное сообщение | +## /reset -## Почему так +**Не обрабатывается gateway'ом как отдельная команда.** Идёт агенту как текст промпта. -Hermes — агентный фреймворк, а не чат-платформа. У него нет встроенного парсера слеш-команд. Вся логика — на агенте. +В коде есть `/new` (строка 7736), который делает interrupt + reset. /reset же агент видит как обычный текст. + +**Способ:** писать `@**Кит** /new` (синтаксис gateway) а не `/reset`. Либо положиться на то, что агент сам увидит `/reset` в тексте и остановится. + +## /approve и /deny + +Обрабатываются отдельно — см. `personal/projects/zulip-router-approval-reactions.md`. + +## Системные оповещения о действиях агента не приходят + +Hermes **не отправляет пользователю нотификации** о действиях агента. Когда агент пишет/читает/изменяет файлы, запускает команды, вызывает инструменты (MCP, skills, terminal, и т.д.) — пользователь об этом **не узнаёт**, если агент сам не напишет об этом в чат. + +**Способ узнать:** только дождаться ответа агента в чат или спросить «что сделано». ## Системные оповещения о действиях агента не приходят diff --git a/personal/projects/zulip-router-approval-reactions.md b/personal/projects/zulip-router-approval-reactions.md index 09cb555d..304a23ac 100644 --- a/personal/projects/zulip-router-approval-reactions.md +++ b/personal/projects/zulip-router-approval-reactions.md @@ -243,6 +243,9 @@ Hermes **не отправляет пользователю нотификаци - [x] Добавить guard в `_route_to_active_session()` — если команда approve/deny, не прерывать агента и approval - [x] Тесты: 21 passed (2.35s) - [x] Закоммичено: `eae71aab8` — `gateway/run.py` (8 строк добавил) +- [x] Доки обновлены: `reset-stop.md` (правда о /stop и /reset), `zulip-router-approval-reactions.md` (прогресс) + +### Phase 2: Реакции через роутер (следующий шаг) ### Phase 2: Реакции через роутер - [ ] Добавить `"reaction"` в event_types роутера