2026.05.08 작업일지 v1.0.1
3-way 프로토콜 버그 4개 수정 + 에이전트 합의 루프(loop-judge + loop-run) 완성
오늘의 궤적
오전 내내 MacBook/WSL/Mac mini 3기기 간 Telegram 메시지 프로토콜의 숨겨진 버그들을 하나씩 발굴하고 수정했다. 인프라 삽질처럼 느껴졌지만, 오후엔 그 위에 에이전트 합의 검증(loop-judge)과 작업 루프(loop-run)를 쌓아 에이전틱 엔지니어링 스택을 완성했다. “그제 어제 삽질만 하고 있네”라는 말로 시작했지만 막판에 의미 있는 구조가 나왔다.
3-way 메시지 프로토콜 (agent-msg-notify.sh)
버그 4개 발견 + 수정
버그 1 — 포맷 위반: MSG에 (HH:MM KST) 타임스탬프 삽입. 엄격 포맷 깨짐.
- 수정:
MSG="[${FROM}→${TO}] [${TYPE}] ${SUMMARY}"타임스탬프 제거
버그 2 — 중복 전송: 동시 호출 시 뮤텍스 없어 동일 메시지 n회 전송.
- 수정:
/tmp/agent-msg-lock/<hash>.lock— 3초 내 동일 호출 차단
버그 3 — 상태머신 미완성: 전송 실패해도 COMPLETED 기록.
- 수정:
curl성공 이후에만 COMPLETED. 실패 시 FAILED 기록, exit 1
버그 4 (핵심) — Protocol identity ≠ Transport routing:
- 기존:
TOKEN선택을 “현재 기기 == TO 기기?” 휴리스틱으로 처리 → 실행 기기마다 다른 bot으로 전송 - 수정: Layer 1(프로토콜 헤더) / Layer 2(Telegram 전송 목적지) 완전 분리
로컬/피어 휴리스틱 완전 제거. TO 이름만 보고 결정.case "$TO_NORM" in macbook) SEND_TOKEN="${TELEGRAM_BOT_TOKEN_MACBOOK:-}" ;; wsl) SEND_TOKEN="${TELEGRAM_BOT_TOKEN_WSL:-}" ;; macmini) SEND_TOKEN="${TELEGRAM_BOT_TOKEN_MACMINI:-}" ;; esac
5단계 순차 검증 (전부 PASS)
- 타입 검증:
debug/retry→ exit 1 - 포맷 검증: KST 없음,
[🍎→🪟] [명령] 내용정규식 통과 - Dedup: 3초 내 재호출 → “(dedup: identical message within 3s, skipping)”
- 상태머신: 명령 후 WAITING_RESULT 파일 생성, 결과 후 삭제(COMPLETED)
- 3-way 포맷: macbook↔wsl↔macmini 6방향 전부 PASS
Mac mini 동기화
Mac mini git pull 경로 불안정 → scp 직접 동기화. 양 기기 동일 버전 확인.
노하우 저장
daejong-page/knowhow/2026-05-08-3way-agent-msg-protocol.md — 버그 4개 패턴 + Layer 1/2 분리 원칙 + 3기기 동기화 체계 기록.
Mac mini Codex 타이핑 인디케이터
증상: Codex가 백그라운드 작업 중 “입력중…” 표시 안 됨.
원인: OpenClaw agents.defaults.typingMode 미설정.
수정:
openclaw.json에"typingMode": "instant"추가openclaw daemon restart→ Telegram 채널 reconnected
에이전트 합의 루프 설계 + 구현
loop-judge.sh
목적: MacBook Claude + Mac mini Codex 2-agent 합의 검증
흐름:
- MacBook:
claude --print로 성공 기준 대비 출력 자체 평가 - Codex에게 directive → SSH로 MacBook에 결과 파일 기록
- 합의 판정: SUCCESS / FAIL / DIVERGE / TIMEOUT
실전 테스트: sw_vers 실행 → MacBook SUCCESS + Codex SUCCESS → 합의 SUCCESS
스킬 등록: 트리거 “합의 검증해줘”, “두 에이전트 확인” 등
loop-run.sh
목적: PLAN → EXECUTE → JUDGE → REPORT 전체 작업 루프
흐름:
목표 입력
→ Claude가 JSON task 배열로 분해 (PLAN)
→ 기기별 실행: macbook(로컬)/wsl(directive+SSH)/macmini(Codex+SSH)
→ loop-judge 합의 검증, 최대 2회 재시도
→ 전체 완료: 텔레그램 보고
스킬 등록: 트리거 “루프 돌려줘”, “/loop-run” 등
3way 테스트
- Mac mini → MacBook 명령 테스트 (Mac report 수신 + 결과 회신) ✅
- MacBook → Mac mini 명령 테스트 (directive + 결과 대기) ✅
- loop-judge 실전: sw_vers 평가 합의 SUCCESS ✅
학습·상담
- 에이전트 진화 3단계: Tool 명확화 → 자기검증 루프 → 에이전트 분업. 지금 셋업이 3단계 시작점.
- 바이브코딩 vs 에이전트: 바이브코딩은 사람이 방향, LLM이 코드. 에이전트는 LLM이 목표 분해·실행·검증 루프 자율 운영.
- 자연어 트리거: SKILL.md 트리거 패턴 → Claude가 자동 매칭해 스킬 호출.
관련 커밋
| repo | SHA | 메시지 |
|---|---|---|
| daejong-page | 859b731 | knowhow: 3-way 에이전트 메시지 프로토콜 버그 패턴 4개 기록 |
| claude-automations | 94ba8a8 | feat(loop-run): PLAN→EXECUTE→JUDGE→REPORT v1 |
| claude-automations | 80c527c | feat(loop-judge): agent consensus loop v1 |
| claude-automations | a59b92b | fix: Layer 1/2 분리 |
| claude-automations | 9a23f64 | fix: 포맷 위반 + dedup + 타입 검증 |
| claude-skills | 2e6a063 | feat(loop-run): 에이전트 루프 스킬 |
| claude-skills | 492b6c8 | feat(loop-judge): 합의 검증 스킬 |
남은 작업
- loop-run 실전 테스트 (macmini/wsl task 포함)
- 단어요 1.0.1 ASC 재제출 (China 배포 제외)
- 로또 계산기 scaffold