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.
2x multiplier za skillove¶
Skillovi se pojavljuju dvaput u kontekstu prve poruke:
- Kao registar kategorije Skills (~9k) — učitan za Skill tool
- Kao
skill_listingattachment u prvoj user poruci (~10k) — verbatim lista sa opisima, injecirana kaosystem-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:
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:
- Isključite globalno:
- U projektima gdje ga trebate, dodajte u
.claude/settings.json:
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:
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