Community연구 & 데이터 분석github.com

1Lany2a/token-usage-report

에이전트 스킬: ZCode, Codex, Claude Code, OpenCode에서 대화별 토큰 사용량, 캐시 적중률 및 예상 비용(DeepSeek 피크/오프피크 가격)을 보고합니다.

token-usage-report란 무엇인가요?

이 스킬은 AI 에이전트가 로컬 롤아웃 파일을 읽어 현재 대화 세그먼트와 전체 세션의 토큰 사용량, 캐시 적중률, 예상 비용을 보고합니다. `scripts/usage_report.py` 스크립트를 실행하여 마지막 세그먼트/세션(기본값) 또는 전체 세션의 통계를 두 줄로 출력합니다. ZCode, Codex, Claude Code, OpenCode, DeepSeek Harness(dsh) 등 여러 에이전트를 지원하며, 각 에이전트의 로컬 저장 형식을 자체 파싱합니다. 비용은 DeepSeek 공식 피크/오프피크 가격표를 기준으로 추정하며, 정확한 청구서가 아닌 참고용입니다. 에이전트의 최종 응답을 작성하기 전에 실행하면 사용자가 제공자 청구서와 교차 검증할 수 있는 유용한 정보를 제공합니다.

지원 대상✓Claude Code✓Codex CLI~Cursor✓OpenCode
npx skills add 1Lany2a/token-usage-report

Installed? Explore more 연구 & 데이터 분석 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

토큰 사용 보고서

에이전트의 로컬 롤아웃 파일을 읽고 가장 최근 대화 세그먼트 그리고 전체 세션의 사용량을 출력합니다 (두 줄):

本段会话:输入 123456 / 缓存命中 98765 / 输出 4321 / 命中率 80.0% / 费用 ¥0.12
整个会话:输入 987654 / 缓存命中 876543 / 输出 43210 / 命中率 88.8% / 费用 ¥0.50

왜 두 줄일까요? 전체 세션 수치는 스크립트가 로컬에서 계산합니다(추가 모델 호출 없음). 따라서 보고하는 데는 응답에 수십 개의 추가 문자만 필요하므로 토큰 오버헤드가 미미하며, 사용자는 현재 턴을 세션 총계와 비교할 수 있습니다.

실행 시기

  • 매 세션의 최종 응답을 작성하기 전에 실행하세요.
  • 트리거 문구: "token usage", "用量", "费用", "cost", "billing", "多少 tokens", "汇报", "spent".
  • 이유: 사용자에게 제공자 실제 청구서와 교차 검증할 수 있는 턴별 사용량 라인을 제공합니다. 비용은 추정치(가격 스냅샷)이며 청구서가 아닙니다.

실행 방법

스크립트: scripts/usage_report.py — Python 3.9+, 표준 라이브러리만 필요(설치 불필요). 단, DeepSeek Harness(dsh) 로그에는 선택적 zstandard 패키지가 필요합니다.

python3 <this-skill-dir>/scripts/usage_report.py --latest   # 가장 최근 세그먼트/세션 (기본값)
python3 <this-skill-dir>/scripts/usage_report.py --whole    # 가장 최근 전체 세션
python3 <this-skill-dir>/scripts/usage_report.py --all      # 세션별 목록
python3 <this-skill-dir>/scripts/usage_report.py --agent zcode|codex|claude|opencode|dsh
python3 <this-skill-dir>/scripts/usage_report.py --session <부분문자열>   # 특정 세션 고정

항상 이 스킬 디렉토리의 절대 경로를 사용하세요. 먼저 cd로 이동하지 마세요. 에이전트 세션 내에서 실행할 때는 --agent를 명시적으로 전달하세요 (자동 감지는 가장 최근에 수정된 파일을 선택하는데, 이는 동시에 실행 중인 다른 에이전트의 파일일 수 있습니다). --session은 특정 세션 파일을 고정합니다.

스크립트 출력을 최종 응답에 그대로 추가하세요 — 두 줄 모두, 각각 별도 줄에 (위에 본段会话, 아래에 整个会话). 응답이 마크다운인 경우 단일 줄바꿈은 공백으로 렌더링되어 두 줄이 합쳐지므로, 코드 블록 안에 넣거나(또는 두 줄 사이에 빈 줄을 두세요):

```text
本段会话:输入 123456 / 缓存命中 98765 / 输出 4321 / 命中率 80.0% / 费用 ¥0.12
整个会话:输入 987654 / 缓存命中 876543 / 输出 43210 / 命中率 88.8% / 费用 ¥0.50
```
  • 종료 코드 0 → 숫자가 이전 보고서와 동일해 보여도 항상 줄을 포함하세요 (사용자는 매 턴마다 이를 원합니다).
  • Codex는 단일 줄(전체 세션)을 보고합니다 — 세그먼트 데이터가 없습니다.
  • 종료 코드 1 / "No usage data found" → 조용히 건너뛰세요. 사용자에게 묻지 마세요.
  • 다른 오류 → 응답하기 전에 원인(Python 없음, 스킬 디렉토리 이동 등)을 해결하세요. 조용히 건너뛰지 마세요.

지원되는 에이전트

