AI 비용이 안 줄던 진짜 이유, 안 보여서
AI 도구의 사용량은 이미 어딘가에 숫자로 존재합니다. 안 보일 뿐입니다. 화면에 안 뜨는 숫자는 없는 것과 같아서, 쓰던 에이전트 앱의 타이틀바에 작은 표시를 하나 붙였습니다. 지금 쓰는 프로바이더, 모델, 5시간 한도 사용률, 1주 한도 사용률. 새 데이터를 만든 게 아니라 이미 앱 안에서 돌던 값을 꺼내 눈에 보이는 자리로 옮긴 작업입니다. 다만 원래 원하던 위치에는 못 붙였습니다. 그 이유와 대안까지 그대로 남깁니다.
정액 구독인데 왜 사용량이 통제가 안 될까요
명세가 오지 않기 때문입니다. 제 자리에서 이건 개발 문제가 아니라 관리 문제였습니다. 회사 경비는 매달 명세가 나오니까 어디에 얼마가 나갔는지 사후에라도 확인이 되는데, AI 도구는 정액 구독 안에서 한도를 태우는 구조라 명세가 아니라 남은 한도라는 형태로 소진됩니다. 명세는 안 옵니다. 한도는 조용히 줄어듭니다.
특히 문제가 된 건 두 가지였습니다.
- 지금 어떤 모델로 돌고 있는지 모릅니다. 무거운 모델로 단순 정리 작업을 시키고 있어도 화면에는 아무 티가 안 납니다.
- 남은 한도를 모릅니다. 오전에 큰 작업을 몇 번 돌려놓으면 정작 오후에 급한 일이 들어왔을 때 갑자기 막힐 수 있는데, 막히기 전까지는 그걸 알 방법이 없습니다.
예산 관리에서 흔히 겪는 구조와 같았습니다. 잔액이 안 보이는 계정은 대개 초과됩니다. 반대로 잔액이 눈앞에 계속 보이면 사람은 시키지 않아도 알아서 행동을 바꿉니다. 예산 담당을 해본 사람이면 다 아는 이야기입니다. 제게 필요했던 건 정교한 원가 분석이 아니었습니다. 눈에 계속 들어오는 잔량 표시 하나였습니다.
처음 요청은 한 줄이었습니다
요구는 단순했습니다. 각 세션 대화창 위에 지금 쓰는 프로바이더, 모델, 5시간 사용량, 1주 사용량을 표시할 수 있느냐. 실무자 말로 옮기면 “잔액을 헤더에 박아달라”입니다. 여기서 시작해 실제로 어디까지 갔는지가 이 글의 내용입니다.
처음에는 다른 방법도 잠깐 생각했습니다. 매시간 사용량을 캡처해서 텔레그램으로 보내는 방식입니다. 알림이 따로 오니 놓칠 일은 없겠다 싶었는데, 막상 하루만 상상해봐도 알림이 계속 쌓이면 결국 무시하게 될 게 뻔했습니다. 확인하려고 다른 앱을 열어야 하는 구조 자체가 번거로움을 하나 더 얹는 셈이라 접었습니다. 지금 보고 있는 화면 안에 값이 떠 있는 것과, 확인하려면 딴 곳을 봐야 하는 것은 완전히 다른 이야기였습니다.

데이터는 이미 다 있었습니다
조사해 보니 새로 계산할 게 없었습니다. 프로바이더와 모델은 앱 자체가 이미 상태값으로 들고 있었고, 그 값은 지금 포커스된 세션을 따라 알아서 바뀌었습니다. 5시간 한도와 1주 한도도 마찬가지였습니다. 앱 안에는 계정 사용량을 조회하는 모듈이 이미 들어 있었습니다. 그 모듈이 제공사의 사용량 조회 경로를 읽어 5시간 창과 7일 창을 그대로 돌려주고 있었습니다.
한 번 호출해 봤습니다. 바로 나왔습니다. 5시간 한도 20퍼센트 사용에 26분 뒤 리셋, 1주 한도 16퍼센트 사용에 2일 21시간 뒤 리셋. 이 숫자를 처음 본 순간이 사실상 이 작업의 출발점이었습니다. 이미 있는데 아무도 안 보던 숫자였으니까요.
여기서 남는 교훈이 하나 있습니다. 도구를 도입하고 나서 “이 기능이 없네”라고 결론 내리기 전에, 값 자체는 있는데 표시가 안 되는 것인지부터 확인하는 편이 좋다는 겁니다. 제 경우는 전부 후자였습니다. 없는 기능을 만든 게 아닙니다. 있는 값을 보이는 자리로 옮긴 겁니다.

