Preskoči na sadržaj

Kontekst i Tokeni

Svaka Claude Code sesija počinje sa "baseline" troškom tokena — prije nego ste išta ukucali. Razumijevanje šta troši kontekst i kako ga skresati direktno utiče na kvalitet odgovora i cijenu rada.


Šta troši kontekst na prvoj poruci

Provjerite komandom /context — pokazuje raspodjelu po kategorijama.

Tipičan breakdown (brojevi variraju po konfiguraciji):

Kategorija Tokeni Napomena
System tools ~32k Ugrađeni Claude Code alati (Bash, Edit, Read, Agent, Task*, itd). Nije korisnički podesivo.
MCP tools ~20k Schema svih aktiviranih MCP servera. Veliki serveri (oni sa 30+ alata) lako nose 10k+ svaki.
Memory files ~10k CLAUDE.md (globalni + projektni) + MEMORY.md.
Skills ~9k Registar instaliranih skillova za Skill tool routing.
System prompt ~8k Claude Code core instrukcije + environment.
Custom agents ~5k Opis svakog custom agenta iz instaliranih plugina.
Messages ~17k na prvoj poruci Uključuje inicijalne system-reminder blokove i skill listing attachment.

Ukupno: ~95–100k tokena prije nego ste napisali "zdravo".

Kako provjeriti tačan broj

Transcript fajl svake sesije je u ~/.claude/projects/<enkodirani-path>/<session-id>.jsonl. Svaka assistant poruka ima usage blok sa tačnim input_tokens, cache_creation_input_tokens, i cache_read_input_tokens.

