내가 만든 에이전트들 중 살아남은 것보다 죽은 게 더 많다. 에이전트가 죽는 이유와 패턴 공유.
I've killed more agents than I've kept. Sharing the patterns in what dies and why.
핵심 요약
에이전트 구축 시 자주 발생하는 실패 원인 5가지와 이를 방지하기 위한 실무 체크리스트를 공유합니다.
- 단일 작업 원칙 — 여러 기능을 수행하는 메가 에이전트보다 한 가지 일만 확실히 하는 작은 에이전트가 훨씬 안정적임.
- 인간 개입 필수 — 이메일 발송이나 결제 등 파괴적인 작업에는 반드시 인간의 승인 절차를 거쳐야 함.
- 구조화된 출력 — LLM의 텍스트 출력 대신 JSON 스키마를 강제하고 검증하여 파싱 오류를 방지해야 함.
- 비용 관리 및 모니터링 — API 호출 루프 방지를 위해 엄격한 지출 한도를 설정하고 실패 시 즉각 알림을 받아야 함.
지난 6개월 동안 대략 30개 정도의 에이전트를 만들어 돌려봤다. 그중 8개는 아직도 잘 돌아가는데, 나머지 22개는 매번 똑같은 이유로 1~2주 만에 다 뒤졌다.
혹시라도 나랑 똑같은 삽질 하는 사람 있을까 봐, 에이전트가 뒤지는 5가지 패턴을 공유한다.
- 에이전트 하나에 너무 많은 일을 시킴
"들어오는 거 다 처리해" 식으로 만든 에이전트는 죄다 금방 뒤졌다. 이메일 분류하고, 답장 초안 쓰고, 회의 잡고, 티켓 등록까지 한 놈한테 다 시키는 순간, 예외 상황이 기하급수적으로 늘어난다. 각각의 작업은 따로 하면 괜찮은데, 합치는 순간 폭발한다.
대신 잘 먹히는 패턴은 이거다. 에이전트 하나당 일 하나. 다섯 가지 일을 억지로 다 하려는 메가 에이전트보다, 한 가지 일을 확실하게 하는 작은 에이전트 다섯 개가 훨씬 낫다. 재미없어 보여도 이게 진리다.
- 파괴적인 작업에 사람이 개입 안 함
메일 보내기, 게시물 올리기, 결제하기, 삭제하기 같은 거 말이다. 승인 절차 없이 에이전트가 알아서 하게 두면, 결국 에이전트가 벌어다 준 돈보다 실수로 날려 먹는 돈이 더 커지는 꼴을 보게 된다. 나도 메일함 관리 에이전트가 고객한테 덜 완성된 초안을 그대로 보내버리는 바람에 쪽팔린 경험을 했다.
지금은 이렇게 한다: 초안 작성해서 대기열에 넣고, 슬랙으로 승인/거절 버튼 띄우면 내가 누른다. 좀 늦어지는 건 괜찮아도, 대외적으로 사고 치는 건 절대 안 된다.
- 비정형 LLM 출력값
모델이 그냥 텍스트 뱉게 하고 나중에 정규식이나 문자열 매칭으로 파싱하면, 다섯 번에 한 번꼴로 모델이 말투를 살짝 바꾸는 바람에 에러 난다. 무조건 JSON으로 출력하게 강제해라. 데이터 쓰기 전에 스키마 검증부터 하고, 파싱 실패하면 딱 한 번 재시도한 뒤에 바로 알림 띄워라(슬랙으로 쏴라. 조용히 넘어가면 안 된다).
기본적인 거 같지? 내가 뒤진 에이전트들 다시 까보면 거의 다 이걸 안 해서 죽었다.
- 비용 제한 없음
6개월 동안 두 번이나 에이전트가 버그 때문에 무한 루프 돌면서 하룻밤 사이에 API 비용 200달러 넘게 쓴 적 있다. 이제 모든 에이전트에는 월별 비용 한도를 빡세게 걸어둔다. 한도 도달하면 에이전트 멈추고 나한테 슬랙으로 알림 오게 해놨다. 설정하는 데 90초도 안 걸리는데, 이걸로 수백 달러 아낀다.
Anthropic이나 OpenAI 쓰면 키마다 비용 제한 설정하는 기능 있으니까 제발 좀 써라.
- 에이전트가 자기가 틀린 줄 모름
자신감 있게 헛소리하는 에이전트가 "잘 모르겠으니 사람한테 넘길게요"라고 하는 에이전트보다 훨씬 위험하다. 살아남은 에이전트들은 프롬프트에 불확실성 처리 경로가 명확히 박혀 있다: "확신을 가지고 답할 정보가 부족하면 {escalate: true, reason: '...'}를 출력해라."
죽어버린 에이전트들은 내가 눈치챌 때까지 며칠 동안 자신감 있게 틀린 소리만 해댔다.
이 5가지의 공통점은 이거다: 에이전트는 요란하게 죽지 않는다. 그냥 조용히 맛이 가서, 나중에 결과물 확인해 보면 엉망진창이 되어 있다. 대놓고 에러 나는 건 고치기 쉽다. 조용히 죽는 게 제일 무섭다.
내가 에이전트를 믿고 맡기기 전에 확인하는 체크리스트다:
- 일은 딱 하나만 하는가?
- 파괴적인 작업에 승인 절차가 있는가?
- 검증 가능한 정형 데이터(JSON)를 출력하는가?
- 알림 기능이 포함된 비용 제한이 걸려 있는가?
- "모르겠으니 넘긴다"는 명확한 경로가 있는가?
이 5개 다 '예'면 보통 한 달은 넘게 살아남더라. 하나라도 빠지면 언제 뒤질지 뻔히 보인다.
아, 그리고 일주일에 한 번도 안 쓰는 작업에 에이전트 붙이는 짓도 그만뒀다. 빈도 낮은 작업은 유지보수 비용이 시간 아끼는 것보다 더 크다. 에이전트는 자주 반복되는 패턴에서 제일 잘 돌아간다.

