π λ³λ ¬ μμ΄μ νΈλ₯Ό μ κ΄λ¦¬νλ €λ©΄ 격리νκ³ κΈ°λ‘νκ³ ν©μΉλ κ΅¬μ‘°κ° λ¨Όμ μ λλ€
Blog version of a 2026-04-13 LinkedIn note β same claims, cleaned structure for reading.
μμ΄μ νΈ μ¬λ¬ κ°λ₯Ό λμμ λ리λ κ² νμ μ’μ 건 μλλλ€. νΌμ μ§μ€ν΄μ ν μμ μ λλ΄λ κ² λ λΉ λ₯Έ κ²½μ°λ λ§μμ.
κ·Έλ°λ°λ λ³λ ¬ μμ΄μ νΈμ μκ°μ μ°λ μ΄μ κ° μμ΅λλ€. μμΌλ‘ κ°λ° μν¬νλ‘μ°κ° κ°λ λ°©ν₯μ μ μΌ κ°κΉλ€κ³ λκΌκ±°λ μ.
μμ§ λ§€λ² λ°°μ°λ μ€μ΄κ³ μ½μ§λ λ§μ΄ νμ΅λλ€. κ·Έ κ³Όμ μμ λ°λ³΅μ μΌλ‘ ν¨κ³Όκ° μμλ ꡬ쑰λ₯Ό λ κ°μ§ κ²½λ‘λ‘ λλ μ μ 리νμ΅λλ€.
1οΈβ£ Parallel Path. μ¬λμ΄ κ°μ νλ©° λ°©ν₯μ μ‘μμ£Όλ κ²½λ‘
μ΄ κ²½λ‘λ Plan β Spawn β Gate β Merge μμλ‘ μμ§μ λλ€. tmux μμμ interactive worker λ₯Ό λμ°κ³ μ¬λμ΄ μ€κ°μ λ°©ν₯μ μ‘μμ€ μ μλ ꡬ쑰μμ.
β’ Isolate. agent_workers.py μ μμ μ΄λ¦κ³Ό base λΈλμΉμ μμ΄μ νΈ CLI λ₯Ό μ§μ νλ©΄ worktree μμ±λΆν° μμ΄μ νΈ μ€νκΉμ§ νλ²μ λλ¨. one branch and worktree per bounded task κ° μμΉ β’ Steer. μμ΄μ νΈκ° λ§νλ©΄ tmux send-keys λ‘ νμ ν둬ννΈλ₯Ό 보λ. λ―Έμλ£ worker λ₯Ό λκΉμ§ λ°μ΄μ£Όλ κ² ν΅μ¬ β’ Control. λͺ¨λ worker λ changelog νλͺ©μ΄λ fragment λ₯Ό λ¨κ²¨μΌ ν¨. ν΅κ³Όν μμ λ§ starting branch λ‘ merge λκ³ μ€ν¨ν 건 blocker report κ° μμ±
ν λΈλμΉμμ μμ΄μ νΈ 2κ°λ₯Ό λλ¦° μ μ΄ μμ΅λλ€. 10λΆ λ§μ λ λ€ κ°μ μ»΄ν¬λνΈλ₯Ό μμ ν΄μ diff κ° κΌ¬μμ΄μ. worktree 격리 μμ΄ λ³λ ¬μ λ리면 κ²°κ΅ μ¬λμ΄ μΆ©λμ μμ΅νλλΌ λ λλ €μ§λλ€. Spawn λ¨κ³μμ scope λ₯Ό μ’κ² μ‘μμΌ Gate μμ 리뷰ν λΆλμ΄ μ€μ΄λ€μ΄μ.
2οΈβ£ Deterministic Path. μ¬λ μμ΄ λ°λ³΅ κ°λ₯ν κ²½λ‘
Parallel Path κ° μ¬λμ κ°μ μ μ μ λ‘ νλ€λ©΄ μ΄μͺ½μ μ λ°λμ λλ€.
Preflight β Backups β Logs β Pass Gate μμλ‘ μμ§μ΄κ³ μ¬λμ΄ μ€κ°μ λΌμ΄λ€μ§ μμμ. backup μ΄λ 쑰건 κ²μ¦μ΄λ λ‘κ·Έ κΈ°λ‘μ²λΌ λ§€λ² κ°μ κ²°κ³Όκ° λμμΌ νλ μμ μ μ°λ κ²½λ‘μ λλ€.
β’ Repeat. JSON plan μ΄ Bash λ Python 루νλ₯Ό λ λλ§. render_worker_loop.py μ config νμΌκ³Ό μΈμ΄μ μΆλ ₯ κ²½λ‘λ₯Ό μ§μ νλ©΄ κ²°μ λ‘ μ μ€ν¬λ¦½νΈκ° μμ±λ¨ β’ Fail. preflight λ¨κ³μμ backup μ΄ μ€ν¨νλ©΄ λͺ¨λ worker μ μμ μ체λ₯Ό μ°¨λ¨. λ°μͺ½μ§λ¦¬ μ€νμ μμ² λ΄μνλ μ€κ³ β’ Inspect. λ‘€λ°± λͺ λ Ήμ΄λ κΈ°λ‘λ§ ν΄λκ³ μλ μ€ννμ§ μμ. βrecorded, not auto-firedβ κ° μ΄ κ²½λ‘μ ν΅μ¬ μμΉ
λ κ²½λ‘μ κ΅¬λΆ κΈ°μ€μ κ°λ¨ν©λλ€.
μμ΄μ νΈμκ² μ€κ°μ λ°©ν₯μ νμ΄μ€μΌ νλ©΄ Parallel Path λ‘ tmux worker λ₯Ό μ°κ³ , λ§€λ² λμΌνκ² λμκ°μΌ νλ©΄ Deterministic Path λ‘ Python μ΄λ Bash 루νλ₯Ό μλλ€.
μ§μ μ¨λ³΄λ 보ν΅μ κ²½μ° κΈ°λ₯ κ°λ°μ Parallel Path κ° λ§κ³ μλ² λ§μ΄κ·Έλ μ΄μ μ΄λ DB λ°±μ κ°μ μ΄μ μμ μ Deterministic Path κ° λ§μμ΄μ.
3οΈβ£ Changelog Gate. λ κ²½λ‘ λͺ¨λλ₯Ό κ΄ν΅νλ ν΅μ μ₯μΉ
μ΄λ€ κ²½λ‘λ₯Ό μ°λ merge μ μ λ°λμ κ±°μΉλ κ΄λ¬Έμ΄ changelog gate μ λλ€. μ΄μ μμΉμ βChangelog first, merge back lastβ μμ.
β’ λͺ¨λ worker κ° changelog νλͺ©μ΄λ fragment λ₯Ό λ¨κΈ°λλ‘ κ°μ . κΈ°λ‘ μμΌλ©΄ merge λΆκ° β’ diff 리뷰λ μ¬λμ΄ νλ μμ΄μ νΈκ° ν μ€νΈλ₯Ό λ¨Όμ ν΅κ³Όν κ²λ§ 리뷰 λμμ μ¬λ¦Ό β’ ν΅κ³Όν μμ μ starting branch λ‘ λμκ°κ³ μ€ν¨ν 건 blocker report μ μ΄μ κ° κΈ°λ‘
changelog gate λμ μ μλ merge ν λ²κ·Έλ₯Ό μ°Ύλ λ° μμ΄μ νΈκ° μ½λ μ§λ μκ°λ³΄λ€ μ€λ κ±Έλ Έμ΅λλ€. gate λ₯Ό λ£κ³ λμμΌ λ³λ ¬μ μλκ° μ€μ μμ°μ±μΌλ‘ μ νλμ΄μ.
4οΈβ£ Harness Converter. μμ΄μ νΈλ₯Ό λ°κΏλ μν¬νλ‘μ°λ κ·Έλλ‘ μ μ§
Recursive Harness Converter λ νΉμ μμ΄μ νΈ CLI μ μ’ μλμ§ μκ² λ§λλ λ³νκΈ°μ λλ€. generic defaults λ₯Ό target agent CLI μ λ§€ννλ λ°©μμ΄μμ.
β’ inspect help. λμ μμ΄μ νΈ CLI μ μ΅μ κ³Ό κΈ°λ³Έκ°μ μλ νμ β’ convert. docs μ scripts μ examples μ tests λ₯Ό νλ²μ λ³ν β’ log. conversion report μ changelog status μ merge-back blocker λͺ©λ‘μ΄ μλ μμ±. λ¨μ ν μ€νΈμ ν΅ν© ν μ€νΈλ₯Ό edge case ν¬ν¨ν΄μ κ΄λ²μνκ² λ리λ κ²κΉμ§κ° converter μ λ²μ
νμ¬μ μμ΄μ νΈ λꡬλ 6κ°μμ΄λ©΄ λ§μ κ²μ΄ λ°λλλ€. Claude Code λ₯Ό μ°λ€κ° Codex λ‘ κ°μν μ μκ³ κ·Έ λ°λλ κ°λ₯ν΄μΌ ν΄μ. κ·Έλ μν¬νλ‘μ° μ 체λ₯Ό λ€μ μ§λ κ² μλλΌ harness μ€μ νλλ§ λ°κΎΈλ©΄ λλ κ΅¬μ‘°κ° νμν©λλ€.
κ²°κ΅ μμ΄μ νΈλ₯Ό λͺ κ° λ리λλλ³΄λ€ κ° μμ΄μ νΈκ° λ νκ³ μ΄λμ λ§νλμ§ changelog μ blocker report λ‘ μ½μ μ μλλκ° μ€μν©λλ€. μμ μ 격리νκ³ κ²°κ³Ό μνλ₯Ό μ λ¬νλ κ΅¬μ‘°λ§ μμΌλ©΄ μμ΄μ νΈκ° 3κ°λ 10κ°λ κ°μ λ°©μμΌλ‘ κ΄λ¦¬ν μ μμ΄μ.
λ³λ ¬ μμ΄μ νΈκ° κΌ μ λ΅μΈμ§λ μμ§ λͺ¨λ¦ λλ€. λ€λ§ μ΄ λ°©ν₯μ΄ κ²°κ΅ AI κ° μ§ν₯νλ λ°©ν₯μ΄μ§ μμκΉ νλ λ§μμ μ€λλ κ³μ λμ ν©λλ€.
λ΄μ€λ ν° κ΅¬λ νκΈ°
μ΅μ AIμ λν μΈμ¬μ΄νΈλ₯Ό λ°μ보μΈμ.