From e7acc4366e5e9e9b4519f14053ba2155ec74667d Mon Sep 17 00:00:00 2001 From: Taiga Date: Thu, 18 Jun 2026 03:21:03 +0000 Subject: [PATCH] [2026-06-18] taiga-vault: 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, 53 insertions(+), 2 deletions(-) create mode 100644 personal/agent/commands/reset-stop.md diff --git a/personal/agent/commands/reset-stop.md b/personal/agent/commands/reset-stop.md new file mode 100644 index 00000000..86903060 --- /dev/null +++ b/personal/agent/commands/reset-stop.md @@ -0,0 +1,29 @@ +# /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 роутера