From e2b8c915b1ef6af76879a64434c8d83765be26c2 Mon Sep 17 00:00:00 2001 From: Alexey Martemyanov Date: Thu, 18 Jun 2026 09:20:51 +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 | 29 ------------------- .../zulip-router-approval-reactions.md | 26 +++++++++++++++-- 2 files changed, 24 insertions(+), 31 deletions(-) delete mode 100644 personal/agent/commands/reset-stop.md diff --git a/personal/agent/commands/reset-stop.md b/personal/agent/commands/reset-stop.md deleted file mode 100644 index 86903060..00000000 --- a/personal/agent/commands/reset-stop.md +++ /dev/null @@ -1,29 +0,0 @@ -# /reset и /stop — Слеш-команды НЕ обрабатываются Hermes - -Слеш-команды (`/reset`, `/stop` и любые другие `/...`) передаются агенту как обычный текст промпта. -Hermes **не перехватывает** их на уровне платформы или роутера — они идут прямо в контекст агента. - -Это значит: -- Агент **видит** `/reset` или `/stop` как часть сообщения -- Агент **обязан сам** решить, что с этим делать -- Hermes не сбрасывает контекст, не стопает инференс, не очищает историю при `/reset` - -## Что это значит на практике - -| Команда | Реальность | -|---------|------------| -| `/reset` | Не сбрасывает контекст — агент видит это как текст и должен сам остановиться / начать заново | -| `/stop` | Не останавливает агента — агент видит это как текст и должен сам прекратить действия | -| Любая `/команда` | Идёт агенту в промпт как обычное сообщение | - -## Почему так - -Hermes — агентный фреймворк, а не чат-платформа. У него нет встроенного парсера слеш-команд. Вся логика — на агенте. - -## Системные оповещения о действиях агента не приходят - -Hermes **не отправляет пользователю нотификации** о действиях агента. Когда агент пишет/читает/изменяет файлы, запускает команды, вызывает инструменты (MCP, skills, terminal, и т.д.) — пользователь об этом **не узнаёт**, если агент сам не напишет об этом в чат. - -Пример: когда я пишу этот доку через `mcp_obsidian_write_note` — пользователь не получает никакого уведомления. Увидит только когда агент напишет «Готово». - -**Способ узнать:** только дождаться ответа агента в чат или спросить «что сделано». diff --git a/personal/projects/zulip-router-approval-reactions.md b/personal/projects/zulip-router-approval-reactions.md index 42897aea..09cb555d 100644 --- a/personal/projects/zulip-router-approval-reactions.md +++ b/personal/projects/zulip-router-approval-reactions.md @@ -217,10 +217,32 @@ if event.get_command() in {"approve", "deny"}: return True ``` +## Слеш-команды не обрабатываются Hermes + +Слеш-команды (`/reset`, `/stop`, `/approve`, `/deny` и любые другие `/...`) передаются агенту как обычный текст промпта. Hermes **не перехватывает** их на уровне платформы или роутера. + +| Команда | Реальность | +|---------|------------| +| `/reset` | Не сбрасывает контекст — агент видит это как текст и должен сам остановиться / начать заново | +| `/stop` | Не останавливает агента — агент видит это как текст и должен сам прекратить действия | +| `/approve` | Тоже идёт агенту — но есть отдельная проблема с interrupt (см. Root cause, слой 2) | +| Любая `/команда` | Идёт агенту в промпт как обычное сообщение | + +**Root cause:** Hermes — агентный фреймворк, а не чат-платформа. У него нет встроенного парсера слеш-команд. Вся логика — на агенте. + +## Системные оповещения о действиях агента не приходят + +Hermes **не отправляет пользователю нотификации** о действиях агента. Когда агент пишет/читает/изменяет файлы, запускает команды, вызывает инструменты (MCP, skills, terminal, и т.д.) — пользователь об этом **не узнаёт**, если агент сам не напишет об этом в чат. + +**Способ узнать:** только дождаться ответа агента в чат или спросить «что сделано». + ## TODO -### Phase 1: `/approve` текстом (срочно) -- [ ] Добавить guard в `_route_to_active_session()` — если команда approve/deny, не прерывать агента и approval +### Phase 1: `/approve` текстом (✅ сделано) +- [x] Проанализировать код и написать план +- [x] Добавить guard в `_route_to_active_session()` — если команда approve/deny, не прерывать агента и approval +- [x] Тесты: 21 passed (2.35s) +- [x] Закоммичено: `eae71aab8` — `gateway/run.py` (8 строк добавил) ### Phase 2: Реакции через роутер - [ ] Добавить `"reaction"` в event_types роутера