AI 코딩 비용 절감법: 토큰 수보다 완료 비용을 줄이는 운영 체크리스트
AI 코딩 에이전트 비용을 줄이려고 할 때 가장 흔한 실수는 “출력 토큰을 줄이면 싸진다”고 단순화하는 것이다. GitHub는 Copilot 비용 최적화 글에서 반대 사례를 제시했다. 어떤 도구 출력은 짧아졌지만, 필요한 정보가 빠지자 에이전트가 원본을 다시 열거나 명령을 다시 실행했고, 결과적으로 전체 작업 비용과 시간이 늘었다. 로컬 최적화가 전체 비용을 올린 것이다.
실무에서 중요한 지표는 한 번의 모델 호출 비용이 아니라 “작업 1건을 성공적으로 끝내는 비용”이다. 코드 수정, 테스트 실행, 실패 로그 분석, 재수정, PR 생성까지 포함해야 한다. 이 관점으로 보면 토큰 절약보다 더 중요한 질문이 생긴다. 에이전트가 같은 일을 반복하고 있나? 필요한 정보를 놓쳐서 다시 읽고 있나? 불필요한 형식 때문에 컨텍스트를 낭비하고 있나? 백그라운드 작업 결과를 다시 가져오느라 모델 턴을 쓰고 있나?
로컬 토큰 절감의 함정
GitHub는 shell output을 줄이는 도구를 평가하면서 흥미로운 결과를 얻었다. 일부 응답은 짧아졌지만, 빠진 정보가 중요할 때 모델이 원본 출력을 다시 열거나 명령을 재실행했다. 그 결과 턴 수가 늘고 더 많은 컨텍스트를 들고 가게 됐다. 겉으로는 한 tool response가 짧아졌지만, completed task 기준으로는 더 비싸졌다.
이 패턴은 자체 에이전트 시스템에서도 자주 나온다. 예를 들어 테스트 실패 로그를 과하게 요약하면 모델은 어떤 파일의 몇 번째 테스트가 왜 실패했는지 모른다. 결국 전체 로그를 다시 요청한다. 검색 결과를 상위 5개만 남기면 빠진 파일이 필요해져서 다시 grep을 돌린다. diff에서 context line을 너무 줄이면 변경 의도를 파악하지 못해 파일을 다시 읽는다.
따라서 “짧게”가 목표가 아니다. “다시 읽지 않아도 될 만큼 충분히, 그러나 반복 노이즈는 줄이는 것”이 목표다.
보존해야 할 출력과 줄여도 되는 출력
GitHub가 제시한 방향은 출력의 성격에 따라 다르게 처리하는 것이다. source-like output과 arbitrary command result는 보존하고, grep 결과는 내용 삭제 없이 재구성하며, install·build·test 진행 로그처럼 반복 노이즈가 많은 출력만 선택적으로 압축한다.
이 기준은 자체 AI 코딩 환경에도 바로 적용할 수 있다.
보존해야 할 것:
cat,git diff,git show처럼 소스 또는 변경 내용을 보여주는 출력.- 테스트 실패의 assertion, stack trace, 파일 경로, 라인 근처 컨텍스트.
- migration guide, changelog, API 에러 본문.
- 자체 스크립트가 출력한 도메인 정보.
줄여도 되는 것:
- 패키지 설치 progress bar.
- 반복되는 build warning 중 동일 패턴.
- 긴 성공 로그.
- 이미 별도 파일로 저장된 전체 로그의 중복 출력.
핵심은 recovery path다. 압축된 출력을 보여주더라도 원본을 다시 볼 수 있어야 한다. 그리고 에이전트가 원본을 자주 다시 연다면 압축 정책이 잘못된 것이다.
줄 번호 제거처럼 안전한 절감부터 찾기
GitHub는 file view tool에서 모든 줄 앞에 붙던 line number prefix를 제거해 offline benchmark에서 모델 추론 비용을 약 5% 줄였고, Copilot CLI 사용자 온라인 실험에서도 평균 일일 모델 추론 비용을 약 3% 줄였다고 설명했다. 중요한 점은 정보 삭제가 아니라 불필요한 형식 제거였다는 것이다. 파일 내용은 그대로 유지했고, 현재 편집 도구가 줄 번호를 쓰지 않았기 때문에 제거해도 행동이 유지됐다.
자체 시스템에서도 이런 안전한 절감이 먼저다. 예를 들어 매번 같은 긴 시스템 설명을 넣고 있다면 중복을 줄일 수 있다. 도구 스키마에 모델이 쓰지 않는 설명이 많다면 다듬을 수 있다. 로그에 ANSI color code, progress animation, 장식 문자가 섞여 있다면 제거할 수 있다.
반면 실패 로그의 핵심 줄, diff context, 사용자 요구사항, 보안 정책을 줄이는 것은 위험하다. 비용은 줄어 보일 수 있지만 실패율이 올라가면 전체 비용은 더 커진다.
프롬프트 압축은 반드시 행동 테스트가 필요하다
GitHub는 task tool 프롬프트를 줄이는 과정에서 한 번 온라인 실험을 중단했다고 밝혔다. 짧아진 프롬프트가 독립 에이전트를 병렬로 실행해야 하는 상황을 순차 실행처럼 바꿨기 때문이다. 이후 해당 회귀를 잡는 행동 테스트를 추가하고, “Independent agents can run in parallel; consider side effects.”라는 짧은 문장으로 의도를 복원했다.
이 사례는 프롬프트 최적화의 핵심을 보여준다. 프롬프트는 문서가 아니라 코드에 가깝다. 줄이면 행동이 바뀐다. 그러므로 프롬프트를 줄이기 전에 보존해야 할 행동을 테스트로 정의해야 한다.
예를 들어 AI 코딩 에이전트라면 다음 행동 테스트가 필요하다.
- 독립 작업은 병렬로 나누는가.
- 프로덕션 파일을 수정하기 전 테스트 파일을 먼저 확인하는가.
- 실패한 테스트를 삭제하지 않는가.
- 보안 관련 변경에서 권한을 완화하지 않는가.
- 불확실한 외부 API 동작을 단정하지 않는가.
이 테스트 없이 프롬프트를 줄이면 비용은 낮아져도 품질이 무너질 수 있다.
모델 턴 자체를 없애는 최적화
가장 좋은 비용 절감은 모델을 덜 부르는 것이다. GitHub는 백그라운드 shell command나 sub-agent가 끝났을 때 결과를 다시 가져오기 위한 별도 모델 턴을 줄이는 방식을 설명했다. 이전에는 완료 알림만 받고 모델이 다시 결과를 요청해야 했다면, 이제는 완료 결과를 함께 전달해 불필요한 retrieval turn을 줄인다. 이 변화로 AI Credits 기준 평균 token-related usage가 약 2.3% 줄었다고 한다.
자체 에이전트에서도 비슷한 최적화가 가능하다. 예를 들어 장기 실행 명령이 끝났을 때 “완료됨”만 알려주지 말고 exit code, stdout tail, stderr summary, full log path를 함께 전달한다. 서브에이전트 결과도 “끝남”이 아니라 결정, 근거, 파일 경로, 남은 리스크를 구조화해서 넘긴다. 그러면 메인 에이전트가 다시 물어보는 턴을 줄일 수 있다.
팀에서 바로 적용할 비용 대시보드
비용 최적화는 감으로 하면 안 된다. 다음 지표를 작업 단위로 모아야 한다.
- 완료된 작업 1건당 모델 호출 수.
- 완료된 작업 1건당 입력·출력 토큰.
- 실패 또는 중단된 작업의 평균 토큰.
- 같은 명령을 재실행한 횟수.
- 같은 파일을 다시 읽은 횟수.
- 원본 로그 recovery path 사용률.
- 테스트 통과까지 걸린 모델 턴 수.
이 지표가 있으면 어떤 최적화가 진짜로 비용을 줄였는지 알 수 있다. 출력 압축 후 원본 로그 재열람이 늘었다면 실패다. 프롬프트를 줄인 뒤 재시도가 늘었다면 실패다. 반대로 줄 번호 제거처럼 품질 지표 변화 없이 비용이 줄었다면 좋은 최적화다.
실행 체크리스트
- AI 코딩 비용은 호출 1회가 아니라 완료된 작업 1건 기준으로 본다.
- 출력 압축은 source-like output, diff, 테스트 실패 핵심 정보를 보존하는 것부터 원칙으로 삼는다.
- install/build/progress 로그처럼 반복 노이즈가 큰 출력만 선택적으로 줄인다.
- 압축된 출력에는 항상 원본 recovery path를 둔다.
- 프롬프트 압축 전에는 보존해야 할 행동 테스트를 만든다.
- 불필요한 줄 번호, ANSI 코드, 장식 문자, 중복 설명처럼 정보가 아닌 형식부터 제거한다.
- 백그라운드 작업 완료 알림에는 결과 요약과 로그 경로를 함께 넣어 retrieval turn을 줄인다.
- 최적화 전후로 작업당 모델 턴 수, 재실행 횟수, 원본 로그 재열람률을 비교한다.
AI 코딩 비용 절감의 핵심은 모델을 억지로 굶기는 것이 아니다. 에이전트가 같은 일을 두 번 하지 않게 만드는 것이다. 필요한 정보는 보존하고, 반복 노이즈와 불필요한 턴을 줄이면 비용과 속도, 품질이 같이 좋아진다.