# πŸ“‹ 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) μ΅œμ ν™” κ³ μ•ˆμ „μ„± 버전. * **μ˜μ‘΄μ„±**: `herdr` CLI 및 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` λ‚΄μ˜ λͺ¨λ“  `tmux` API ν˜ΈμΆœμ„ `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`) λŒ€μ‹ , `herdr` APIλ₯Ό κ²½μœ ν•œ λ‹€μ΄λ ‰νŠΈ ν”„λ‘¬ν”„νŠΈ μ£Όμž… λ°©μ‹μœΌλ‘œ λ‹¨μˆœν™”. ### πŸ“ 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` 규격으둜 μ „ν™˜. ### πŸ“ 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`ν•˜μ—¬ 정책적 μΌμΉ˜μ„±μ„ μœ μ§€ν•©λ‹ˆλ‹€.