토큰 사용량을 아끼는 방법
This will save your Usage
핵심 요약
Astra의 불필요한 반복 폴링 문제를 해결하여 토큰 사용량을 절감하는 프롬프트 팁을 공유합니다.
- 반복 폴링 문제 — Astra가 작업 완료를 확인하려고 계속 깨어나 토큰을 낭비함
- 프롬프트 해결책 — 폴링을 중단하고 작업 완료 시 다시 확인하도록 지시하는 프롬프트 사용
- 시스템 프롬프트 논쟁 — 폴링 지침이 시스템 프롬프트에 고정되어 있어 수정이 위험하다는 의견 존재
- 워크플로우 효율성 — 다중 에이전트 사용 시 토큰 소모가 급증하므로 효율적인 설계가 필요함
이미 많은 사람이 눈치챘겠지만, Astra는 기다릴 줄을 모름. 뭐든 간에, 스크립트 짜서 돌리는 작업이든, 다른 에이전트한테 일을 시키든, 그냥 가만히 있질 못함. 작업자가 끝났는지 확인하려고 계속 깨어남.
테스트를 몇 번 돌려봤는데, 한 번은 짧은 sleep 호출 19번이 **오케스트레이터 예상 비용의 44%**를 차지하더라.
Astra High + Luna Max 조합으로 비교했을 때, 오케스트레이터는 작업자가 돌아가는 동안 41번이나 응답했고, 그 단계에서만 1.2달러가 나감. 반면에 네이티브 대기 방식은 응답 딱 한 번이면 됐고, 비용은 0.04달러 정도였음. (둘 다 244개 테스트 케이스는 전부 통과함)
그 뒤로 Codex가 데이터베이스 스크립트 기다릴 때도 똑같은 짓 하는 걸 목격함: 로그 읽고, "아직 돌아가는 중"이라고 말하고, 또 반복. 스크립트 하나 기다리는 것만으로 주간 사용량(월 100달러 플랜)의 2%를 그냥 날려 먹는 걸 봤음.
그래서 얘네가 패치해 줄 때까지 내가 쓰는 프롬프트는 이거임:
이번 세션 내내, 오래 걸리는 작업에 대해 반복적으로 상태 확인(polling)하지 마.
지원되는 완료 알림이 있으면 그걸 사용해. 만약 그런 게 없고 더 이상 할 일이 없으면, 네 턴이 끝난 뒤에도 안전하게 계속 돌아갈 수 있는 경우에만 작업을 유지해.
뭐가 돌아가고 있는지, 결과는 어디에 저장되는지 알려주고, 이렇게 말해:
“폴링을 멈춥니다. 결과 확인하고 계속 진행하려면 다시 알려주세요; 자동으로 재개하지 않겠습니다.”
그러고 나서 턴을 종료해. 바뀌지도 않은 로그를 계속 읽거나, sleep 걸고 다시 확인하는 짓 하지 마. 런타임 제한이랑 안전 타임아웃을 지켜.
내가 돌아오면 딱 한 번만 확인해. 끝났으면 검증하고 계속하고, 여전히 돌아가는 중이면 그 사실만 보고하고 다시 멈춰.
물론 내가 직접 다시 확인하러 와야 하긴 하지만, 사용량은 확실히 아낌.
수정:
댓글에서 조언해 준 덕분에 직접 확인하는 것보다 더 좋은 방법을 찾음. Codex도 반복적인 모델 폴링을 피하는 법을 아는데 그냥 안 하는 거였음.
codex queue --thread <session-id> --message "..."
백그라운드 스크립트가 작업 끝날 때까지 기다렸다가, 결과를 저장하고, 저 명령어를 딱 한 번 실행하게 하면 됨. Codex는 턴을 종료했다가 메시지가 도착하면 자동으로 재개할 수 있음.
이제 서드파티 CLI 서브 에이전트(GLM을 쓴 kilo code)랑 전체 테스트 스위트(전부 GPT) 둘 다에서 작동하는 거 확인했음: Codex가 자동으로 재개해서 결과 확인하고 계속 진행하더라. 아주 잘 돌아감.
스크립트가 깨워주는 역할을 하는 거고, agents.md 지시사항만으로는 안 됨.
수정2: Codex가 이 방식을 쓰도록 유도하는 스킬을 하나 만들었음. 기계적인 작업을 기다리든 다른 서브 에이전트를 기다리든 쓸 수 있음. GPT 작업자가 무조건 쓰게 강제할 방법은 없어서 완벽하진 않지만, 나한테는 대부분 잘 먹힘: link. 더 개선할 팁 있으면 환영함. 써보고 박살 나면 내가 고칠게.


