← today i learned

AI 구독 쿼터 표시: 사용률 대신 페이스로 5색을 정하는 법

터미널에서 AI 구독 쿼터를 그려 주는 개인 스크립트의 색 규칙을 갈아엎었다. 절대 사용률 임계 대신 ‘앞으로 낼 수 있는 배속’으로 판정하고, 이제 결과를 청록·초록·노랑·주황·빨강 다섯 단계로 보여 준다. 같은 80%가 창 중반이면 빨강, 리셋 직전이면 청록이 되는 구조를 네 곡선으로 그려 봤다.

kil9conf · usage 스크립트 · 2026-08-10 개정

노트북 작업 중 의자에 기대어 벽의 초록-노랑-빨강 게이지를 시큰둥하게 곁눈질하는 리브. 바늘은 노랑 초입을 가리킨다.
처음에는 세 단계였다. 판정 축은 그대로 두고 2026-08-10에 다섯 단계로 세분했다. 삽화: Codex 이미지 생성
리브

관리자님이 세 단계로는 페이스 차이가 너무 뭉개진다고 하셔서, 기존 경계를 옮기지 않고 두 단계를 끼워 넣었습니다. 판정 로직은 그대로고 표시 해상도만 높인 셈입니다.

문제: 임계는 시점을 모른다#

구 규칙은 단순했다. 사용률이 50% 미만이면 초록, 80% 미만이면 노랑, 그 이상이면 빨강. 문제는 이 임계가 지금이 창의 어디쯤인지를 전혀 모른다는 것이다.

7일 창의 리셋을 6시간 앞두고 80%를 썼다면, 사실은 20%를 남기고 창을 끝내는 중이다. 오히려 덜 쓴 것이다. 반대로 창이 이틀째인데 80%라면 남은 닷새를 20%로 버텨야 한다. 같은 숫자가 시점에 따라 정반대의 뜻을 갖는데, 색은 둘 다 같은 색을 칠했다.

축 교체: %가 아니라 배속 s#

그래서 색의 축을 사용률에서 앞으로 낼 수 있는 배속으로 바꿨다. 정상 속도를 “쿼터를 창 길이에 딱 맞춰 소진하는 속도”라고 하면,

s = 남은 쿼터 / (남은 시간 × 정상 속도)
  = (100 − 사용률) / (100 × (1 − 경과율))

s=1이면 지금부터 정상 속도로 쭉 써도 리셋에 딱 맞는다. s=2면 두 배로 써도 되고, s=0.5면 절반으로 줄여야 한다. 몇 가지 값을 넣어 보면:

이 축 위에서 색은 숫자가 아니라 행동 지시가 된다. 청록은 “더 밟아도 됨”, 초록은 “지금 페이스가 적정”, 노랑은 “살짝 빠르지만 만회 가능”, 주황은 “감속 필요”, 빨강은 “이 페이스면 창 끝 전에 소진”이다.

임계도 같이 움직인다: 네 개의 곡선#

s를 고정값과 비교하면 반쪽짜리다. 창 초반의 s=0.8은 만회할 시간이 많아 가벼운 신호지만, 리셋 직전의 s=0.8은 진짜 경고다. 그래서 각 단계의 요구치 τ도 경과율 e를 따라 선형으로 올라간다:

τ(e) = τ시작 + (τ리셋 − τ시작) × e
청록: s ≥ τ청록(e)  초록: s ≥ τ초록(e)
노랑: s ≥ τ노랑(e)  주황: s ≥ τ주황(e)
빨강: 그 아래

이걸 다시 사용률 축으로 펴면 경계식은 경계(e) = 100 − 100·(1−e)·τ(e), e의 2차 곡선이 된다. 예전의 두 경계는 그대로 두고, 초록 위에 청록 경계 하나와 초록·주황 사이에 노랑 경계 하나를 끼웠다. 7일 창을 네 곡선으로 그리면 이렇다.

여유 적정 빠름 감속 소진 정속과 교차 · 2.8일 정속 소진선 (사용률 = 경과율) 95%부터는 무조건 빨강 3.5일 경과 · 80% → 빨강 리셋 8시간 전 · 80% → 청록 02550 75100 01일2일 3일4일5일 6일7일 사용률 % 창 경과 (7d 창)
7d 창의 5색 지도. 네 곡선이 청록·초록·노랑·주황의 하한이고, 그 아래 배속은 빨강이다. 초록 경계는 초반엔 정속 소진선보다 위에 있다가 2.8일 지점에서 아래로 내려간다. 같은 80%라도 3.5일 경과면 빨강, 리셋 8시간 전이면 청록이다.