원하던 자리에는 못 붙였습니다
여기서 막혔습니다. 그런데 이 대목이 이 작업에서 제일 쓸모 있는 부분이기도 합니다.
앱은 플러그인이 화면에 끼어들 수 있는 자리를 미리 정해두고 있었습니다. 타이틀바의 왼쪽, 가운데, 오른쪽, 상태바, 입력창 위. 제가 원했던 세션별 채팅 헤더에는 그런 자리가 아예 없었습니다. 게다가 그 헤더는 여러 창을 띄워도 주 패널에만 렌더링되는 구조라 헤더 자체가 하나뿐이었습니다. “탭마다 각각 표시”는 앱 코어를 직접 고치지 않는 한 불가능했습니다.
코어를 고치는 선택지는 있었습니다. 다만 앱이 업데이트될 때마다 그 수정을 매번 다시 적용해야 하는데, 개인 도구 하나 때문에 그 유지보수를 평생 떠안는 건 비용이 더 크다고 봤습니다. 그래서 안 했습니다. 요구를 100퍼센트 채우는 대신 코어를 안 건드리는 범위에서 90퍼센트를 가져가는 쪽을 택했습니다.
그래서 타이틀바로 옮겼습니다
최종 형태는 타이틀바 가운데에 붙는 작은 칩입니다. 프로바이더, 모델, 5시간과 1주 사용률이 막대와 퍼센트로 나란히 붙어 뜨는 형태고, 폭은 글자 몇 개 정도라 다른 표시를 가리지 않습니다. 세션마다 따로 뜨지는 않습니다. 대신 포커스된 세션을 따라가기 때문에 지금 보고 있는 창의 모델은 정확히 반영됩니다.
구성은 세 조각입니다.
| 조각 | 하는 일 |
|---|---|
| 백엔드 API 파일 | 앱 내부의 계정 사용량 조회 함수를 JSON으로 노출합니다. 60초 캐시를 두고, 조회에 실패해도 오류를 던지지 않고 “사용 불가”만 돌려줍니다 |
| 매니페스트 | 그 백엔드를 플러그인 전용 주소에 붙입니다 |
| 화면 쪽 스크립트 | 타이틀바 가운데 칩을 그립니다 |
신경 쓴 건 두 가지였습니다. 하나는 60초 캐시. 표시용 정보 하나 때문에 외부 조회를 계속 보내면 그게 또 비용이니까요. 다른 하나는 실패 처리입니다. 사용량 조회가 안 되더라도 앱이 멈추면 안 되니, 실패하면 아무 소리 없이 “값 없음”으로만 표시되게 했습니다. 설정 파일은 손대기 전에 백업본을 남겼습니다.
검증과 남은 절차
만들었다고 끝이 아닙니다. 백엔드 로직을 앱 환경에서 단독 실행해서 프로바이더, 모델, 5시간 24퍼센트, 1주 17퍼센트라는 실제 값이 돌아오는 것까지 눈으로 봤습니다. 앱이 이 플러그인을 사용자 설치분으로 인식하고 활성 목록에 넣었는지도 따로 확인했습니다.
그런데도 화면에는 안 떴습니다. 두 단계가 남아 있었기 때문입니다.
- 게이트웨이 재시작. 그래야 백엔드 파일이 실제로 읽힙니다. 재시작 전에는 모델과 프로바이더만 뜨고 사용량 자리는 비어 있었습니다.
- 설정에서 플러그인 토글을 켜는 일. 화면 쪽 스위치는 백엔드와 별개이고 기본값이 꺼짐이라, 목록에 안 보이면 명령 팔레트에서 데스크톱 플러그인 새로고침을 한 번 돌리고 넘어가면 됩니다.
이 순서를 모르면 “만들었다는데 왜 안 보이냐”에서 끝납니다. 저도 거기서 한참 멈춰 있었습니다.
곁가지로 겪은 것 두 개
작업 도중에 입력창이 갑자기 쪼그라들었습니다. 당연히 방금 붙인 플러그인을 의심했습니다. 그런데 그때는 화면 쪽 스위치가 꺼져 있었고 게이트웨이도 재시작 전이라 백엔드가 아예 로드되지 않은 상태였습니다. 원인은 따로 있었습니다. 입력창을 위로 살짝 끌면 도크에서 떨어져 나와 떠다니는 작은 박스가 되는 기능이었습니다. 버그가 아니라 제스처였습니다. 가장자리를 더블클릭하니 원래 자리로 돌아왔습니다.
또 하나는 설정 화면을 자동으로 열어보려다 실패한 일입니다. 사소하지만 기록해 둡니다. 화면 좌표를 잘못 넘기는 바람에 클릭이 엉뚱한 데로 갔고, 몇 번 시도하다 그냥 손으로 톱니바퀴를 눌렀습니다. 그게 빨랐습니다. 한 번 누르고 끝날 일에 자동화를 붙이면 오히려 시간을 잃습니다.
옆 팀이 같은 걸 붙이고 싶다면
이 작업 이후로 옆 팀에서도 비슷한 걸 붙일 수 있느냐는 질문을 몇 번 받았습니다. 대답은 매번 같았습니다. 먼저 그 앱이 플러그인 형태로 화면에 끼어들 자리를 열어두고 있는지부터 봐야 합니다. 자리가 없으면 이번처럼 타협할 위치를 찾는 데서 다시 시작해야 하고, 그 타협이 아예 불가능한 구조도 있습니다.
두 번째로 볼 것은 표시하려는 값이 이미 앱 안에 상태값으로 존재하는지입니다. 없는 값을 새로 계산해서 보여주는 일과, 있는 값을 꺼내 보여주는 일은 난이도가 다릅니다. 이번 건은 후자였기 때문에 짧게 끝났습니다. 앱 자체에 사용량을 계산하는 로직이 없는 도구라면 이 정도 작업으로는 안 됩니다.
세 번째는 캐시가 가능한 값인지입니다. 실시간으로 계속 바뀌어야 하는 값이면 60초 캐시 같은 여유를 둘 수 없고, 그러면 조회 비용이 계속 붙습니다. 표시용 값이 잔량처럼 몇 분 단위로 움직여도 무방한 성격인지가 이 방식이 통하는지를 가르는 조건이었습니다.
퍼센트 두 개가 화면에 떠 있고 나서
얻은 것은 기능이 아니라 가시성입니다. 예전에는 “요즘 AI 좀 많이 쓰는 것 같은데” 수준의 감이었다면, 지금은 화면 위쪽에 퍼센트 두 개가 항상 떠 있습니다. 숫자가 보이면 판단이 달라집니다. 이건 확실합니다. 1주 사용률이 올라가 있으면 단순 작업은 알아서 가벼운 쪽으로 돌리게 됩니다.
옆자리 동료에게는 이걸 잔액 표시라고 설명했습니다. 카드값 문자메시지처럼, 쓸 때마다 남은 돈이 눈에 뜨면 씀씀이가 저절로 조심스러워지는 것과 같은 원리라고 하니 다들 바로 알아들었습니다.
남기고 싶은 요점은 이렇습니다.
- 값이 없어서 안 보이는 게 아니라 그냥 표시가 없어서 안 보이는 경우가 생각보다 많습니다. 먼저 볼 것은 데이터 유무입니다.
- 원하는 자리에 못 붙는다면 붙일 수 있는 자리 중 가장 눈에 띄는 곳으로 타협합니다. 코어를 고쳐 완벽하게 만드는 건 업데이트마다 되풀이되는 부채가 되니까요.
- 표시용 조회는 캐시를 걸고 실패해도 조용히 넘어가게 만들었습니다. 잔량 보려고 붙인 장치가 정작 본 작업을 멈춰 세우면 안 되니까요.
- 만들었다는 것과 화면에 떴다는 것은 다릅니다. 재시작과 토글까지가 한 작업입니다. 거기까지 해야 끝납니다.
이어서 읽을 기록