2026-07-31T05:48:31.498Z

Disler Claude Code 후크 다중 에이전트 관찰성: 이벤트 전달 입증

Disler Claude Code 대시보드를 신뢰하기 전에 구성, HTTP 전달, SQLite 지속성, WebSocket 신선도, 대기 및 결과를 감사하세요.

안전한 대답은 연결 가능한 대시보드나 제로 후크 종료 코드를 Disler의 Claude Code 후크 다중 에이전트 관찰 파이프라인이 정상이라는 증거로 취급하지 않는 것입니다. 구성, HTTP 전달, SQLite 지속성, WebSocket 전달 및 브라우저 최신 상태 등 각 경계에서 영수증을 요구한 다음 모니터링 경로 외부의 작업을 확인합니다. 저장소 자체 아키텍처가 체인이기 때문에 이러한 구별이 중요합니다. Claude 에이전트 → 후크 스크립트 → HTTP POST → Bun 서버 → SQLite → WebSocket → Vue 클라이언트. 마지막 상자의 밝은 이벤트는 하나의 이벤트가 체인을 통과했음을 증명합니다. 조용한 상자는 증거가 중지된 위치를 알려주지 않으며 Stop 이벤트는 요청된 파일, 테스트, 배포 또는 전달이 존재함을 증명하지 않습니다. 저장소 커밋을 감사했습니다. 8a6e5cf 콘텐츠가 없는 9가지 사례를 재생했습니다. 9개 모두 녹색으로 표시된 후크 프로세스 종료 코드만 확인하는 순진한 규칙입니다. 수신 규칙은 9개 모두 예상대로 분류했습니다. 한 명만 건강했어요. 저장소를 고정하고 증거 계약을 정의합니다. 실제로 실행하는 코드부터 시작하세요. 고정된 커밋에서 .claude/settings.json 12개의 이벤트 그룹 구성: SessionStart , SessionEnd , UserPromptSubmit , PreToolUse , PostToolUse , PostToolUseFailure , PermissionRequest , Notification , SubagentStart , SubagentStop , Stop 및 PreCompact . 현재Claude Code 후크 참조30개의 라이프사이클 이벤트를 문서화합니다. 더 큰 세트에는 TaskCreated , TaskCompleted , TeammateIdle , StopFailure 및 PostToolBatch 와 같은 최신 팀 및 실패 신호가 포함됩니다. 비교는 모든 설치가 30개를 모두 캡처해야 한다는 것을 의미하지 않습니다 . 이는 "모든 후크"가 버전이 지정된 클레임을 의미합니다. 운영 결정에 필요한 최소 이벤트를 정의하고, Claude Code 버전을 고정하고, 구성이 더 이상 해당 매니페스트와 일치하지 않으면 적용 범위 검사에 실패합니다. 단일 에이전트 카나리아의 경우 합리적인 최소값은 SessionStart , 한 쌍의 PreToolUse 및 PostToolUse , Stop 입니다. 팀 실행의 경우 설치된 Claude Code 버전이 노출하는 하위 에이전트 수명 주기와 작업 또는 팀원 신호를 추가하세요. 누락된 이벤트는 해당 이벤트가 예상되고 구성되었음을 확인한 후에만 의미가 있습니다. 다음 경계는 발신자입니다. 고정된 send event.py 5초 HTTP 시간 제한을 사용합니다. 요청이 실패하면 False 를 반환하고 stderr에 쓰지만 main() 는 해당 결과를 사용하지 않습니다. 무조건 코드 0으로 종료되므로 모니터링은 Claude Code를 차단할 수 없습니다. 이는 방어 가능한 가용성 선택이지만 종료 코드 0을 배달 확인이 아닌 활동 신호로 만듭니다. 서버는 더 강력한 영수증을 제공합니다. 그것은 POST /events 경로는 필수 필드의 유효성을 검사하고 이벤트를 삽입한 다음 저장된 레코드를 반환하고 이를 연결된 WebSocket 클라이언트에 브로드캐스트합니다. 카나리아에 대해 반환된 데이터베이스 ID를 유지합니다. 저장된 ID가 없는 HTTP 연결은 동등한 증거가 아닙니다. 저장소의 just health 레시피에도 동일한 해석이 필요합니다. /health 를 요청하지만 고정된 서버에는 전용 상태 분기가 없습니다. 일치하지 않는 경로는 HTTP 200으로 일반 Multi Agent Observability Server 응답을 받습니다. 이는 프로세스가 HTTP로 응답했음을 증명합니다. 이벤트 삽입, SQLite 가독성, WebSocket 전달 또는 현재 브라우저 보기를 실행하지 않습니다. 명시적인 계약을 사용하세요. 영수증 보유할 증거 증명하지 못하는 것 구성 고정된 이벤트 매니페스트 및 소스 앱 값 갈고리가 발사됐다고 수송 HTTP 200 + 저장된 이벤트 ID 브라우저가 그것을 받았다는 것 고집 최근 이벤트에 표시된 동일한 ID 그 견해는 현재의 것입니다 프레젠테이션 WebSocket 또는 다시 연결 재생에 ID가 포함되어 있습니다. 필요한 모든 이벤트가 도착했습니다. 적용 범위 모든 필수 이벤트는 마감일 전에 나타납니다. 그 일은 성공했어 결과 의도한 결과물에 대한 결정론적 확인 미래의 달리기는 건강하게 유지됩니다 보기를 신뢰하기 전에 배달 감사를 재생하십시오. 프롬프트, 기록, 도구 입력, 파일 경로 또는 비밀 없이 해당 경계를 고정 장치에 인코딩했습니다. 다음을 사용하여 실행하세요. 리플레이는 다음과 같이 제작되었습니다. 분류자는 우선순위를 사용합니다. 먼저 종료 제로 후크가 실제로 서버에 도달했는지 확인합니다. 그런 다음 지속성 수신을 요구하고, 브라우저 전달이 최신인지 확인하고, 구성된 매니페스트를 검증하고, 오래된 증거를 만료하고, 기한 전에 합법적인 대기 시간을 유지한 다음 의도한 결과가 존재하는지 여부만 묻습니다. 고정물 분류 운영자 결정 POST 실패 후 발신자가 0을 종료합니다. delivery failed hidden 발신자 stderr 및 서버 연결 가능성 검사 HTTP가 허용되지만 저장된 ID가 없습니다. persistence unverified 운송으로부터 저장을 추론하지 마십시오 SQLite에는 이벤트가 있지만 WebSocket에는 이벤트가 없습니다. dashboard stale 에이전트를 진단하기 전에 다시 연결하고 재생을 확인하십시오. 팀 이벤트가 필요하지만 구성되지 않았습니다. manifest drift 고정된 매니페스트를 업데이트하거나 범위를 좁힙니다. 구성된 이벤트가 도착하지 않음 coverage gap 매처, 후크 프로세스 및 버전 호환성 검사 권한 종속성이 기한 전입니다. waiting 결정을 소유자에게 전달합니다. 막혔다고 하지 마세요 Stop 가 배송 영수증 없이 도착함 false complete 실행을 지우기 전에 외부 결과를 확인하십시오. 오래된 이벤트만 남아있습니다 stale 녹색으로 만료되고 증거를 사용할 수 없는 것으로 보고합니다. 모든 경계와 결과는 지나간다 healthy 전체 설치를 영원히 수락하는 것이 아니라 이 실행을 수락합니다. waiting 분기는 일반적인 잘못된 경보를 방지합니다. 권한 요청에 이름이 지정된 소유자와 만료되지 않은 기한이 있는 경우 이후 도구 결과가 없을 것으로 예상됩니다. 마감일 이후 또는 소유자가 없는 경우 동일한 증거가 적용 범위 또는 진행 문제가 됩니다. 시간과 소유권이 진단을 바꿉니다. 이벤트 카운트만으로는 불가능합니다. false complete 분기는 반대의 실수를 방지합니다. Claude Code의 공식 참조에서는 Stop 를 응답의 끝으로 정의합니다. 저장소는 해당 수명주기 사실을 충실하게 표시할 수 있습니다. 두 시스템 모두 목적지가 변경되었다고 주장하지 않습니다. 파일 작업에는 예상 경로와 내용 확인이 필요합니다. 코드 작업에는 관련 테스트가 필요합니다. 원격 작업에는 대상 영수증이 필요합니다. 모니터링 시스템이 자체적으로 인증할 수 없도록 이러한 검사를 후크 전송 외부에 보관하세요. 프라이버시 트레이드오프도 있습니다. 저장소는 선택적 채팅 캡처를 지원하고 프롬프트 관련 데이터를 표시합니다. Delivery Health에는 둘 중 하나가 필요하지 않습니다. 카나리아는 source app , session id , hook event type , 타임스탬프 및 반환된 이벤트 ID와 같은 불투명 식별자만 사용할 수 있습니다. 관찰 가능성을 확장하기 전에 봉투를 최소화하십시오. 작은 카나리아를 운영한 후 실제 결과를 확인하세요. 다섯 가지 제한된 단계로 감사를 채택하십시오. 1. 버전 및 범위를 고정합니다. 저장소 커밋, Claude Code 버전, 소스 앱 식별자, 결정에 필요한 정확한 수명 주기 이벤트를 기록합니다. 버전이 변경되면 공식 후크 참조를 검토하세요. 2. 고유한 카나리아 하나를 보냅니다. 일회용 세션 식별자와 무해한 PreToolUse 페이로드를 사용합니다. HTTP 200이 필요하고 반환된 저장된 이벤트 ID를 구문 분석합니다. 후크 종료 코드만 사용하지 마십시오. 3. 저장 및 프리젠테이션을 증명하세요. 즉시 /events/recent 에 쿼리하여 정확한 ID를 찾으세요. Vue 클라이언트 또는 테스트 WebSocket를 /stream 에 다시 연결하고 초기 재생 또는 라이브 메시지에서 동일한 이벤트를 요구합니다. 재생 창 내부에 확인을 유지하십시오. 고정된 서버는 WebSocket가 열릴 때 300개의 최근 행을 보냅니다. 4. 적용 범위와 최신성을 확인하세요. 알려진 수명 주기 시퀀스를 실행하고, 관찰된 이벤트 유형을 고정된 매니페스트와 비교하고, 이벤트별 기한을 적용하세요. 경로 소유 권한은 대기 중으로 대기합니다. 오래된 증거를 녹색으로 유지하는 대신 오래된 증거를 만료시키세요. 5. 사용자의 결과를 별도로 확인합니다. 예상되는 파일, 테스트 결과, 작업 상태 또는 외부 효과를 주장합니다. 해당 수신 없이 수명 주기가 종료되면 모니터는 false complete 를 보고해야 합니다. 이 프로세스에는 한계가 있습니다. 고정된 저장소를 통해 구성된 전달을 테스트합니다. 모든 페이로드에 대해 의미론적 정확성을 설정하지는 않습니다. 사용 가능한 모든 후크를 추가하면 대기 시간, 저장 공간 및 민감한 데이터 노출이 늘어날 수 있습니다. 최소한의 버전이 있는 매니페스트는 일반적으로 무분별한 수집보다 안전합니다. 9가지 사례 고정 장치는 생산 실패의 확산이 아니라 결정 규칙을 보여줍니다. Sidewisp는 다른 Claude Code 런타임이나 저장소 대체가 아닌 상태 계층으로 이 경계에 적합합니다. Sidewisp는 현재 비공개 프리뷰 단계입니다. 공개 사이트와 대화형 데모는 라이브이지만 프로덕션 Claude Code 모니터링 어댑터, 라이브 상태 수집기 및 자동 복구 실행기는 배송되지 않습니다. 복구는 계획된 승인 기반 기능으로 남아 있습니다. 현재 정직한 다음 단계는 이 영수증 모델이 상담사 운영 방식과 일치하는 경우 비공개 미리보기 대기자 명단에 등록하는 것입니다. 이 저장소의 경우 규칙을 간결하게 유지하십시오. 대시보드 이벤트는 관찰된 활동의 증거입니다. 필수 이벤트 매니페스트가 최신이고 카나리아에 전송, 지속성 및 프레젠테이션 수신이 있고 모든 대기에 소유자와 기한이 있고 의도한 결과가 자체 결정론적 검사를 통과한 경우에만 실행을 정상으로 선언하십시오.