초록 경계가 정속 소진선(사용률 = 경과율)을 가로지르는 지점이 τ=1이 되는 순간이다. 그 전에는 경과율보다 앞서 써도 초록이다. 만회할 시간이 있기 때문이다. 그 후에는 정속으로 써도 노랑이다. 리셋까지 여유를 남겨 두라는 뜻이다. 고정 임계를 여러 개 박아서는 이 태도 변화가 안 나오지만, 곡선이면 저절로 나온다.

그림의 두 점이 핵심 사례다. 같은 80%인데 3.5일 경과 지점에서는 s=0.4라 빨강이고, 리셋 8시간 전에는 s=4.0이라 청록이다.

세 단계에서 다섯 단계로#

초록·노랑·빨강 세 단계만으로는 “문제 없음” 안의 큰 여유와 “감속 필요” 직전의 가벼운 과속이 같은 색에 묶였다. 그래서 기존 초록 경계와 빨강 경계는 움직이지 않고, 초록 위에 청록 경계를 하나 더하고 둘 사이에 노랑 경계를 끼웠다. 새 노랑 경계는 배속 척도에 맞춰 기존 두 경계의 기하 중점으로 잡았다.

청록 경계의 시작값은 1을 넘기지 않는다. 창이 막 열렸을 때 하나도 쓰지 않았어도 s는 정확히 1이라, 시작 요구치를 1보다 크게 잡으면 청록이 처음부터 나오지 않기 때문이다. 색은 ANSI 256 팔레트의 청록 73, 초록 108, 노랑 221, 주황 208, 빨강 167을 쓴다. 노랑과 주황은 처음 고른 조합이 거의 같은 앰버로 보여 색상각과 명도 차이를 더 벌렸다.

5h 창과 7d 창은 태도가 다르다#

창 길이별로 밴드를 나눴다. 5시간 창은 앉아서 한 시간 몰아 쓰고 몇 시간 비우는 버스트가 정상 사용 패턴이다. 창을 열자마자 40%를 써도 초록으로 봐준다. 7일 창은 그렇게 봐주다가는 한 주가 무너지므로 훨씬 일찍 조인다. 대신 서비스로는 나누지 않았다. Codex의 7d도 Claude의 7d와 같은 규칙을 쓴다. 창의 성격은 길이가 정하지, 로고가 정하는 게 아니다.

구 규칙 · 3단계 신 규칙 · 5h 5단계 신 규칙 · 7d 5단계 교차 4.4h 교차 2.8일 050100 8050 0 → 리셋 0 → 5h 0 → 7d 여유 적정 빠름 감속 소진
구 규칙은 수평선 두 개로 만든 3단계, 신 규칙은 창 길이별 네 곡선으로 만든 5단계다. 초록 경계가 정속 소진선과 만나는 τ=1 지점은 5h 창이 경과 89%(4.4h), 7d 창이 경과 40%(2.8일)다. 5h 창이 훨씬 오래 봐준다. 95% 못박기는 이 그림에서 생략했다.
τ청록τ초록τ노랑τ주황
5h 급 (≤24h)0.95 → 1.700.60 → 1.050.49 → 0.890.40 → 0.75
7d 급0.98 → 1.600.90 → 1.150.67 → 1.020.50 → 0.90

표의 값은 모두 시작 → 리셋 순서다. 초록 경계가 정속과 만나는 지점은 5h 창이 경과 89%(4.4h), 7d 창이 경과 40%(2.8일)다. 리셋 쪽 초록 τ가 둘 다 1보다 큰 것도 의도다. 창 끝에서는 정속 유지 가능(s=1)으로는 부족하고, 5-15%의 여유를 요구한다. 추정치의 오차와 마지막 순간의 몰아 쓰기를 흡수할 쿠션이다.

잔가지#

리브

같은 색 규칙을 상태줄 위젯에도 얹어 봤는데, 보기에 안 예뻐서 몇 시간 만에 되돌렸다고 합니다. 알고리즘이 맞는 것과 보기 좋은 것은 별개의 문제였습니다. usage 화면의 규칙은 그대로 남았습니다.

남은 것#

밴드 숫자 여덟 쌍은 실측이 아니라 사용 패턴에 대한 가설이다. 며칠 써 보면서 빠름이 너무 자주 뜨는지, 감속과 소진이 너무 늦게 뜨는지를 보고 조정하게 될 것이다. 판정 축과 기존 핵심 경계를 유지한 채 표시 단계를 더 잘게 나눴다는 것이 이번 개정의 실속이다.

리브

다섯 색이 늘어난 것처럼 보여도 계산식은 하나입니다. 나중에 손댈 곳이 한 군데라는 점은 그대로라서 마음에 듭니다.