CodeRim
코딩 도구의 사용 한도와 작업 상태, 로컬 토큰 기록을 화면 가장자리에서 확인하는 macOS·Windows 앱

- 맡은 일
- 제품 기획 · AI 생성 코드 리뷰 · 검증 기준 수립
- 참여 방식
- 개인 프로젝트 · AI 활용
- 기간
- 기간 미기록
만든 이유
코딩 도구를 오가며 사용 한도를 확인하는 일이 번거로워 만들었습니다. CodeRim은 한도와 초기화 시각, 진행 중인 작업을 화면 가장자리의 작은 노치에 보여 줍니다.
화면 속 사용량과 작업명은 예시 데이터입니다.
주요 기능
- Codex·Claude Code 등 도구별 사용 한도와 초기화 시각 확인. 연결 방식과 제공 정보는 도구마다 다릅니다.
- Codex·Claude Code의 로컬 세션 기록을 날짜·모델·프로젝트·세션별로 조회
- 작업 중이거나 사용자 입력을 기다리는 세션 표시
- 저장한 Codex·Claude Code 계정을 사용자가 직접 전환
- macOS 메뉴 막대·위젯, Windows 트레이, 양쪽 플랫폼의 설정 화면·노치·CLI 지원
로컬 분석은 이 컴퓨터에 남은 기록을 기준으로 합니다. 위 화면은 예시 데이터로 토큰 유형별 사용량과 세션 기록, 모델별 추이를 보여 줍니다.
맡은 역할
개인 프로젝트이며, 코드는 AI로 작성했습니다. 기획·구현·문서 작성 전반에 AI를 활용했고, 저는 필요한 기능과 플랫폼별 요구사항을 정리하고 생성된 코드를 검토했습니다. 로그 집계와 계정 전환 등의 수정 방향을 정하고, 테스트·문서·실제 앱을 대조하며 오류와 확인한 범위를 기록했습니다.
트러블슈팅
- 01
사용량이 실제보다 크게 표시됐습니다.
이전 집계100 + 130 = 230 누적값을 중복 합산
현재 집계130 − 100 = 30 이번 증가분만 기록
해결 과정과 코드 보기
원인
세션 로그의 토큰 값은 그 시점까지의 누적값인데, 각 기록을 새 사용량으로 더해 합계가 커졌습니다.
해결 방법
정상 기록은 이전 누적값을 빼서 증가분만 저장했습니다. 카운터가 줄어든 기록은 따로 분리했습니다.
결과
100 다음에 130이 기록되면 이번 사용량을 30으로 집계합니다. 카운터가 줄어든 기록은 부분 데이터로 표시합니다.
실제 코드와 출처
앞의 누적값을 빼서 이번 증가분만 얻고, 값이 줄었을 때는 0 아래로 내려가지 않게 처리한 코드입니다.
var delta = cumulative .SubtractFloorAtZero( previous); - 02
사용량 수치마다 기준이 달랐습니다.
이전 표시남은 한도와 로컬 사용량을 같은 범위처럼 비교
현재 표시서비스 남은 한도 / 이 기기 사용량으로 구분
해결 과정 보기
원인
서비스가 알려 주는 남은 한도와 이 컴퓨터 로그의 사용량은 수집 범위가 달라, 숫자의 차이가 오류처럼 보였습니다.
해결 방법
서비스의 남은 한도와 이 기기의 로그 사용량을 별도 항목으로 나누고 각 수치의 출처를 적었습니다.
결과
두 숫자를 다른 기준으로 읽을 수 있습니다. 다른 기기의 사용량은 로컬 집계에 포함되지 않습니다.
기술 구성
| 영역 | 기술 | 용도 |
|---|---|---|
| macOS | Swift · SwiftUI · AppKit | 메뉴 막대, 노치, 설정 화면 |
| 로컬 데이터 | SQLite | 세션 기록과 사용량 분석 |
| macOS 확장 | WidgetKit · Sparkle | 위젯과 앱 업데이트 |
| Windows | C# · WPF · .NET | 트레이, 노치, 설정, CLI, MSI 설치 |
| 웹·자동화 | JavaScript · Python · PowerShell · Shell | 소개 사이트와 빌드·검증 스크립트 |
배포
macOS 앱과 Windows 11 미리보기를 GitHub Releases에 공개하고 있습니다. 두 플랫폼의 릴리스 버전은 별도로 관리합니다.
프로젝트 기술 구성
- SwiftUI
- AppKit
- WidgetKit
- SQLite
- C#
- WPF
- .NET
- Swift
- JavaScript
- Python
- PowerShell
- Shell

