시리즈: 멀티 에이전트 하네스 구축기
1편: 설계와 작업 흐름 (이 글)
2편: 사용량 관리와 모델 배치
3편: Agent Office와 삽질 모음
약 2주 동안 집에 있는 M4 맥북에 "AI 개발팀"을 하나 꾸렸다. 텔레그램으로 일을 던지면 에이전트들이 나눠서 개발하고, 서로 리뷰하고, 결과를 보고한다. 그 과정은 픽셀 사무실 화면으로 지켜본다.
처음에는 "여러 LLM을 묶어서 일을 시켜 보자" 정도의 가벼운 생각이었다. 그런데 쓰다 보니 사용량 관리, 작업 격리, 리뷰, 원격 조작, 모니터링까지 하나씩 붙었다. 지금은 하네스 저장소 커밋만 50개가 넘고, 파이썬과 HTML 코드가 7천 줄쯤 된다.
글이 길어져서 세 편으로 나눴다. 1편에서는 무엇을 왜 이렇게 만들었는지, 작업 하나가 어떻게 흘러가는지를 정리한다.

처음에 세운 요구사항은 이렇다.
여기에 실제로 쓰면서 두 가지가 더 붙었다.
처음 계획은 OpenCode + LiteLLM이었다. LiteLLM 프록시를 앞에 두고 모델 라우팅과 폴백을 맡길 생각이었다.
그런데 oh-my-openagent(OmO, 예전 이름 oh-my-opencode) 를 보고 방향을 바꿨다. OmO는 OpenCode 플러그인이다. 역할이 정해진 에이전트 팀을 통째로 넣어 준다.
에이전트마다 모델 순서(폴백 체인)를 지정할 수 있다. 429나 5xx가 나면 다음 모델로 자동으로 넘어간다. 이러면 LiteLLM이 할 일이 거의 없다. 그래서 LiteLLM은 빼고, 무료 provider를 OpenCode에 직접 연결했다.
참고로 여러 에이전트를 worktree별로 나란히 띄우는 데스크톱 앱 Orca도 비교해 봤다. Orca는 사람이 결과를 비교하는 "바깥 작업 공간"이다. OmO는 AI가 알아서 분업하고 검증하는 "안쪽 오케스트레이션"이다. 층이 달라서 대체재가 아니었다. 자동 교차 검증과 모델 라우팅이 핵심인 내 요구사항에는 OmO가 맞았다.
무료 모델은 많지만, 에이전트로 쓸 수 있는 모델은 생각보다 적다. 그래서 free_llm_check.py라는 검사 스크립트를 만들었다. 모델마다 세 가지를 본다.
NVIDIA, Google(Gemini), OpenRouter, Groq를 돌려 보고, 세 단계를 통과한 모델만 OmO 설정에 넣었다. 검색이나 잡무 같은 가벼운 역할은 NVIDIA Nemotron Lightning이나 Gemini Flash Lite가 맡게 했다.


전부 tmux 세션 하나(harness) 안에서 창(opencode, dispatch, office)으로 돈다. launchd가 5분마다 상태를 확인하면서 프로필 전환과 원격 재시작 요청을 처리한다.

tasks/inbox/에 작업 파일을 만든다.agent/<작업ID> 브랜치를 만든다. 작업끼리 서로의 파일을 건드릴 일이 없다.git diff main...HEAD 리뷰를 받아라", "마지막 줄에 STATUS를 적어라" 같은 것들이다.
LLM 에이전트는 "이제 테스트를 실행하겠습니다"라고 말해 놓고 그냥 멈추는 일이 잦다. 그래서 완료 판정을 깐깐하게 했다.
STATUS: 줄이 없으면 완료로 치지 않는다. 한 번 "말로만 하지 말고 실제로 실행해서 끝내라"고 다시 보낸다.
자주 쓰는 명령은 이 정도다.
| 명령 | 하는 일 |
/new 레포 [codex] |
새 레포 만들기. codex를 붙이면 개인 데이터용(허용 모델 제한) 템플릿 |
/clone URL |
GitHub 레포 가져오기 (빈 저장소면 초기 커밋을 만들어 줌) |
/status |
진행 중·대기·질문·완료 목록 (레포·제목 함께) |
/pending |
안 합친 브랜치, 커밋 안 한 변경, push 안 한 커밋 |
/restart office·dispatch·opencode |
원격 재시작 (launchd가 처리) |
/office flow |
사무실 업무 흐름도를 캡처해서 보내기 |
자잘하지만 효과가 컸던 것들도 있다.
여행 기록 앱처럼 실제 위치 정보가 들어가는 레포는 따로 다룬다.
opencode.jsonc에서 허용 provider를 OpenAI와 Go DeepSeek(ZDR 모델 2개)로 좁힌다. 무료 모델이나 학습에 데이터를 쓰는 모델은 아예 못 고른다..env 파일은 에이전트가 읽지 못하게 막았다. 작업 폴더 밖 경로 접근(external_directory)도 기본 거부다.여기까지가 뼈대다. 다음 편에서는 이 하네스에서 가장 많이 갈아엎은 부분, 사용량 관리와 모델 배치를 다룬다. Codex 5시간 한도가 재시도 세 번에 증발한 사건부터 시작한다.
다음 글: (2) 사용량 관리와 모델 배치
※ 이 글은 AI의 도움을 받아 작성했고, 작성자가 내용을 직접 검토한 뒤 올렸다.
| 토스증권 Open API로 나만의 포트폴리오 리포트 만들기 (2) — Claude Code·Codex CLI로 종목 AI 분석 붙이기 (0) | 2026.10.28 |
|---|---|
| 토스증권 Open API로 나만의 포트폴리오 리포트 만들기 (1) — 매일 쌓고, 과거는 복원하고 (0) | 2026.10.28 |
| 맥북 한 대로 AI 개발팀 굴리기 (3) — Agent Office와 삽질 모음 (0) | 2026.10.28 |
| 맥북 한 대로 AI 개발팀 굴리기 (2) — 사용량 관리와 모델 배치 (0) | 2026.10.28 |
댓글 영역