FROM THE WORKSHOP / 이슈
Mac mini agent-inbox watcher — wsl/ 무시 + tmux 부재로 inject 양방향 죽음
Mac mini agent-inbox watcher — wsl/ 무시 + tmux 부재로 inject 양방향 죽음
- 발생 일자: 2026-05-07 ~ 2026-05-10 (5/7 첫 stuck JSON, 5/10 17:30 KST 진단)
- 해결 일자: 2026-05-10 18:08 KST
- 심각도: medium
- 재발 가능성: medium (새로운 inbox bucket 추가나 stdio 모드 환경 추가 시)
- 영향 범위: mini 의 process-agent-inbox.sh / 6방향 mesh 통신 중 mini 양방향(🍎↔🏭, 🪟↔🏭)
증상
강대종이 “루프런 돌렸는데 맥미니랑 잘 소통 안 되더라” 보고. 6방향 점검 결과 mini 의 ~/agent-inbox/wsl/ 에 5/7~5/9 분 wsl→mini 메시지 7건이 stuck (자기소개/ping/debug 류). mini watcher 가 launchd 등록·30s 폴링·stderr 비어있는데도 wsl 발 메시지를 한 번도 처리하지 않음. macbook/ 발 메시지도 watcher 가 처리는 하나 inject 단계에서 “tmux session ‘claude’ not found” 로그만 쌓임.
원인
mini ~/.claude/automations/scripts/process-agent-inbox.sh 의 두 가지 결함:
INBOX_DIR="$HOME/agent-inbox/macbook"단일 변수 — 87줄 for-loop 가 macbook/ 만 순회하고 wsl/ 는 본 적 없음. wsl/ 디렉터리는inbox-write.sh --from wsl --to macmini --remote가 적재만 하고 가져갈 사람 없는 사일런트 dropbox.- mini 에 tmux ‘claude’ 세션 부재 — Codex 가
codex app-server --listen stdio://로 도는 환경. watcher 의 inject 경로는tmux send-keys -t claude인데 그 세션이 존재하지 않으니 메시지가 들어왔어도 inject 무의미. fallback 도 로그 한 줄 외엔 없음.
부수: TELEGRAM_BOT_TOKEN_MACMINI 토큰은 ~/.claude/channels/telegram/.env 에 정상 박혀있어서 봇 sendMessage 채널은 처음부터 살아있었음 (codex-directive.sh 가 이 패턴). watcher 만 그 채널을 안 쓰고 tmux 에 의존.
조치
mesh-vote(🍎🪟🏭 3기기 병렬 브레인스토밍 + 상호 투표) 결정: B(b1)→A→C 순.
패치 (한 파일)
mini ~/.claude/automations/scripts/process-agent-inbox.sh (89줄 → 89줄, +*.bak-1778403974 백업):
- A:
INBOX_DIR단일 →INBOX_DIRS=( "$HOME/agent-inbox/macbook" "$HOME/agent-inbox/wsl" )array 2개 순회. PROCESSED_DIR 은 루프 안에서 동적 set. - B(b1): 새 함수
send_codex_chat()추가 —TELEGRAM_BOT_TOKEN_MACMINI+TELEGRAM_CHAT_ID_MACMINI(없으면TELEGRAM_CHAT_IDfallback) 로 sendMessage. inject 부분(73~80줄 tmux send-keys 블록) 을if send_codex_chat "$msg"; then ... else ... fi로 교체. send_typing 함수는 그대로 유지.
사전 정리 (Codex spam 방지)
mini ~/agent-inbox/wsl/*.json 7건을 ~/agent-inbox/wsl/.processed/ 로 mv 후 패치 적용. 5/7~5/9 의 과거 메시지가 한꺼번에 Codex 챗에 spam 되는 거 방지.
Dry test 통과
- 새 JSON 1건을 mini wsl/ 에 적재 →
bash process-agent-inbox.sh직접 실행 → wsl/ 잔여 0 + .processed/meshvote1 도달 + 로그2026-05-10T18:06:41+0900 sent to Codex via telegram bot. - 역방향 운반체: mini
mac-report.sh→ 본진 tmux ‘claude’ 그룹에 paste 도달 (267 bytes), minicodex-to-wsl.sh→ mini→mac→wsl 2-hop relay 도달.
결과
6/6 mesh 채널 모두 회복. 패치 후 macbook ↔ mini 와 wsl ↔ mini 양쪽 inbox 라우팅이 같은 watcher 한 사이클로 처리됨.
예방 (Forcing function 우선)
- 새 inbox bucket 추가 시 INBOX_DIRS array 에도 반드시 추가 —
inbox-write.sh가 새--from <X>값을 받기 시작하면 mini 의~/agent-inbox/<X>/가 생성되는데 watcher 가 자동으로 순회 안 함. 패치한 파일 줄 7 의 array 만 보면 됨. - stdio 모드 / tmux 부재 환경에선
tmux send-keysinject 패턴 절대 금지 — Codex(stdio), 추후 Hermes/Jarvis 류 stdio 챗봇 추가 시 같은 함정. 항상 Telegram 봇 sendMessage 채널로 우회. - inbox bucket 별 처리 카운트 모니터링 — watcher 로그에 “$inbox processed=N” 한 줄 누적시키고, 24h 동안 wsl/ 처리 0건이면 텔레그램 경고 (구현 미완, 차후).
재발 이력
(처음 생성)
관련 링크
- 이전 유사 이슈:
2026-05-08-codex-inject-websocket-silent-fail.md(다른 운반체 codex-directive.sh 의 silent ok 문제),2026-05-09-wsl-agent-msg-notify-bot-blocked.md(WSL→Mac 봇차단) - 노하우:
knowhow/mini-agent-inbox-bot-bridge.md(이번 패치 패턴 정리) - mesh-vote 세션:
~/tmp/mesh-vote/1778403512/(3기기 안 + 투표 + 결과) - mini 백업:
~/.claude/automations/scripts/process-agent-inbox.sh.bak-1778403974