From 3d43f12e1d67044a9cd89db9b457048b39b75066 Mon Sep 17 00:00:00 2001 From: Taiga Date: Thu, 18 Jun 2026 13:50:56 +0000 Subject: [PATCH] =?UTF-8?q?[2026-06-18]=20taiga-vault:=20personal/agent/Ph?= =?UTF-8?q?ase=202=20=E2=80=94=20Approval=20Reactions.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../agent/Phase 2 — Approval Reactions.md | 41 ++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/personal/agent/Phase 2 — Approval Reactions.md b/personal/agent/Phase 2 — Approval Reactions.md index de4b97f0..03bb1cdb 100644 --- a/personal/agent/Phase 2 — Approval Reactions.md +++ b/personal/agent/Phase 2 — Approval Reactions.md @@ -3,7 +3,46 @@ ## Баг 1: Сообщения дропаются при аппрувл-прерывании (подтверждён) **Дата:** 2026-06-18 -**Статус:** Подтверждён, причина установлена +**Статус:** Исправлен — добавлен streaming через `display.platforms.webhook.streaming: true` + +## Баг 2: `▉` курсор в стриминге для webhook/Zulip (активный) + +**Дата:** 2026-06-18 +**Статус:** Диагностируется + +### Симптом +При стриминге через webhook (Zulip) — каждое partial сообщение содержит `▉` курсор в конце. Zulip не поддерживает редактирование сообщений, курсор добавляется и никогда не убирается. + +### Почему +`GatewayStreamConsumer` добавляет курсор `▉` к каждому partial сообщению (`on_delta` → `_send_or_edit`). Когда `adapter_supports_edit == False` — курсор остаётся навсегда, потому что: +1. Partial шлётся с курсором (первый send) +2. Edit не поддерживается → нельзя перезаписать/убрать курсор +3. `_send_fallback_final` при `got_done` — должен убрать курсор, но если edit не поддерживается — не может + +### Что сделано + +**Конфиг (`~/.hermes/hermes-whale/config.yaml`):** +- Добавлено `display.platforms.webhook.streaming: true` — стриминг для webhook +- Добавлено `platforms.webhook.extra.supports_message_editing: false` — указание что webhook не поддерживает edit + +**Код (`gateway/run.py`):** +- Добавлено чтение `platforms.{platform}.extra.supports_message_editing` из конфига (строка 16712-16718) +- Если в конфиге `supports_message_editing: false` — `_adapter_supports_edit = False` → `_effective_cursor = ""` → курсор не добавляется + +**Текущий статус:** `supports_message_editing: false` в конфиге есть, но логи всё ещё показывают `adapter_edit=True`. Причина выясняется. + +### Логи (актуальные) +``` +[whale-cursor] add cursor: ... adapter_edit=True +[whale-send] send_or_edit allowed: ... adapter_edit=True +``` +Все логи показывают `adapter_edit=True` — настройка не применяется. + +### Версии +- PID 17593 (Кит, порт 8645) +- Gateway запущен `python -m hermes_cli.main gateway run --replace` +- Логи: `~/.hermes/hermes-whale/logs/gateway.log` +- Конфиг: `~/.hermes/hermes-whale/config.yaml` ### Симптом Когда LLM пишет текст (через стриминг), потом делает tool call с опасной командой — аппрув-промпт прерывает стрим. Весь текст, который LLM уже сказала ДО опасной команды, **не доходит до юзера**. Юзер видит только аппрув-промпт и финальный ответ (если он есть).