virtual-insanity
← 리포트 목록

collab-review-loop LaunchAgent Hermes 이관 실행

2026-04-24 collab [openclaw, hermes, launchagent, migration, collab]

결론

collab-review-loopHermes plist 생성 + 스크립트 1회 실행 검증까지 완료했다. 하지만 현재 Codex 세션에서 launchctl bootstrap / bootout이 권한/도메인 제약으로 실패해, 실제 launchd cutover는 완료하지 못했다.

운영 중단을 막기 위해 기존 com.openclaw.collab-review-loop.plist는 복구/유지했다. 현재 기존 label이 pid 1228로 계속 running이다.

수행 내역

  • 기존 plist 확인: ~/Library/LaunchAgents/com.openclaw.collab-review-loop.plist
  • 신규 plist 생성: ~/Library/LaunchAgents/com.hermes.collab-review-loop.plist
  • 백업: /Users/ron/Library/LaunchAgents/.collab-review-loop-migration-backup-20260424144350
  • 실행 스크립트: ~/.hermes/workspace/scripts/collab_review_loop.py
  • plutil -lint 통과
  • python3 -m py_compile 통과
  • 직접 1회 실행 검증 통과

신규 Hermes plist 핵심:

Label: com.hermes.collab-review-loop
ProgramArguments: /usr/bin/python3 -u /Users/ron/.hermes/workspace/scripts/collab_review_loop.py
WorkingDirectory: /Users/ron/.hermes/workspace/scripts
Stdout: /Users/ron/.hermes/logs/collab-review-loop.log
Stderr: /Users/ron/.hermes/logs/collab-review-loop.err
KeepAlive: true

1회 실행 검증

/usr/bin/python3 -u /Users/ron/.hermes/workspace/scripts/collab_review_loop.py --once

결과:

rc=0
{"review_created": 0, "review_delivered": 0, "fix_created": 0, "clarify_created": 0, "escalated": 0, "retried": 0}
2026-04-24 14:44:25 [collab-review-loop] INFO 협업 리뷰 루프 시작

실패한 cutover 단계

launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.hermes.collab-review-loop.plist

결과:

Bootstrap failed: 5: Input/output error
Try re-running the command as root for richer errors.

launchctl bootout gui/$(id -u)/com.openclaw.collab-review-loop도 다음과 같이 실패했다.

Boot-out failed: 1: Operation not permitted

최종 상태

항목 상태
com.openclaw.collab-review-loop running, pid 1228, 유지
com.openclaw.collab-review-loop.plist 존재, lint OK
com.hermes.collab-review-loop.plist 생성 완료, lint OK, launchd 미로드
OpenClaw .disabled 처리 보류/복구됨. Hermes bootstrap 실패 때문에 비활성화하지 않음

권한 있는 로컬 쉘에서 남은 cutover 명령

UIDN=$(id -u)
launchctl bootstrap gui/$UIDN ~/Library/LaunchAgents/com.hermes.collab-review-loop.plist
launchctl kickstart -k gui/$UIDN/com.hermes.collab-review-loop
launchctl print gui/$UIDN/com.hermes.collab-review-loop

# 새 label running 확인 후에만 기존 label 종료
launchctl bootout gui/$UIDN/com.openclaw.collab-review-loop
mv ~/Library/LaunchAgents/com.openclaw.collab-review-loop.plist    ~/Library/LaunchAgents/com.openclaw.collab-review-loop.plist.disabled

자체평가

  • 정확성: 4.0/5 — 가능한 검증과 plist 준비는 완료. launchctl cutover는 권한 제약으로 미완.
  • 완성도: 3.7/5 — 실제 Hermes active 전환은 못 했지만, 운영 중단 없이 staged 상태를 만들었다.
  • 검증: 4.3/5 — lint, compile, direct --once, launchd 상태 확인 완료.
  • 최소 변경: 4.8/5 — 신규 Hermes plist 외에는 기존 운영 상태 유지.

Remaining Risks: - com.hermes.collab-review-loop.plist는 아직 launchd에 로드되지 않았다. - 권한 있는 쉘에서 cutover할 때 새 label running 확인 전 기존 label을 끄면 안 된다.

DONE-BLOCKED