📌 이 글은 Claude Code와 Codex를 같이 쓰면서 "지금 한도가 얼마나 남았지?"를 한눈에 보는 위젯을 AI랑 같이 만든 기록 1편입니다. 핵심은 하나, 위젯 자체는 토큰을 한 개도 쓰지 않게 만드는 것이었어요. 결론만 궁금하시면 맨 아래 최종 요약으로 가셔도 됩니다.
Claude Code에 서브에이전트를 붙이고, 리뷰는 Codex한테 넘기고, 요약·정리 같은 가벼운 일은 로컬 LLM에 맡기다 보니 궁금한 게 생겼어요. "지금 누가, 어떤 모델로, 얼마나 쓰고 있지?" 매번 각 앱에 들어가서 확인하기가 번거롭더라고요. 그래서 맥미니 화면(저는 아이패드를 화면으로 써요)에 늘 떠 있는 작은 창을 만들기로 했습니다.
📎 앞에서 이야기한 것들이 궁금하신 분들은 지난 포스팅을 참고하세요 → 서브에이전트 붙이기 · Codex 리뷰어 붙이기 · 로컬 LLM으로 토큰 아끼기
뭘 보여 주는 위젯인가?

- 에이전트별 한도: Claude Code와 Codex의 5시간·주간 사용률, 언제 리셋되는지.
- 지금 동작 중인지: "● 동작 중 2:56"처럼 일하는 중이면 경과 시간까지.
- 최근 모델·마지막 활동: 마지막에 어떤 모델로 일했는지, 몇 분 전에 일했는지.
- 맥미니 상태: CPU·GPU·메모리, 로컬 모델이 올라와 있는지.
그리고 제일 궁금했던 "누가, 어떤 모델로, 얼마나"는 표로 봐요. 메인 대화와 서브에이전트, Codex 작업, 로컬 LLM까지 한 줄씩 나오고, 현재 5시간·오늘·7일·30일로 기간을 바꿔 볼 수 있어요.

표에서 이름 옆에 ⚠가 붙은 건 거의 안 부르는 서브에이전트예요. 이걸 보다가 "공들여 만든 팀원 중 실제로 일하는 건 몇이나 될까?" 싶어서, 제 환경과 아무것도 안 한 기본 상태를 같은 과제로 붙여 보기도 했어요. 거기서도 (당시) 7명 중 실제로 불린 건 리뷰어 하나였고요.
📎 궁금하신 분들은 지난 「내 Claude Code 환경 vs 기본 상태, 같은 과제로 붙여 봤다」 포스팅을 참고하세요 → 글 보러 가기
캡처에 보이는 팀원 이름이 서브에이전트 글이랑 좀 다르죠? 그 사이에 팀을 한 번 다시 짰어요. docs-researcher는 researcher로, test-runner는 qa로, longdoc-analyst는 analyst로 바꾸고, 코드 짜는 implementer랑 예비 리뷰어 backup-reviewer를 새로 넣고, 로컬 LLM에 일을 넘기던 text-drafter는 정리했어요. 그래서 지금은 8명이에요. AI들을 회사처럼 굴리게 된 이야기는 따로 정리해서 올릴게요.
대화 내용은 일부러 안 보여 줘요. 제가 입력한 문장엔 비밀번호나 키 같은 게 섞일 수 있어서, 사용자 문장은 화면에 띄우지도 저장하지도 않는다는 규칙을 처음부터 넣었어요.
제일 중요한 원칙: 토큰 0
한도를 아끼려고 만드는 위젯이 한도를 먹으면 웃기잖아요. 그래서 위젯은 AI 모델을 한 번도 부르지 않는다를 1번 원칙으로 정했어요. 모든 숫자는 작은 파이썬 프로그램이 맥 안의 파일과 명령어에서 읽어 와요.
- Claude 한도: Claude Code 화면 아래 상태 줄(statusline)을 그릴 때 넘겨주는 정보에 5시간·주간 사용률이 들어 있어요. 그걸 받아 둡니다.
- Codex 한도: Codex에 들어 있는 "계정 한도 조회" 기능을 30초마다 불러요. 모델에게 말을 거는 게 아니라 숫자만 묻는 거예요.
- 누가 일했나: 각 프로그램이 맥에 남기는 작업 기록 파일에서 시각·모델 이름·도구 사용 횟수만 읽어요.

