D.ohnald's | 최근 변경 | about

tmux를 활용한 AI 개발하기(딸깍)

created: 2025/08/05
updated: 2025/08/06
원본보기


tmux와 AI를 활용한 개발 자동화 실험을 진행해봤다.

처음 tmux를 사용한 것은 컴퓨터를 잠시 사용하지 않을 때도 백그라운드에서 작업을 진행하고 터미널 세션을 유지하려는 이유였다. 이후 AI agent 코딩을 하면서 git worktree를 이용해 여러 윈도우에서 동시에 작업할 수 있다면 기획자, 작업자1, 작업자2로 역할을 나눠서 병렬 개발이 가능할 것이라 생각했다.

그런데 막상 해보니 AI 비용이 많이 발생하고 git log 관리도 생각만큼 쉽지 않았다. 결국 회사 업무는 직접 하고 개인 프로젝트에서만 AI와 협업하는 방식으로 정리했다. 개인 작업에서 gemini와 claude code를 사용하고 있는데 이 둘을 조화롭게 사용하는 것도 비용을 아끼면서 사용하는 방법이겠다.

전환점은 트위터에서 발견한 tmux 오케스트레이션 방법이었다. tmux의 세션 간 메시지 전달 기능을 활용하는 아이디어였는데, 이걸 참고해서 개발 환경을 재구성했다.

최종적으로 기획자와 엔지니어1로 구성된 간단한 구조를 만들었다. 엔지니어는 명령을 받아 실행하고 테스트하고 커밋하며 작업목록을 업데이트한다. 기획자는 작업목록을 생성하고 엔지니어의 진행상황을 모니터링하면서 작업이 완료되면 다음 태스크를 할당한다.

tmux (새로운 세션 생성과 함께 윈도우 생성)
tmux new-window (새로운 윈도우 생성)

이 작업의 핵심은 tmux send-keys C-m 명령이다. 이를 통해 윈도우 간 메시지 전달이 가능해진다. 아래 명령이 포함되면 바로 진행이 가능하다.

- 당신은 다른 에이전트를 관리하는 프로젝트 매니저입니다. 
- 명령을 수행할 지 묻지말고 작동하세요.
- 각 에이전트는 한 번에 한 가지 작업만 수행합니다.
- `tmux ls` 명령을 이용해 tmux 세션 목록을 가져오는 것부터 합니다. 당신이 속한 윈도우는 {windowName}입니다. 따라서 윈도우 하위에 있는 세션에만 명령을 내려야 합니다.
- plan.md를 참고해 unchecked task를 작업할 수 있도록 다른 agent에 명령을 내립니다.
- 코드를 직접 작성하려는 생각을 멈추세요. 모든 작업은 agent가 수행합니다.
- tmux agent에게 지시를 내리는 명령은 아래와 같습니다.
  - `tmux send-keys -t [agent-name] '작업 지시사항'`
  - `tmux send-keys -t [agent-name] C-m`

몇 가지 개선점도 발견했다. 엔지니어가 직접 AI를 종료하면 더 깔끔한 워크플로우가 될 것 같다. 아직 해보지는 않았지만 하나의 작업 종료 후 /reset(claude code의 경우) 등의 명령을 전달하면 된다. 컨텍스트는 claude.md와 gemini.md를 심볼릭 링크로 구성해서 해결했다. 어떤 AI든 동일한 방식으로 작업할 수 있게 된 셈이다.

ln -s gemini.md CLAUDE.md

Claude의 API limit 때문에 PM으로 Gemini를 사용하고 엔지니어는 Claude Code를 이용하고 있다. API limit만 없다면 혼자서 계속 돌아갈 것 같은데, 그래서 위 링크한 repo는 30분마다 체크하는 인터럽트를 넣은 건지도 모르겠다.