2 minute read

거품을 걷어낸 에이전트의 실체

에이전트가 무슨 거창한 차세대 마법인 양 포장되는데, 까놓고 말해서 루프 하나 돌리는 게 전부다.

r/ClaudeCode에 아주 순수하고도 절박한 질문 하나가 올라왔다. “도대체 에이전트라는 걸 어떻게 만드는 건가요?” 글쓴이는 진심이었다. 단일 .md 파일 하나 만들면 되는 건지, Claude Code 설정에서 버튼을 켜야 하는 건지 도무지 감이 안 잡힌다고 했다. /docs에 프로젝트 문서 다 정리해 뒀는데 Claude.md는 또 왜 만들어야 하며, 메인 에이전트와 서브에이전트는 뭐가 다른지 혼란스러워했다. 충분히 이해된다. 요즘 업계가 ‘에이전트’라는 단어에 온갖 환상과 마케팅 거품을 잔뜩 끼얹어놨으니까.

댓글에서 가장 많은 지지를 받은 답변은 의외로 단순하고 담백했다.

“루프에서 모델을 호출하는 것, 그게 전부다”

whimsicaljess라는 유저의 답변은 군더더기가 없다. 에이전트라는 건 본질적으로 “코딩 모델을 루프(while문) 안에서 반복 호출하는 것”, 딱 그게 끝이라는 거다. 자율로 돌든 반자율로 돌든 본질은 같다.

예를 들어 5분마다 Claude CLI를 때려서 깃허브의 미해결 이슈를 조회하고 라벨을 붙이는 bash 스크립트나 cron 작업을 짰다? 축하한다. 당신은 방금 AI 에이전트를 하나 만든 거다. 복잡한 프레임워크나 자격증 같은 건 필요 없다.

“개념 자체는 너무나 단순하고 원초적인데, 주변에서 있어 보이려고 말을 배배 꼬아서 그래요”라는 댓글 한 줄이 모든 혼란을 종식시켰다.

하위 에이전트는 언제 쓰나

여기에 bronfmanhigh의 덧붙임도 훌륭하다. Claude Code를 켜고 있다면 이미 에이전트 위에 올라타 있는 거다.

그럼 서브에이전트는 뭐냐? 하나의 컨텍스트 창에 다 때려 박기엔 작업이 너무 비대할 때, 메인이 새끼 에이전트를 스폰해서 일을 병렬로 쪼개주는 거다.

사람으로 치면 PM이 프론트 담당, 백엔드 담당, QA 담당한테 일감을 찢어서 나눠주는 구조다. 각 서브에이전트는 깨끗한 독립 컨텍스트에서 자기 할 일만 후딱 끝내고 결과만 메인에게 보고한다. 코드베이스 전체를 분석하면서 동시에 테스트 짜고 문서까지 업데이트해야 할 때, 단일 세션으로 돌리면 컨텍스트가 터지니까 서브에이전트로 분산하는 게 백배 이득이다.

Claude.md는 왜 필요한가

기존 /docs 폴더가 있는데 Claude.md는 왜 또 만드냐는 질문도 진짜 많이들 헷갈려 한다.

역할이 아예 다르다. /docs는 인간 동료들이 읽는 문서다. 요구사항 명세서, 아키텍처 히스토리 등이 장황하게 들어간다. 반면 Claude.md(또는 CLAUDE.md)는 Claude Code가 프로젝트 디렉토리에 진입할 때 맨 처음 읽는 시스템 행동 지침서다.

“우리 프로젝트는 탭 대신 스페이스 2칸 쓴다”, “테스트는 npm test로 돌려라”, “어떤 경우에도 master 브랜치에 직접 푸시하지 마라” 같은 절대 규칙을 적어둔다. 에이전트한테 매 세션마다 /docs 수십 개 파일을 다 뒤지라고 시키면 토큰도 살살 녹고 룰도 까먹는다. Claude.md 한 장에 엑기스만 압축해서 먹이는 게 훨씬 안전하다.

그래서 에이전트를 만들려면

대답은 허탈할 정도로 간단하다.

  1. Claude Code를 연다.
  2. 작업을 지시한다.
  3. 이걸 자동화하고 싶으면 스크립트나 cron 루프로 감싼다.

그게 에이전트다. 마법 같은 게 아니다. 모델 부르고, 결과 받고, 다시 판단해서 부르는 루프. 그 루프 안에서 도구를 쥐여주고 맥락을 정교하게 깎아주는 게 우리가 할 일의 전부다.

개념이 복잡해 보였던 건 프레임워크와 마케팅이 씌워둔 껍데기 때문이다. 벗겨내고 나면 명확하다. 루프를 짜고, 맥락을 주고, 에이전트가 판단할 안전펜스를 쳐주는 것. 그 정도면 충분하다.