에이전트데이터 소스--latest 의미
ZCode~/.zcode/cli/rollout/model-io-*.jsonl마지막 세그먼트: 마지막 메시지가 사용자 프롬프트인 최신 요청 이후의 레코드 (해당 턴과 그 도구 호출 포함)
Codex~/.codex/sessions/**/rollout-*.jsonl마지막 세션 (전체) — Codex 롤아웃은 누적 실행 합계를 저장하므로, 최종 합계만 단일 줄로 보고됩니다. 세그먼트 데이터는 사용할 수 없습니다.
Claude~/.claude/projects/**/*.jsonl마지막 세그먼트: 최신 "type":"user" 레코드 이후의 레코드
OpenCode<data>/opencode/opencode.db (SQLite; Windows는 %LOCALAPPDATA%, 그 외는 $XDG_DATA_HOME 또는 ~/.local/share)가장 최근 세션의 마지막 세그먼트 (최신 사용자 메시지부터)
DSH~/.dsh/sessions/**/session.jsonl[.zstd] (zstd 압축; 선택적 zstandard 필요)마지막 턴 (한 번의 사용자 교환) + 전체 세션

모두 문서화되고 로컬에서 확인되었거나 잘 알려진 형식에서 파싱됩니다. DeepSeek Harness(dsh) 및 기타 에이전트는 작은 파서로 추가할 수 있습니다 — README.md의 레시피를 참조하세요.

정확성 및 한계

보고서는 로컬 롤아웃 데이터와 목록 가격의 추정치이며, 제공자 청구서가 아닙니다. 공식 사용량 페이지와의 차이는 다음에서 발생할 수 있습니다:

  • Codex 합계는 누적됨: 각 total_token_usage 레코드는 실행 중인 세션 합계이므로, 스크립트는 마지막 레코드를 사용합니다(절대 합산하지 않음). Codex의 경우 요청별 및 세그먼트별 수치를 사용할 수 없습니다.
  • 피크/오프피크는 세션 시작 시간에 따라 적용되지만, 제공자는 각 요청을 자체 시간으로 가격을 책정합니다. 피크 경계(베이징 시간 09:00–12:00 / 14:00–18:00)를 넘나드는 세션은 경계를 넘는 부분에 대해 잘못 가격이 책정됩니다.
  • 추론 출력 토큰은 Codex의 output에 포함됩니다(출력 요율로 청구). ZCode 롤아웃은 추론 필드를 노출하지 않습니다.
  • 로컬 롤아웃이 키의 모든 요청(중단된 스트림, 비대화형 호출)을 캡처하지 못할 수 있으므로 합계가 전체 키 사용량보다 낮을 수 있습니다.
  • 요율은 스냅샷입니다. 게이트웨이/애그리게이터 키 또는 다른 모델 ID는 다른 가격으로 청구될 수 있습니다.

비용 모델

DeepSeek 공식 피크/오프피크 가격, 베이징 시간 2026-08-17 00:00부터 적용 (2026-08-13 발표). 피크 시간: 베이징 시간 09:00–12:00 및 14:00–18:00. 그 외 모든 시간은 절반 가격의 오프피크입니다. 2026-08-17 이전 세션은 고정 레거시 요율을 사용합니다.

모델기간캐시 적중 입력캐시 미스 입력출력(CNY / 100만 토큰)
deepseek-v4-flash오프피크0.051.54.5
deepseek-v4-flash피크0.103.09.0
deepseek-v4-pro오프피크0.154.513.5
deepseek-v4-pro피크0.309.027.0

청구 기간은 세션 시작 시간(머신 로컬 시간)에서 비롯됩니다. 공식 요율이 변경되면 scripts/usage_report.py의 PRICES_* 테이블을 업데이트하세요. 권위 있는 출처는 platform.deepseek.com입니다.

통합 (매 세션 자동 보고)

에이전트의 사용자 수준 명령 파일(~/.zcode/AGENTS.md, ~/.codex/AGENTS.md, CLAUDE.md 또는 프로젝트 AGENTS.md)에 다음 규칙을 추가하세요:

모든 최종 응답 전에 python3 <skill-dir>/scripts/usage_report.py --agent <your-agent> --latest를 실행하고 (항상 --agent 전달 — 자동 감지는 동시에 실행 중인 다른 에이전트의 데이터를 읽을 수 있음) 출력 두 줄을 그대로 추가하세요: 本段会话:输入 X / 缓存命中 Y / 输出 Z / 命中率 N% / 费用 ¥M 整个会话:输入 X / 缓存命中 Y / 输出 Z / 命中率 N% / 费用 ¥M. 스크립트가 "No usage data found"를 출력하는 경우에만 건너뛰세요.

보안

  • 스크립트는 사용자 홈 디렉토리 아래의 로컬 롤아웃 JSON 파일만 읽습니다. API 키, .env 파일 또는 자격 증명을 읽거나, 출력하거나, 요구하지 않습니다.
  • 롤아웃 파일에는 프롬프트 텍스트가 포함될 수 있습니다 — 내용을 절대 출력하지 마세요. 스크립트가 출력하는 집계된 숫자만 출력하세요.

관련 스킬