5.6 KiB
5.6 KiB
📋 PLAN_HERDR.md: herdr 기반 멀티플렉서 백엔드 전환 작업 계획서
이 문서는 기존 tmux 기반의 에이전트 라이프사이클 관리를 Rust 기반의 에이전트 인지형 멀티플렉서인 herdr로 전면 전환하기 위한 도입 배경, 아키텍처 전략 및 상세 작업 단계들을 정의합니다.
1. 🔍 도입 배경 및 필요성
현재 운영 중인 tmux 기반 백엔드는 훌륭한 호환성을 제공하지만, 다음과 같은 구조적 한계와 간헐적인 프롬프트 유실 오류(Prompt-lock)를 동반합니다.
🔴 기존 tmux 환경의 한계
- 대략적인 정적 상태 감지 (Coarse Quiescence): 입력을 주입하기 전에 터미널이 키를 수락할 수 있는 휴지 상태인지 확인하기 위해, 셸 스크립트 상에서
capture-pane을 0.1~0.5초 주기로 돌려 화면 변경 여부를 체크합니다. 이로 인해 CPU 자원이 급증하는 멀티 에이전트 구동 상황에서 입력을 유실하거나Enter키가 씹히는 현상이 발생합니다. - TUI 모달 상태 기계 파싱의 비효율: 에이전트가 띄운 다이얼로그(예: 인증, 신뢰 확인)를 인식하기 위해 터미널 하단 20줄의 문자열을 정규식으로 직접 파싱하므로, 에이전트 버전업에 따른 TUI 레이아웃 변경에 매우 취약합니다.
🟢 herdr 도입 시 기대 효과
- PTY 레벨의 밀리초(ms) 단위 이벤트 제어:
herdr은 Rust 네이티브로 작성되어 PTY(가상 터미널) 입출력 스트림의 유휴 상태를 서브-밀리초 레벨로 감지합니다. 이로 인해 프롬프트 주입 실패 및 명령 유실 오류가 근본적으로 제로(0)에 가깝게 줄어듭니다. - 에이전트 상태 인지 API: 에이전트 프로세스의 상태(Working, Idle, Blocked, Done)를 멀티플렉서 레벨에서 해석해 소켓 API로 제공하므로, 지저분한 화면 파싱 코드 없이 정교한 자율 관제가 가능합니다.
2. 🔀 형상 관리 및 배포 전략
두 백엔드(tmux/herdr)를 단일 코드베이스에서 듀얼 스위칭(if/else) 방식으로 지원하면 코드가 과도하게 무거워지고 버그 가능성이 높아집니다. 따라서 독립된 브랜치 구조로 깨끗하게 이원화하여 제공합니다.
main브랜치 (tmux 기반):- 목표: 어디서나 즉시 실행 가능한 고호환성 프로덕션 버전.
- 의존성: 추가 설치가 필요 없는 표준
tmux환경.
herdr브랜치 (herdr 기반):- 목표: 대화식 락 오류가 완벽히 통제되는 워크스테이션(macOS/Linux) 최적화 고안전성 버전.
- 의존성:
herdrCLI 및 Unix 소켓 API 환경.
3. 🎯 상세 구현 마일스톤 및 작업 계획
📍 Milestone 1: 개발 환경 구성 및 의존성 진단
- 브랜치 격리:
git checkout -b herdr브랜치 생성 및 격리 개발 공간 확보. - 인스톨러 개정 (
deploy/install_mam.sh):- 호스트 의존성 체크 대상에
herdr추가 (tmux진단 제거). herdr이 미설치된 경우, 공식 설치 가이드라인(https://herdr.dev/install.sh) 안내 출력 및 조기 종료 처리..mam/격리 폴더 및 환경설정 배포 규칙을herdr스펙에 맞게 조정.
- 호스트 의존성 체크 대상에
📍 Milestone 2: 로우레벨 어댑터 전면 리팩토링 (lib.sh)
- 명령어 매핑:
lib.sh내의 모든tmuxAPI 호출을herdr명령으로 전면 개정._tmux new-session➡️herdr run -d --name "$SESSION_NAME" -- "$CMD_FULL"_tmux capture-pane➡️herdr capture --name "$SESSION_NAME"_tmux send-keys➡️herdr send-keys --name "$SESSION_NAME" "$KEYS"_tmux kill-session➡️herdr kill --name "$SESSION_NAME"
- 정적 상태 감지 함수 재작성 (
_pane_quiescent):herdr이 기본 제공하는 세션 상태 조회 API를 파싱하여 PTY 정적 상태 여부를 판별하도록 대폭 경량화 및 고도화.
- 인풋 주입 엔진 고도화 (
send_keys_safe):- 복잡한 버퍼 제어(
set-buffer/paste-buffer) 대신,herdrAPI를 경유한 다이렉트 프롬프트 주입 방식으로 단순화.
- 복잡한 버퍼 제어(
📍 Milestone 3: 에이전트 라이프사이클 관리 도구 이관
create_session.sh수정:herdr기동 방식 및 pane PID 수집 로직 교체..mam/agent-sessions.yaml메타데이터 규격을herdr사양(예:tmux_server➡️herdr_workspace)에 맞게 정렬.
resume_session.sh수정:- 죽은
herdr프로세스를 감지하고 저장된 대화 ID와 함께herdr run으로 복원하는 흐름 이식.
- 죽은
stop_session.sh수정:- 에이전트 세션의 깔끔한 graceful 종료 및 최종 TUI 캡처 흐름을
herdr규격으로 전환.
- 에이전트 세션의 깔끔한 graceful 종료 및 최종 TUI 캡처 흐름을
📍 Milestone 4: 검증 및 루프 완주
- 정적 분석:
bash -n및shellcheck신규 경고 0건 검증. - 오케스트레이션 루프 검증 (
run_loop.sh):run_loop.sh내부의delegate_job_safe실행을herdr세션 기반으로 연동하여 100% 자율 루프 구동 확인.- 피어 리뷰어(
cline,claude)들로부터 최종[VERDICT: PASS]서명 획득.
4. 📈 사후 관리 및 형상 병합 정책
herdr브랜치의 개발 및 검증이 완주되어PASS서명이 누적되면,deploy/INSTALL.md및README.md문서를 개정하여 각 브랜치별 설치 절차를 문서화합니다.main브랜치의 공통 규칙 버그 수정 사항(예:AGENTS.md수정 등)은 주기적으로herdr브랜치로git merge하여 정책적 일치성을 유지합니다.