Token Weather: Claude Code 컨텍스트 창 예보
Claude Code 컨텍스트 창 사용량을 날씨 예보처럼 프롬프트 위에 보여 주고, 최근 턴의 추이와 프롬프트 캐시 카운트다운을 함께 표시합니다.
권한
- 파일 읽기컴퓨터의 파일을 읽고 디렉터리 목록을 볼 수 있습니다($.fs.read / list / stat / exists).
- 명령어 실행컴퓨터에서 셸 프로그램을 실행할 수 있습니다($.process.run / spawn). 정확히 어떤 프로그램인지는 소스를 확인하세요.
- UI 변경Claude Code 화면에 밴드, 패널, 상태 텍스트, 토스트를 그립니다(ui.render / $.ui.*).
- 데이터 저장플러그인 전용 저장소에 세션 간 데이터를 보관합니다($.store.*).
- 테스트 버전
- v2.1.307
- 마지막 테스트
- 필요 버전
- Claude Code ≥ 2.1.287
- 표시 위치
- 프롬프트 위
이 모드는 무엇을 하나요?
Token Weather는 Hamza Zafar(hamzafer)가 만든 커뮤니티 모드로, 그의 claude-code-mods 모음에 포함되어 있습니다. 프롬프트 위의 한 줄에 Claude Code 컨텍스트 창 예보를 보여 줍니다. 창이 얼마나 찼는지를 날씨 단어와 아이콘으로 나타내고, 사용률, 창 크기 대비 토큰 수, 최근 턴의 스파크라인, 그리고 프롬프트 캐시가 얼마나 더 따뜻하게 유지되는지 알려 주는 카운트다운이 이어집니다.
예보는 ☀ Clear(25% 미만)에서 ☁ Cloudy, ☂ Showers, ☇ Storm을 거쳐 90% 이상의 ↯ Compact soon까지 바뀝니다. 옆의 last turns는 최대 12개의 측정값을 ▁▂▃▄▅▆▇█로 그리며, 그중 가장 큰 값에 맞춰 크기가 조정됩니다. 이어서 직전 턴에서 늘거나 줄어든 양이 ▲ +39.4k last turn처럼 표시됩니다. 줄이 충분히 넓으면 ❄ cache 4:12가 캐시 만료 시점까지 카운트다운하고, 마지막 1분에는 노란색이 되며, 만료 후에는 ❄ cache cold로 바뀝니다.
Token Weather는 우리 사이트의 Context Bar, Context Meter, Cache Clock과 일부 겹칩니다. Context Bar는 창을 카테고리별로 나누고, Context Meter는 상태 표시줄에 사용률과 요금제 사용량을 보여 주며, Cache Clock은 상태 표시줄 아래에 캐시 세부 정보를 보여 줍니다. Token Weather는 한 줄짜리 판정과 추이를 보여 줍니다. 작성자의 마켓플레이스에 등록된 버전은 0.2.2입니다.
데모
녹화에서는 작은 데모 프로젝트에서 이 모드를 불러온 Claude Code를 시작합니다. 프롬프트를 보내기 전에는 입력창 위의 줄이 ☀ Clear 0% of context 0 / 1M입니다. 그다음 Claude에게 README.md를 읽고 이 프로젝트가 무엇인지 한 문장으로 말해 달라고 요청합니다. 첫 요청이 실행되는 동안 ❄ cache 5:00 카운트다운이 나타납니다. 턴이 끝나면 줄은 ☀ Clear 4% of context 39.4k / 1M, 스파크라인, ▲ +39.4k last turn, ❄ cache 60:00을 보여 줍니다. 응답이 1시간짜리 캐시를 기록했기 때문입니다.
설치
설치 블록에 있는 방법 중 아무것이나 사용하세요. 모두 작성자의 마켓플레이스에서 직접 설치합니다. 이 줄은 다음 세션을 시작할 때 나타납니다. 플러그인 옵션은 프롬프트 캐시 유효 시간 하나뿐입니다.
$ install token-weather
Claude Code 2.1.287 이상 필요
작성자의 마켓플레이스에서 설치: hamzafer/claude-code-mods
1.Claude Code 안에서 한 줄로
/plugin install token-weather --marketplace hamzafer/claude-code-mods실행 중인 세션(v2.1.275 이상)에 붙여 넣으세요. Claude Code가 먼저 마켓플레이스 추가 여부를 묻습니다.
2.셸에서 설치
claude plugin marketplace add hamzafer/claude-code-mods claude plugin install token-weather@claude-code-mods그런 다음 이미 열려 있는 세션에서 /reload-plugins를 실행하세요.
3.설치하지 않고 사용해 보기
git clone https://github.com/hamzafer/claude-code-mods claude --plugin-dir ./claude-code-mods/mods/token-weather한 세션에서만 모드를 불러옵니다. 설정에는 아무것도 추가되지 않습니다.
작동 방식
측정값은 호스트가 보관하는 $.state 아톰에 저장되므로 핫 리로드 후에도 남아 있습니다. 측정은 세션 시작 시와 메인 에이전트의 각 턴이 끝난 뒤에, $.session.usage의 컨텍스트 정보로 이루어집니다. 캐시 시계는 턴 안의 도구 루프 요청을 포함해, 메인 스레드의 모델 요청이 끝날 때마다 다시 시작됩니다. 다음은 hooks/register.tsx의 turn.step 핸들러입니다.
on('turn.step', async function* ($, e, next) {
const result = yield* next(e)
if (!e.agentId && result.stopReason !== null) {
const now = await $.clock.now()
await update($, lastRequestAt, () => now)
restart($, now, now, await ttlMsFor($, override))
}
return result
})auto 모드에서는 각 턴이 끝난 뒤 세션 기록(<config dir>/projects/<project>/<session id>.jsonl)의 마지막 1MB를 읽고, 가장 최근 메인 스레드 응답의 cache_creation에 1시간 또는 5분짜리 토큰이 있는지 확인합니다. 결과는 플러그인 저장소에 기억되어 다음 세션에서도 쓰입니다. 카운트다운 문구가 바뀔 때마다 타이머가 줄을 다시 그립니다. 남은 시간이 10분을 넘으면 30초마다, 그 아래에서는 15초마다, 마지막 2분에는 매초 갱신됩니다.
사용자 지정
옵션은 플러그인 설정의 cacheTtl 하나이며 auto(기본값), 5m, 1h 중에서 고릅니다. 고정값은 자동 감지보다 우선합니다. 예보 구간, 12개 측정값 기록, 60초 경고는 register.tsx 맨 위의 상수입니다. 또한 선택 사항인 순서 파일 <config dir>/claude-code-mods/bands.json을 읽어, 같은 작성자의 여러 밴드 모드가 프롬프트 위에 그려질 때의 순서를 정합니다.
권한 및 안전
실행하기 전에 플러그인이 실행할 수 있는 모든 파일을 읽었습니다. .claude-plugin/plugin.json, hooks/hooks.json, hooks/register.tsx, hooks/bands.ts, 타입 선언, 그리고 테스트 파일 세 개입니다. package.json, 설치 스크립트, 바이너리, 번들된 코드는 없으며, 그려지는 문구는 숫자로 만들어지고 모델의 프롬프트에는 아무것도 주입하지 않습니다. 저장소에는 MIT LICENSE가 있습니다.
동작의 전부는 다음과 같습니다.
- 네트워크: 없음.
- 프로세스: 하나,
tail -c 1048576 <세션 기록 경로>이며 기록이 1MB보다 클 때만 사용합니다. 그렇지 않으면 파일을 직접 읽습니다. - 읽는 파일: 내 세션 기록(캐시 유효 시간 감지용), Claude 설정 디렉터리의 선택적
bands.json, 그리고$.settings.read로 읽는 Claude Code 설정(Cache Clock 상태 표시줄이 설정되었는지 확인용). 위치를 찾기 위해 환경 변수HOME과CLAUDE_CONFIG_DIR을 읽습니다. - 쓰는 파일: 직접 쓰는 것은 없습니다. 감지한 캐시 유효 시간(
5m또는1h)을 플러그인 자체 저장소인$.store에 저장합니다. - 백그라운드 작업: Claude Code 안의 다시 그리기 타이머뿐이며 세션이 끝나면 멈춥니다. 데몬은 없습니다.
- 차단: 없음. 도구 호출이나 프롬프트를 막거나 바꾸지 않습니다.
claude plugin validate는 플러그인 자체에 대해 오류도 경고도 보고하지 않았습니다(디렉터리 검사기는 아이콘이 없다고 알려 줍니다). 작성자의 테스트 24개는 Claude Code 2.1.307에서 모두 통과했습니다.
- 파일 읽기
- 컴퓨터의 파일을 읽고 디렉터리 목록을 볼 수 있습니다($.fs.read / list / stat / exists).
- 명령어 실행
- 컴퓨터에서 셸 프로그램을 실행할 수 있습니다($.process.run / spawn). 정확히 어떤 프로그램인지는 소스를 확인하세요.
- UI 변경
- Claude Code 화면에 밴드, 패널, 상태 텍스트, 토스트를 그립니다(ui.render / $.ui.*).
- 데이터 저장
- 플러그인 전용 저장소에 세션 간 데이터를 보관합니다($.store.*).
호환성 및 문제 해결
macOS의 Claude Code 2.1.307에서 확인했습니다(validate, 테스트, 녹화). 줄이 나타나지 않는다면 다음을 확인하세요.
- 설치 후 새 세션을 시작했는지 확인하세요. 모드는 세션 시작 시 로드됩니다.
- 입력창 위에 설문이 열려 있지 않은지 확인하세요. 설문이 열려 있으면 이 줄이 비켜 주고, 닫히면 돌아옵니다.
- 창 너비가 60열 이상인지 확인하세요. 더 좁으면 예보 단어, 사용률, 토큰 수만 표시됩니다.
- 카운트다운이 맞지 않으면
cacheTtl을auto대신5m또는1h로 설정하세요. 프로젝트 경로가 매우 길거나 세션 중에 프로젝트를 옮기면 세션 기록을 찾지 못할 수 있으며, 이 경우 마지막으로 감지한 값이 유지됩니다. /clear또는 세션 재개 후에는 다음 요청이 올 때까지 카운트다운이 숨겨집니다.
자주 묻는 질문
- Token Weather는 API를 호출하거나 토큰을 소비하나요?
- 아니요. 네트워크 요청도 모델 호출도 하지 않습니다. Claude Code가 이미 가지고 있는 컨텍스트 수치를 $.session.usage로 읽을 뿐입니다. 시작하는 유일한 프로세스는 캐시 유효 시간을 알아내기 위해 내 세션 기록에 실행하는 `tail`입니다.
- Clear, Cloudy, Showers, Storm, Compact soon은 무슨 뜻인가요?
- 컨텍스트 사용률 구간이며, 모두 Claude Code가 알려 주는 창 크기를 기준으로 합니다. Clear는 25% 미만, Cloudy는 50% 미만, Showers는 75% 미만, Storm은 90% 미만이고, 90% 이상이면 Compact soon입니다.
- 프롬프트 캐시가 5분인지 1시간인지 어떻게 알아내나요?
- 기본값인 `auto` 모드에서는 메인 스레드 턴이 끝날 때마다 세션 기록의 끝부분을 읽어, 마지막 응답이 5분짜리와 1시간짜리 중 어느 캐시 토큰을 기록했는지 확인합니다. 확인하기 전까지는 5분으로 가정합니다. 플러그인 옵션에서 `5m` 또는 `1h`로 고정할 수도 있습니다.
- 캐시 카운트다운이 화면에 보이지 않는 이유는 무엇인가요?
- 본문 너비가 60열 이상이고 줄에 여유가 있어야 하며, 세션의 첫 요청 이후에야 나타납니다. Cache Clock 상태 표시줄이 설정되어 있으면 그쪽이 정확한 카운트다운을 보여 주므로 자동으로 숨겨집니다.
- Context Bar와는 무엇이 다른가요?
- Context Bar는 창을 카테고리별 색상 막대와 범례로 나누어 보여 줍니다. Token Weather는 한 줄로 판정, 사용률, 최근 12턴의 스파크라인, 캐시 카운트다운을 보여 줍니다. 둘을 프롬프트 위에 함께 둘 수 있습니다.
# 관련 모드
추천Context Bar
Claude Code 컨텍스트 창을 프롬프트 위 누적 막대 하나로 보여 줍니다. 카테고리마다 색이 다르고 토큰 수도 표시됩니다.
- 프롬프트 위
- UI 변경
- 명령어/도구 추가
- 데이터 저장
v2.1.291에서 테스트됨
추천Cache Clock
Claude Code 상태 표시줄 아래에 프롬프트 캐시의 남은 시간, 적중률, 식은 뒤 다시 캐시할 토큰 수를 보여 줍니다.
- 상태 표시줄
- 파일 읽기
- 파일 쓰기
- 명령어 실행
- 명령어/도구 추가
v2.1.296에서 테스트됨
추천컨텍스트 미터
컨텍스트 창 사용률, 5시간·7일 요금제 사용량, 세션 비용을 상태 표시줄에 보여 주고 한도에 가까워지면 경고합니다.
- 상태 표시줄
- 토스트
- UI 변경
v2.1.310에서 테스트됨
추천Usage Meter
플랜의 5시간·7일 사용량을 Claude Code 프롬프트 위 작은 막대로 보여 주고, 초기화 카운트다운과 세션 비용도 표시합니다.
- 프롬프트 위
- 토스트
- UI 변경
v2.1.291에서 테스트됨
더 보기: 컨텍스트, 사용량, 비용, 상태 표시줄 및 프롬프트 바.