2026-07-31T05:48:14.908Z

Disler Claude Code Перехватывает многоагентную наблюдаемость: доказательство доставки событий

Аудит конфигурации, доставки HTTP, устойчивости SQLite, актуальности WebSocket, ожидания и результатов, прежде чем доверять информационной панели Disler Claude Code.

Безопасный ответ: не рассматривайте доступную панель мониторинга или код выхода с нулевым перехватом как доказательство того, что конвейер Claude Code перехватов многоагентного наблюдения Disler исправен. Требуйте квитанцию ​​на каждой границе — конфигурации, доставке HTTP, сохранении SQLite, доставке WebSocket и актуальности браузера — а затем проверяйте работу за пределами пути мониторинга. Это различие имеет значение, поскольку собственная архитектура репозитория представляет собой цепочку: агенты Claude → сценарии перехвата → HTTP POST → сервер Bun → SQLite → WebSocket → клиент Vue. Яркое событие в последнем ящике доказывает, что одно событие перешло цепочку. «Тихий ящик» не сообщает вам, где остановились доказательства, а событие Stop не доказывает существование запрошенного файла, теста, развертывания или передачи обслуживания. Я проверял фиксацию репозитория 8a6e5cf и переиграл девять кейсов без содержания. Наивное правило, которое проверяет только код завершения процесса перехватчика, отмеченный всеми девятью зелеными. Правило получения классифицировало все девять, как и ожидалось; только один был здоров. Закрепите репозиторий и определите контракт доказательства Начните с кода, который вы фактически запускаете. В закрепленном коммите .claude/settings.json настраивает двенадцать групп событий: SessionStart , SessionEnd , UserPromptSubmit , PreToolUse , PostToolUse , PostToolUseFailure , PermissionRequest , Notification , SubagentStart , SubagentStop , Stop и PreCompact . Электрический токСправочник по хукам Claude Codeдокументирует тридцать событий жизненного цикла. Этот больший набор включает в себя новые команды и сигналы ошибок, такие как TaskCreated , TaskCompleted , TeammateIdle , StopFailure и PostToolBatch . Сравнение не означает, что каждая установка должна охватывать все тридцать. Это означает, что «все перехватчики» — это версионное утверждение: определите минимальные события, необходимые вашему рабочему решению, закрепите версию Claude Code и провалите проверку покрытия, когда конфигурация больше не соответствует манифесту. Для канарейки с одним агентом разумным минимумом является SessionStart , одна пара PreToolUse и PostToolUse и Stop . Для группового запуска добавьте жизненный цикл субагента и сигналы задачи или товарища по команде, которые предоставляет установленная версия Claude Code. Отсутствующее событие имеет смысл только после того, как вы установите, что оно ожидалось и было настроено. Следующая граница — отправитель. Закреплённый send event.py использует пятисекундный таймаут HTTP. Он возвращает False и записывает в stderr, когда запрос завершается неудачей, но main() не использует этот результат: он завершает работу с нулевым кодом безоговорочно, поэтому мониторинг не может заблокировать Claude Code. Это оправданный выбор доступности, но он делает нулевой код выхода сигналом активности, а не подтверждением доставки. Сервер предоставляет более надежную квитанцию. Его POST /events path проверяет обязательные поля, вставляет событие, затем возвращает сохраненную запись и передает ее подключенным клиентам WebSocket. Сохраните возвращенный идентификатор базы данных для канарейки. Соединение HTTP без сохраненного идентификатора не является эквивалентным доказательством. Рецепт just health репозитория требует такой же интерпретации. Он запрашивает /health , но закрепленный сервер не имеет выделенной ветки работоспособности; несовпадающие пути получают общий ответ Multi Agent Observability Server с HTTP 200. Это доказывает, что процесс ответил HTTP. Он не осуществляет вставку событий, читаемость SQLite, доставку WebSocket или текущее представление браузера. Используйте явный контракт: Квитанция Доказательства для сохранения Что это не доказывает Конфигурация закрепленный манифест события и значение исходного приложения что крючок выстрелил Транспорт HTTP 200 плюс сохраненный идентификатор события что браузер получил его Упорство тот же идентификатор виден в последних событиях что просмотр актуален Презентация WebSocket или переподключение воспроизведения содержит идентификатор что все необходимые события прибыли Покрытие каждое необходимое событие появляется раньше срока эта работа увенчалась успехом Исход детерминированная проверка предполагаемого результата чтобы будущие пробежки оставались здоровыми Прежде чем доверять представлению, воспроизведите аудит доставки. Я закодировал эти границы в приспособлении без подсказок, расшифровок, входных данных инструментов, путей к файлам или секретов. Запустите его с помощью: Повтор произвел: Классификатор использует приоритет. Сначала он проверяет, действительно ли перехватчик выхода ноля достиг сервера. Затем он требует квитанцию ​​о сохранении, проверяет актуальность доставки браузера, проверяет настроенный манифест, устаревает устаревшее свидетельство, сохраняет законное ожидание до крайнего срока и только затем спрашивает, существует ли запланированный результат. приспособление Классификация Решение оператора Отправитель выходит из нуля после неудачного POST delivery failed hidden проверить stderr отправителя и доступность сервера HTTP принят, но идентификатор не сохранен persistence unverified не делайте вывод о хранении из транспортировки У SQLite есть событие, а у WebSocket его нет. dashboard stale переподключитесь и проверьте воспроизведение перед диагностикой агента Командные мероприятия обязательны, но не настроены manifest drift обновить или сузить закрепленный манифест Настроенное событие никогда не приходит coverage gap проверить сопоставитель, процесс перехвата и совместимость версий Зависимость разрешения находится до истечения крайнего срока waiting направить решение его владельцу; не называй это застрявшим Stop прибывает без квитанции о доставке. false complete проверьте внешний результат перед очисткой цикла Остаются только старые события stale срок действия истекает зеленым, и доказательства сообщаются как недоступные Каждая граница и результат проходят healthy принять этот запуск, а не всю установку навсегда Ветка waiting предотвращает распространенную ложную тревогу. Если запрос разрешения имеет поименованного владельца и неистекший срок, ожидается отсутствие более позднего результата инструмента. По истечении крайнего срока или при отсутствии владельца те же доказательства становятся проблемой покрытия или прогресса. Время и право собственности меняют диагноз; подсчет событий сам по себе не может. Ветка false complete предотвращает противоположную ошибку. Официальная ссылка Claude Code определяет Stop как конец ответа. Репозиторий может достоверно отображать этот факт жизненного цикла. Ни одна система не утверждает, что пункт назначения изменился. Файловая задача требует проверки ожидаемого пути и содержимого; задача кода требует соответствующих тестов; для удаленного действия требуется уведомление о назначении. Держите эти проверки вне транспортировочного крюка, чтобы система мониторинга не могла сертифицировать себя. Существует также компромисс в отношении конфиденциальности. Репозиторий поддерживает дополнительный захват чата и отображает данные, связанные с подсказками. Родов здоровье тоже не требует. Канарейка может использовать только непрозрачные идентификаторы, такие как source app , session id , hook event type , метку времени и возвращаемый идентификатор события. Минимизируйте конверт, прежде чем расширять наблюдаемость. Управляйте маленькой канарейкой, а затем проверьте реальный результат Примите аудит в пять ограниченных шагов. 1. Версии и область закрепления. Запишите фиксацию репозитория, версию Claude Code, идентификатор исходного приложения и точные события жизненного цикла, необходимые для вашего решения. Просмотрите официальную ссылку на перехватчики при изменении любой версии. 2. Отправьте одну уникальную канарейку. Используйте одноразовый идентификатор сеанса и безвредную полезную нагрузку PreToolUse . Требуйте HTTP 200 и анализируйте возвращенный сохраненный идентификатор события. Не используйте только код выхода перехватчика. 3. Подтвердите хранение и представление. Немедленно запросите /events/recent и найдите этот точный идентификатор. Повторно подключите клиент Vue или тестовый WebSocket к /stream и запросите то же событие в начальном воспроизведении или сообщении в реальном времени. Держите галочку внутри окна повтора; закрепленный сервер отправляет 300 последних строк при открытии WebSocket. 4. Проверьте охват и актуальность. Запустите известную последовательность жизненного цикла, сравните наблюдаемые типы событий с закрепленным манифестом и примените крайние сроки для каждого события. Разрешение, принадлежащее маршруту, ожидает в режиме ожидания. Уничтожьте старые доказательства вместо того, чтобы хранить устаревшие зеленые. 5. Проверьте результат пользователя отдельно. Укажите ожидаемый файл, результат теста, состояние задачи или внешний эффект. Монитор должен сообщить false complete , когда жизненный цикл завершится без этого получения. Этот процесс имеет пределы. Он тестирует настроенную доставку через закрепленный репозиторий; он не обеспечивает семантическую корректность для каждой полезной нагрузки. Добавление всех доступных перехватчиков может увеличить задержку, объем хранилища и уязвимость конфиденциальных данных. Минимальный манифест с версионированием обычно безопаснее, чем неизбирательный сбор. Прибор из девяти случаев демонстрирует правило принятия решения, а не преобладание сбоев в производстве. Sidewisp соответствует этой границе как уровень работоспособности, а не как еще одна среда выполнения Claude Code или замена репозитория. Sidewisp сейчас находится на этапе закрытого предварительного доступа. Публичный сайт и интерактивная демонстрация доступны, но производственный адаптер мониторинга Claude Code, сборщик работоспособности и средство автоматического восстановления не поставляются. Восстановление остается запланированной возможностью, ограниченной утверждением; Текущий честный следующий шаг — присоединиться к списку ожидания частного предварительного просмотра, если эта модель получения соответствует тому, как вы работаете с агентами. Для этого репозитория сохраните правило: событие информационной панели является свидетельством наблюдаемой активности. Объявляйте выполнение работоспособным только тогда, когда требуемый манифест события актуален, у канарейки есть квитанции о транспортировке, сохранении и представлении, у любого ожидания есть владелец и крайний срок, а предполагаемый результат проходит собственную детерминированную проверку.