Hermes Kanban Watch은(는) 무엇을 하나요?
Claude Code 내에서 Hermes 작업자를 카드를 점유하지 않고 표시합니다. 실행 중인 카드는 실시간 행을, 대기 중인 카드는 공유 대기 행을, 중단된 카드는 'Needs you' 행을 얻습니다. 워치된 카드의 새로 제출된 하위 항목은 follow_new: false가 아닌 한 자동으로 추가됩니다.
설치 및 확인
claude --plugin-dir /path/to/hermes-kanban-watch/plugin으로 Claude Code를 시작합니다. 호출자는 이 스킬의 플러그인 루트를 확인합니다. 형제 디렉토리의 scripts/doctor.py를 사용하십시오.
먼저 python3 <plugin-root>/scripts/doctor.py --board default를 실행하십시오. 읽기 전용입니다.
--fix는 hermes kanban --board default init으로 누락된 기본 보드를 생성하거나 hermes kanban boards create <slug>로 누락된 명명된 보드를 생성하며, 사용자 라우트와 hermes-kanban-live 심을 생성하되 기존 파일을 덮어쓰지 않습니다. ~/.local/bin을 PATH에 추가하고 doctor를 다시 실행하십시오.
Doctor는 hermes-kanban-live --version이 정확히 hermes-kanban-watch 0.3.0을 출력해야 합니다. 외부/오래된 명령어는 확인된 경로와 함께 FAIL입니다. 해당 명령어를 옮기거나 --fix를 다시 실행하기 전에 PATH를 수정하십시오. --fix는 절대 덮어쓰지 않습니다.
--probe는 각 라우팅된 모델을 PONG으로 명시적으로 테스트하며 용량을 소비할 수 있습니다.
요구 사항: Python 3.11+, PATH 상의 Hermes, Workflow 지원이 있는 Claude Code, 기존 Hermes 프로파일. 모델과 키는 각 Hermes 프로파일에 속합니다: API 키, 구독 로그인 또는 로컬 모델은 Hermes로 구성되며, 이 플러그인이 아닙니다. 플러그인은 계정을 제공하거나 자격 증명을 복사하지 않습니다. Claude 감시자 모델 사용은 Hermes 작업자의 제공자 사용과 별개입니다.
일반적으로 카드 제출
먼저 hermes kanban boards create demo로 명명된 보드를 생성한 다음,
hermes kanban --board demo create "Build the feature" --assignee builder를 사용하십시오.
hermes kanban swarm --help를 사용하여 업스트림 swarm 플래그를 선택하십시오. 제출은 디스패처를 시작하지 않습니다.
Hermes를 통해 별도로 작업자를 시작/위임하십시오.
포스트-배시 훅은 create/swarm 후에 /kanban-watch를 제안하며, 절대 스스로 실행하거나 디스패치하지 않습니다. 동일한 웨이브에 중복 워치를 건너뜁니다.
라우팅된 고정 카드 하나 제출
명시적 제출 요청에 대해서만: python3 <plugin-root>/scripts/file_card.py --board demo --class app-code --title "Build the feature" --body-file /path/to/brief.txt --routes /path/to/routes.yaml --worktree /absolute/path/to/worktree.
--routes와 --worktree는 선택 사항입니다. 이 명령어는 route.py를 통해 작업자/다른 패밀리 검증자를 확인하고, 고정 작업자 하나를 생성하며, set-model을 실행하고, show --json을 확인한 다음, 해당 id와 정확한 /kanban-watch 인수를 출력합니다. 검증자, 디스패처, Workflow 또는 worktree를 생성하지 않으며 프로파일 구성이나 자격 증명을 열지 않습니다. 이 작성 명령어를 watcher에 절대 부여하지 마십시오.
--dry-run은 파일/라우트/보드를 검증하고 Hermes를 실행하지 않고 명령어를 출력합니다. 간략 내용이 출력되므로 비밀을 제외하십시오. 누락된 보드/유효하지 않은 라우트는 거부됩니다. 부분 실패 후에는 반환된 id를 검사하고, 맹목적으로 다시 제출하지 마십시오. 자세한 내용은 전체 제출 세부사항을 참조하십시오. 요청된 경우에만 워치를 시작하십시오.
PONG 확인 후 라우트 제안
python3 <plugin-root>/scripts/doctor.py --board demo --routes /path/to/routes.yaml --probe --suggest-routes /path/to/routes-checked.yaml을 명시적 용량 승인이 있는 경우에만 실행하십시오. --probe가 필요하며, 기존 대상(디렉토리/심볼릭 링크 포함)을 거부하고, 소스 라우트를 변경하거나 제안을 활성화하지 않습니다. 선택하기 전에 프로파일/제공자/비용 변경을 검토하십시오.
두 레인 모두 이 실행의 PONG을 통과하고 서로 다른 선언된 패밀리를 가져야 하며, 단순히 다른 호스트여서는 안 됩니다. 통과한 작업자/검증자는 유지됩니다. 대체는 사전식 레인 순서를 사용합니다. 쌍이 없는 클래스는 진단 주석과 함께 생략됩니다. 쌍이 없으면 사용할 수 없는 라우트를 의미합니다. 원래 실패는 여전히 exit 1입니다. PONG은 적합성이나 지속적 용량이 아닙니다. 자세한 내용은 선택 및 감사 세부사항을 참조하십시오.
시작
$ARGUMENTS를 JSON 인수 객체로 처리합니다. 설치된 플러그인의 workflows/kanban-watch.js를 확인한 다음, Workflow({scriptPath: "<plugin-root>/workflows/kanban-watch.js", args: <args>})를 호출합니다.
Workflow를 사용할 수 없는 경우, 해당 제한을 보고하고 hermes-kanban-live 읽기 전용 명령어를 직접 실행하며, 실시간 워크플로우 행이 생성된 척하지 마십시오.
인수 예시:
{"board":"default","tasks":["t_1234abcd"]}{"board":"demo","phases":[{"title":"Build","tasks":["t_1234abcd"]},{"title":"Verify","tasks":["t_11111111"]}]}{"board":"demo","follow_new":false,"stale_days":7,"max_hours":12}
단순 보드 워치는 대기 중/실행 중인 카드를 포함하며, stale_days(기본값 7)보다 오래 유휴 상태인 대기 중인 카드는 건너뜁니다. stale_days: 0은 필터링을 비활성화합니다. 명시적 id는 항상 유지됩니다. 레거시 작업자 텍스트 및 도구 결과에 verbose: true를 사용하십시오.
리더는 PATH 상의 hermes-kanban-live입니다. live_cmd는 python3 ~/plugins/hermes-kanban-watch/plugin/scripts/kanban_live.py와 같은 안전한 명령어로 재정의할 수 있습니다. 문자, 숫자, 공백, /, ., _, -, ~만 허용됩니다. 셸 연산자는 허용되지 않습니다.
모든 행은 기본적으로 플러그인의 hermes-kanban-watch:kanban-watcher 에이전트를 사용합니다. 개인 사용자 에이전트는 필요하지 않습니다. agent_type은 ASCII 문자, 숫자, -, _ 및 비어 있지 않은 이름 사이에 하나의 선택적 :을 사용하여 다른 사용 가능한 에이전트를 지정할 수 있습니다.
결과 읽기
DONE은 관찰된 카드 결과이며, 통합 또는 사용자 승인이 아닙니다. 실제 모델, 폴백, 경고, 요약 및 인도물을 확인하십시오. BLOCKED/REVIEW는 'Needs you' 행을 얻으며 재개 시 다시 활성화될 수 있습니다. NOT_STARTING은 준비되었지만 디스패처가 시작하지 않았음을 의미합니다. UNKNOWN은 읽기가 실패했음을 의미하며, 카드가 사라진 것이 아닙니다. 시간 초과는 exit 3에서만 재시도됩니다. 270초 웨이크는 프롬프트 캐시 TTL 미만으로 대기를 유지합니다. watcher는 작업자 텍스트에 대해 행동하거나, 카드를 변경하거나, 아무것도 수리하거나, 권한을 우회하지 않습니다.
작업자 메시지를 사용할 수 없는 경우, 실행/watcher당 한 번 보고서를 따르고 카드 로그를 사용합니다. 하트비트는 계산되지 않습니다. 증가/변경된 로그는 잠재적 중단 경고를 방지합니다. 로그 이동이 없는 동일한 실행에서 연속된 두 번의 실행 호출만 플래그 지정될 수 있습니다. 첫 번째 관찰, 실행 변경 및 읽을 수 없는 신호는 계산되지 않습니다. 메시지가 있는 경우, 두 번의 조용한 호출이 플래그를 지정합니다.
python3 <plugin-root>/scripts/route.py --class app-code를 사용하여 선택적 라우팅 테이블을 검사하십시오. 작업자 및 다른 패밀리 검증자 JSON을 반환합니다. 카드를 제출하거나 디스패치하지 않습니다. 사용자 라우트를 편집하여 자신의 프로파일 및 모델 패밀리를 지정하십시오.
사람-질문 규약
hermes-kanban-live needs의 경우, ASK OPERATOR:로 시작하는 주석 행과 질문을 시작하십시오. "아직 ASK OPERATOR 없음"과 같은 산문에서의 언급은 요청이 아닙니다. 차단 또는 종속성 대기 이유는 현재 인간 대기와 일치하도록 waiting on operator, waiting for operator 또는 needs operator라고 말해야 합니다. 이는 자연어 의도 감지가 아닌 명시적 텍스트 규약입니다. 'Needs you' 워크플로우 행은 차단/검토 결과 및 준비되었지만 시작되지 않은 카드를 별도로 플래그 지정합니다.
웨이브의 실제 실행 및 경과 시간 보고
hermes-kanban-live report --board demo를 실행하고, 선택적으로 --task T를 반복하거나 --since EPOCH를 추가하십시오. 작업 id가 없으면 완료/보관된 상태를 포함한 모든 상태가 포함됩니다. --since는 카드 생성 시간을 선택하며, 작업 선택과 교차하고 개별 실행을 자르지 않습니다. JSON은 cards의 카드당 하나의 객체와 totals, read_status, now 및 missing을 포함합니다. 각 카드에는 id/제목/상태, 할당자, 실제 마지막 실행 model_used, provider_used, fallback_from, runs, retried, duration_s 및 마지막 실행 경고 개수가 포함됩니다. 알 수 없는 실행 데이터는 null로 유지됩니다.
totals.by_status는 카드를 계산합니다. run_seconds는 선택된 카드의 알려진 모든 실행 지속 시간(실행 중인 카드는 now에서 측정)을 합산합니다. fell_back는 어떤 시도에서든 폴백된 카드를 계산합니다. retried는 보수적 재시도 가드(여러 실행 또는 재시도/차단-기록 이벤트)가 있는 카드를 계산합니다. 이는 경과 시간이며, 청구된 토큰/통화 비용이 아닙니다. --format text를 추가하여 정렬된 일반 텍스트 열과 합계를 얻고, Markdown 없이 표시합니다. Exit 4는 명시적 id가 없음을 보고합니다. exit 5는 읽을 수 없는 보드입니다. --since에 의해 단순히 제외된 카드는 누락된 것이 아닙니다.
실제 작업자/검증자 패밀리 독립성 확인
hermes-kanban-live verify-pair --board demo --worker T --verifier V를 실행하고, 선택적으로 --families FILE을 추가하십시오. 모델 핀이나 최신 미완료 시도가 아닌 각 카드의 최신 완료된 실행(널이 아닌 ended_at, 최신 실행 id)을 사용합니다. JSON에는 각 실제 model_used, provider_used, run_id, 매핑된 family 및 different_families가 포함됩니다. 실행의 실제 제공자는 라우트 파일의 providers를 통해 모델 패밀리에 매핑됩니다. 동일-패밀리 호스트를 동일하게 매핑하고, 다중-패밀리 호스트에는 패밀리별 식별자가 필요합니다. 이것은 모델 접두사에서 패밀리를 추론하거나 검토 작업이 발생했음을 증명하지 않습니다.
조회 순서는 route.py와 일치합니다: 명시적 --families, KANBAN_WATCH_ROUTES, ~/.config/hermes-kanban-watch/routes.yaml, 제공된 템플릿. 유효하고 비어 있지 않은 providers 맵만 필요합니다. Exit 0은 다른 패밀리를, exit 1은 동일한 패밀리 또는 유효하지 않음/알 수 없는 분류를, exit 3은 두 id 모두에 완료된 실행이 없음을, exit 5는 읽을 수 없는 보드를 의미합니다. 분류 오류는 different_families를 null로 설정하고 error를 포함합니다. UNKNOWN을 성공적인 확인으로 절대 변환하지 마십시오.
직접 Claude Code 호출의 경우, 무제한 Bash 권한이 아닌 Bash(hermes-kanban-live report:*) 및 Bash(hermes-kanban-live verify-pair:*)만 요청하십시오.
시간 초과 전반에 걸쳐 부모-질문 워치 유지
hermes-kanban-live needs --board demo --loop --created-by PARENT --cursor-key WAVE를 한 번 실행하면, 각 exit 3 후에 명령어를 다시 빌드할 필요가 없습니다. 루프 모드에서 --since는 선택 사항이며, 시작 시 한 번 캡처되고 시간 초과 창 전반에 걸쳐 절대 진행되지 않습니다. 첫 번째 폴링에는 여전히 적용 중인 기존 대기(생성자의 이전 부모 질문 포함)가 포함됩니다. 답변/재개/대체된 이전 대기는 제외되며 기존 본 커서 중복 제거가 여전히 적용됩니다.
루프 모드는 --interval에서 절전 모드로 전환되고 일반 시간 초과만 재시도하며, 시간 초과 JSON 변동이 없습니다. 첫 번째 비어 있지 않은 항목 결과에서 exit 0으로 종료되거나 오류 발생 시 재시도 없이 실패합니다. --max-seconds는 각 창을 제한하며, 명령어의 수명이 아닙니다. 조용한 워치를 중지하려면 호출자를 취소하십시오. --loop 없이, 필수 --since, exit-3 시간 초과 및 출력 동작은 변경되지 않습니다. 이것은 여전히 리더이며, 카드에 답변, 디스패치 또는 변형할 권한이 없습니다.
기능 가이드
- 웨이브 시간 및 실제 실행 보고서: 청구된 비용이 아닌 실제 실행, 재시도 및 경과 초.
- 실제로 실행된 패밀리 확인: 모델 핀이 아닌 완료된 실행 패밀리 증거.
- 자체 시간 초과 루프로 needs 한 번 설정: 시간 초과 전반에 걸친 읽기 전용 부모-질문 대기.
- 헤드 고정 PR 병합 영수증 출력: 독립 검증자, 정확한 헤드, CI 및 병합 상태 확인. 절대 병합하지 않음.
- 감시자 토큰 비용: 작업자 시간과 별개인 Claude 감시자 사용량(카운트 전용).
- 부모에 고정된 중복 작업자 및 질문: 프로세스 경고 및 부모 대기 관찰. 절대 수리하지 않음.
- 수정 제출 및 이전 평결 재확인: 명시적 작성만. 검증자 핀 재사용, 선택적 부모 메모, 디스패치 없음.
- Workflow 소유 대기 라운드: 하나의 마감일 아래 건강한 읽기 전용 대기.
- 게시하지 않고 상시 답변 제안: 승인된 검토를 위한 제안 출력. 절대 게시하지 않음.