AI 에이전트를 24시간 돌린 지 3개월째다. 크론 잡으로 시작한 게 지금은 7개 에이전트 프로필, 15개 이상의 MCP 서버, 그리고 이 블로그의 자동 발행 파이프라인으로 자랐다. 오늘은 그 과정에서 배운 일곱 가지 교훈을 정리해본다.

  1. 에이전트는 절대 혼자 두면 안 된다

처음엔 “AI가 다 알아서 하겠지” 했다. 3일 뒤 jobs.json에 쌓인 실패 로그를 보고 생각을 고쳤다. 에이전트는 강력하지만, 감독 없이 방치하면 같은 실패를 반복한다. 특히 외부 API 호출 – 네트워크 타임아웃, rate limit, JSON 파싱 실패 – 은 LLM이 스스로 회복하지 못하는 패턴이 명확하다.

해결책은 자동 재시작 + 사람 확인(HITL)이다. 3회 재시도 후에도 실패하면 사람한테 던진다. 이 간단한 규칙 하나로 밤새 쌓이던 실패 로그가 사라졌다.

  1. 상태는 외부에 두라

LLM의 컨텍스트는 휘발성이다. 새 세션이 열리면 이전 대화는 증발한다. 에이전트가 “기억”해야 할 모든 것은 외부 DB나 파일에 저장해야 한다. 나는 SQLite + FTS5를 쓴다. 임베딩 검색까지 지원하면서도 의존성 제로, 백업도 cp 하나면 끝.

에이전트 메모리 시스템을 3번 갈아엎은 끝에 얻은 결론: 복잡한 벡터 DB는 필요 없다. SQLite FTS5 + 로컬 임베딩 모델이면 99% 유스케이스를 커버한다. 나머지 1%는 그냥 사람이 처리하는 게 싸다.

  1. 비용은 생각보다 빨리 쌓인다

클로드 프로를 구독하고 “무제한이네!” 좋아했던 건 2주였다. 하루 200-300회 API 호출에 컨텍스트가 수만 토큰씩 쌓이면 체감 비용이 확 다르다. 특히 긴 코드베이스를 분석하는 태스크는 생각보다 10배 비싸다.

내 해법: 태스크 성격에 따라 모델을 나눈다. 간단한 분류/요약은 플래시 모델에, 코드 리뷰나 아키텍처 결정은 프로/맥스에. 이 라우팅 하나로 월 비용이 40% 떨어졌다.

  1. 실패는 항상 IO에서 난다

3개월간 쌓인 장애 로그를 분석해보니 90%가 IO 경계에서 발생했다. 네트워크 불안정, 파일 락, DB 커넥션 타임아웃, Docker 데몬 응답 없음. LLM의 추론 자체가 실패한 경우는 거의 없었다.

교훈: 에이전트 코드를 짤 때 IO 경계마다 재시도 로직을 넣어라. 아니면 워커를 만들어서 실패한 작업을 자동 재시도하게 해라. LLM은 생각보다 튼튼하다. 주변 인프라가 문제다.

  1. 아티팩트 없이 작업하지 마라

에이전트가 생성한 모든 결과는 파일로 남겨야 한다. “방금 전에 검토했던 PR 리뷰 다시 보내줘”라는 요청은, 컨텍스트가 증발한 상태에서는 불가능하다. 모든 중간 산출물을 jobs.json이나 파일 시스템에 구조화해서 저장한다.

이 원칙 하나로 문제 추적 능력이 극적으로 좋아졌다. “왜 이 결정을 내렸지?”라는 질문에 provenance 기록이 답한다. 증거 없는 에이전트의 말은 신뢰하지 않는다.

  1. 하나의 에이전트가 모든 걸 하게 하지 마라

처음엔 올인원 에이전트를 만들었다. 쓰기, 읽기, 배포, 모니터링까지 하나의 프롬프트로… 당연히 망했다. 컨텍스트가 너무 커져서 추론 품질이 떨어지고, 서로 다른 태스크 간 간섭이 발생했다.

지금은 7개 프로필(implementer, reviewer, sre, archiver, tester, editor, explorer)로 나누고, 오케스트레이터가 작업을 라우팅한다. 각 에이전트는 자기 할 일만 집중한다. 이 단순한 분업이 전체 품질을 2배로 올렸다.

  1. 에이전트 시스템은 결국 조직도다

가장 예상 밖의 교훈: 에이전트 시스템을 설계하는 건 조직을 설계하는 것과 비슷하다. 역할을 정의하고, 권한을 부여하고, 감독 체계를 만들고, 의사소통 채널을 정한다. 마이크로서비스 아키텍처나 조직 이론의 원칙이 그대로 들어맞는다.

역설적이게도 AI 에이전트를 운영하면서 인간 조직에 대해 더 많이 배웠다. 시스템은 스스로를 닮는다.

마치며

3개월 전엔 “AI가 다 해주겠지”라는 막연한 기대가 있었다. 지금은 안다. 에이전트는 훌륭한 도구지만, 시스템 설계와 운영은 여전히 사람의 몫이다. 그리고 그게 재미있다.

다음은 메모리 관리와 컨텍스트 윈도우 최적화에 대해 써볼까 한다. 백로그에 추가해둬야지.

P.S. 이 글을 쓰는 지금, 내 에이전트는 다음 슬롯을 위해 백로그를 긁고 있다. 백로그가 비었다고 한다. 그래서 내가 직접 썼다.

관련 글

AI가 일을 “추천”만 하고 “실행”은 못 하는 진짜 이유 — 모델 탓이 아니라 로그인 탓이다

에이전트가 워드프레스에 글을 쓰는 방법 — Slot Gap Fill의 실제