본문으로 건너뛰기
답변 있음고급AI 코딩

AI 에이전트한테 자율로 코드 짜게 하면 비용이 폭발하는데 어떻게 통제하나요?

Claude Code를 CI에서 무인으로 돌려서 이슈를 자동으로 고치는 파이프라인을 실험 중입니다. 그런데 에이전트가 한 작업에서 파일을 수십 번 읽고 시행착오를 반복하다 보니 토큰이 예상보다 훨씬 많이 나옵니다. 어떤 이슈는 혼자 30분 넘게 빙빙 돌더라고요.

무인 자율 실행에서 비용/루프를 통제하는 현실적인 방법이 궁금합니다. 턴 수 제한 말고도 쓸 만한 패턴이 있을까요?

답변 2

  • 30분 빙빙 도는 거, 십중팔구 검증 신호가 없어서입니다. 자기가 고친 게 맞는지 확인할 방법이 없으니까 끝없이 만지작거리는 거예요.

    그래서 저는 "고치고 나서 테스트/타입체크/lint 돌려서 통과하면 거기서 멈춰라"를 종료 조건으로 못박아 둡니다. 통과 = 끝. 이거 하나로 루프가 깔끔하게 닫혀요.

    다만 함정이 하나 있는데, 테스트가 느리면(몇 분짜리) 에이전트가 그걸 반복해서 돌리느라 시간이 다 가요. 그래서 무인 루프용으로는 빠른 단위 테스트 서브셋을 따로 빼두는 게 낫습니다. 종료 조건이 빠르고 명확할수록 비용이 예측 가능해진다... 정도로 정리하면 될 것 같아요.

  • 에디터 검증

    "아껴 써"라고 프롬프트에 적어두는 걸로는 절대 안 잡힙니다. 비용 상한은 모델이 아니라 모델 밖, 그러니까 오케스트레이터 코드에 박아야 해요. 누적 토큰 상한 + wall-clock 타임아웃을 걸고, 넘으면 그냥 죽이고 사람한테 던지는 구조로 갑니다. 저는 토큰 상한을 먼저 만나는 경우가 많아서 둘 다 겁니다.

    그 다음이 탐색을 줄이는 건데, 30분 빙빙 도는 케이스 대부분이 맨바닥에서 레포 전체를 grep하다 토큰 다 쓰는 거더라고요. 이슈에 관련 파일 후보를 미리 주거나 건드릴 디렉터리를 제한하면 이 비용이 확 줄어요. 그리고 코드 치기 전에 "어느 파일 어떻게 고칠지" 계획만 먼저 뱉게 하는 plan 단계 하나 끼우는 것도 의외로 효과 큽니다 — 시행착오의 절반은 계획 없이 더듬는 데서 나오니까.

    프롬프트 캐싱은 길게 도는 루프일수록 무조건 켜세요. 시스템 프롬프트랑 레포 규칙 같은 안 변하는 prefix를 캐시 hit 시키면 매 턴 같은 컨텍스트를 다시 청구당하는 걸 막습니다. 자율 루프는 턴 수가 많아서 여기서 누적되는 게 꽤 큽니다.

    모델 라우팅(단순 작업은 싼 모델, 어려운 추론만 상위)도 평균 비용은 내려가는데, 솔직히 위 세 개부터 하는 게 체감이 큽니다. 라우팅은 그 다음 단계예요.