정말 0인지 세 가지로 확인했다
"사용률이 안 늘었으니 0" 하고 끝내면 아주 조금씩 쓰는 건 못 잡아요. 그래서 세 가지를 다 했어요.
| 확인 | 어떻게 | 결과 |
|---|---|---|
| 코드 | 수집 프로그램에 모델을 부르는 코드가 있는지 확인 | 없음, 통과 |
| 네트워크 | 75초 동안 맥의 모든 인터넷 연결을 기록해 수집 프로그램 것과 대조 | Anthropic·OpenAI 모델 주소 연결 없음, 통과 |
| 사용률 | 15분 동안 위젯만 켜 두고 Codex 사용률을 30초마다 31번 측정 | 5시간 29.0%·주간 6.0% 그대로, 통과 |
네트워크 확인에서 하나 걸린 게 있었어요. Codex 한도 조회가 실행될 때마다 chatgpt.com에 연결을 열더라고요. 문제는 ChatGPT 계정으로 쓰는 Codex는 모델 호출도 같은 주소를 써서 주소만으로는 구분이 안 된다는 거예요. 그래서 "코드상 한도 조회만 한다" + "15분 동안 사용률이 그대로였다" 두 가지를 같이 근거로 삼았어요.
삽질: 데스크톱 앱에서는 Claude 한도가 안 들어온다
만들고 나서 바로 막혔어요. 저는 Claude Code를 터미널보다 데스크톱 앱(Code 탭)에서 더 많이 쓰는데, 데스크톱 앱은 그 상태 줄을 아예 실행하지 않더라고요. 상태 줄이 없으니 Claude 한도 숫자가 안 들어오고, 위젯엔 계속 옛날 값만 남았어요.

결국 원칙에 딱 하나 예외를 뒀어요. 데스크톱 앱으로 일하는 중일 때만 아주 짧은 질문을 작은 모델(haiku)에 보내서, 그 답에 딸려 오는 한도 정보를 읽는 거예요. 주기는 기본 2분이고 설정에서 1~60분으로 바꿀 수 있어요. 이 예외는 제가 직접 승인했고, 화면에도 "짧은 핑으로 주기적으로 확인(측정 시각)"이라고 솔직하게 적어 두었어요. 위 캡처의 "데스크톱 앱 사용 중 · 짧은 핑으로 주기적으로 확인" 줄이 그거예요.
작은 규칙 하나: 모르면 0%라고 하지 않기
숫자를 못 가져왔을 때 0%로 보여 주면 "한도 넉넉하네" 하고 착각하기 딱 좋아요. 그래서 못 가져온 값은 "알 수 없음"과 마지막으로 성공한 시각으로 보여 주고, 너무 오래된 값(수집 주기의 3배, 90초)은 회색으로 바꿔요. 별것 아닌 것 같은데 위젯을 믿고 쓰게 만드는 데 이게 제일 컸어요.
마치며
요구사항 문서를 먼저 쓰고, 다른 AI에게 반대 의견(적대적 리뷰)을 받아 고친 뒤에 만들기 시작했어요. 첫날에 기본 기능이 다 돌았고요. 다음 2편에서는 이 위젯을 아이폰·아이패드에서 보고, 한도가 차면 알림을 받고, 맥미니를 켜면 저절로 뜨게 만든 이야기, 그리고 로컬 LLM 사용량까지 같이 세게 된 과정을 써 볼게요.
참고로 "요구사항 문서부터 쓰고, 할 일은 백로그로 나눈다"는 순서는 제 모든 프로젝트의 공통 규칙이에요.
📎 궁금하신 분들은 지난 「백로그 CLI로 AI 여러 명 일 나누기|순서 안 맞으면 거절하는 300줄 도구」 포스팅을 참고하세요 → 글 보러 가기
최종 요약
✅ 결론만 보고 싶은 분
1. Claude Code·Codex 한도, 동작 중 여부, 최근 모델, 맥 상태를 한 창에서 보는 위젯.
2. 원칙은 토큰 0 — 숫자는 상태 줄 정보, Codex 한도 조회, 맥 안의 기록 파일에서만 읽는다.
3. 코드·네트워크·사용률(15분 31회 측정) 세 가지로 확인해 통과.
4. 데스크톱 앱은 상태 줄을 안 띄워서 Claude 한도가 안 들어옴 → 일할 때만 짧은 핑, 예외로 명시.
5. 모르는 값은 0%가 아니라 "알 수 없음 + 마지막 성공 시각".
도움이 됐다면 공유 부탁드립니다! 한도 어떻게 확인하고 계신지 댓글로 알려 주세요.