jq -r 'select(.type=="assistant") | "in=\(.message.usage.input_tokens) cache_read=\(.message.usage.cache_read_input_tokens) out=\(.message.usage.output_tokens)"' ~/.claude/projects/*/latest.jsonl

2x multiplier za skillove

Skillovi se pojavljuju dvaput u kontekstu prve poruke:

  1. Kao registar kategorije Skills (~9k) — učitan za Skill tool
  2. Kao skill_listing attachment u prvoj user poruci (~10k) — verbatim lista sa opisima, injecirana kao system-reminder

Ovo se vidi u transcript JSONL fajlu — attachment je tipa skill_listing veličine ~40KB.

Posljedica: svaki skill koji obrišete štedi ~2x prijavljenih tokena.

CLAUDE.md sadržaj se isto čini dupliran (pojavljuje se i kao "Memory files" i kao claudeMd system-reminder), ali harness accounting ovo prijavljuje samo jednom u /context output.


Praktične mjere skresavanja

Ciljno smanjenje baseline-a sa ~95k na ~55–60k (cca 40%).

Princip: scope, ne brisanje

Cilj nije da brišete skillove i MCP servere — cilj je da ih ne držite globalno (u ~/.claude/) kad vam trebaju samo u jednom projektu.

Claude Code ima tri nivoa konfiguracije:

Nivo Lokacija Učitava se...
Globalno ~/.claude/settings.json, ~/.claude/plugins/ U svakoj sesiji, bilo koji projekt
Projektni .claude/settings.json u repo-u Samo kad radite u tom projektu
Lokalni (gitignore) .claude/settings.local.json Samo za vas, samo u tom projektu

Pravilo: svaki skill/MCP server treba da bude na najužem nivou na kojem je koristan.

  • Koristite ga u 1-2 projekta → projektni nivo
  • Koristite ga svuda i često → globalno
  • Niste ga koristili više od mjesec → razmislite da li ga trebate uopšte

TL;DR — gdje je najveća ušteda

Rangirano po tipičnom efektu (uračunat 2x multiplier za skillove):

# Mjera Tipična ušteda Kada
1 Preseli plugin sa puno skillova iz globalnog u projektni nivo 10–15k po pluginu Plugin koristite samo u 1-2 projekta, ne globalno
2 Preseli veliki MCP server (30+ alata) u projektni nivo 10–15k po serveru IDE bridgevi, framework-specific alati — trebaju samo u nekim projektima
3 Trimuj projektni CLAUDE.md 5–9k Ako ti je CLAUDE.md preko 4k tokena
4 Preseli manje plugine u projektni nivo 1–5k po pluginu Tematski paketi koji trebaju samo ponekad
5 /clear između faza varira Uvijek na kraju faze

Princip: provjeri /context → pogledaj šta je najveće u MCP tools, Skills i Custom agents → preseli u projektni nivo ako nije potrebno svuda.


1. Preselite plugin iz globalnog u projektni nivo

Najveća potencijalna ušteda — plugini često nose desetine skillova, od kojih u konkretnom projektu koristite 2-3.

Provjerite šta je instalirano globalno:

claude plugin list

Provjerite token cijenu svakog plugina u /context pod sekcijama Skills i Custom agents. Sve iznad 2k po pluginu je kandidat za migraciju u projektni nivo.

Workflow:

  1. Isključite globalno:
claude plugin disable <plugin-name>
  1. U projektima gdje ga trebate, dodajte u .claude/settings.json:
{
  "enabledPlugins": ["<plugin-name>"]
}

Ovako ga nosite u kontekstu samo kad radite u projektu gdje je potreban.

2. Preselite MCP server u projektni nivo

Veliki MCP serveri (30+ alata) često nose 10-15k tokena. Tipični kandidati za projektni nivo:

  • IDE bridgevi (JetBrains, VS Code) — samo za projekte gdje aktivno koristite IDE MCP most
  • Framework-specific serveri (Laravel, Symfony, Rails alati) — samo u tim projektima
  • Cloud/storage serveri — samo gdje ih stvarno pozivate

U projektnom .claude/settings.json:

{
  "enabledMcpjsonServers": ["hub", "time", "<projekt-specifični-server>"]
}

U globalnom ~/.claude/settings.json držite samo ono što koristite u većini projekata (npr. hub, time).

3. Trimujte projektni CLAUDE.md

Cilj: držati ispod 4k tokena.

  • Operativne instrukcije i konvencije — OSTAVI
  • Reference tabele (UUID-ovi, liste ID-jeva, env var tabele, dugi spiskovi) — PRESELI u .claude/docs/ fajlove koji se učitavaju on-demand preko Read tool-a

Princip: umjesto da držite 40 linija sa detaljnom referencom u CLAUDE.md, napravite .claude/docs/<tema>.md fajl, i u CLAUDE.md samo jedna linija: "Detalji za X su u .claude/docs/x.md — pročitaj kad ti treba".

4. /clear između faza

Ne nosite tokene iz prethodne faze. /clear resetuje Messages na 0, sve bitno je u .planning/ artifactima.


Kada je u redu potpuno obrisati

Migracija na projektni nivo je default. Potpuno uklanjanje sa sistema (uninstall plugina, claude plugin uninstall ...) je opravdano samo u specifičnim slučajevima:

  • Probali ste skill/plugin kao eksperiment da vidite kako radi, i ne planirate ga koristiti
  • Koristili ste ga jednom za ad-hoc zadatak i znate da vam neće više trebati
  • Plugin je deprecated ili zamijenjen boljim
  • Nije korišten ni u jednom projektu duže od 2-3 mjeseca

Ako postoji i minimalna šansa da će vam trebati ponovo — ostavite ga instaliranog, samo ne enable-ovanog globalno. Reinstalacija je skuplja od noseće konfiguracije.


Kako pregledati šta AI vidi

Transcript JSONL sadrži sve — user poruke, asistentove odgovore, tool use/result, system-reminder blokove, attachmente.

# Zadnja sesija u trenutnom projektu
ls -lt ~/.claude/projects/-Users-$(whoami)-00-code-<projekt>/*.jsonl | head -1

# Pretty print svih turnova
jq -C . <session-id>.jsonl | less -R

# Samo tekstualni sadržaj
jq -r '.message.content[]? | select(.type=="text") | .text' <session-id>.jsonl

# Veličine po tipu poruke
jq -r '"\(.type)\t\(.message.content | tostring | length)"' <session-id>.jsonl | sort | uniq -c

Debug scenario

Ako /context pokazuje 130k+ na trećoj poruci, otvori JSONL i provjeri jesi li možda pastovao /context output — taj paste nosi ~14k tokena po pozivu i često se nalazi dvaput u transcriptu (raw stdout + renderovani blok).


Zašto se isplati

  • Kvalitet odgovora pada sa punim kontekstom — model troši "pažnju" na irelevantne tool opise i skill trigger-e
  • Cache invalidacija je skuplja — svaka sesija pravi 30k+ novih cache entry-ja koji se naplate po cache_creation_input_tokens
  • Brzina — manji prompt = brži first token