Context engineering: context window-u şüurlu idarə etmək
Context engineering: context window-u şüurlu idarə etmək
Claude Code ilə ilk bir neçə session adətən sehr kimi görünür: bir cümlə yazırsınız, agent repository-ni oxuyur, test yazır, bug tapır. Sonra layihə böyüyür, session uzanır və eyni agent birdən "axmaqlaşır": əvvəl dediyiniz qaydanı unudur, eyni səhvi təkrar edir, mövcud funksiyanı yenidən yazır. Model dəyişməyib. Dəyişən onun gördüyü context-dir.
Bu kitabın əsas tezisi budur: agentic coding-də nəticənin keyfiyyətini prompt-un ifadəsi yox, model-in context window-unda nəyin olduğu müəyyən edir. Prompt engineering bir mesajı düzgün yazmaq sənətidir. Context engineering isə model-in hər addımda gördüyü bütün məlumatı, yəni system prompt-u, tool təriflərini, memory fayllarını, söhbət tarixçəsini və tool nəticələrini, şüurlu şəkildə dizayn etməkdir. Claude Code-un demək olar ki, bütün mexanizmləri, CLAUDE.md-dən subagent-lərə qədər, bu bir problemə cavabdır: məhdud context window-u ən faydalı məlumatla doldurmaq və lazımsız olanı kənarda saxlamaq.
Context window nədir və nə ilə dolur
LLM-in context window-u onun bir request-də görə biləcəyi token-lərin ümumi sayıdır. Claude Code-da bu pəncərə sabit büdcədir və hər şey onun içinə sığmalıdır. Agent-in ayrıca "yaddaşı" yoxdur; hər növbədə model bütün context-i sıfırdan oxuyur. Bu büdcəni nələrin xərclədiyini bilmədən onu idarə etmək mümkün deyil:
| Komponent | Nə vaxt yüklənir | Tipik həcm |
|---|---|---|
| System prompt | Session-ın başında, Claude Code tərəfindən | Bir neçə min token |
| Built-in tool tərifləri | Session-ın başında | Hər tool üçün ad, təsvir, parametr sxemi |
| MCP tool tərifləri | Hər konfiqurasiya olunmuş server üçün, istifadə olunmasa belə | Server-ə görə yüzlərlə və ya minlərlə token |
| Memory faylları (CLAUDE.md) | Session-ın başında və alt qovluğa girəndə | Siz nə qədər yazmısınızsa |
| Söhbət tarixçəsi | Hər mesajla böyüyür | Session boyunca artır |
| Tool nəticələri | Hər fayl oxunanda, hər command işlədiləndə | Ən sürətlə böyüyən hissə |
Cədvəldə iki şey diqqət çəkir. Birincisi, ilk dörd sətir siz hələ heç nə yazmamış dolur: bu, hər session-ın sabit xərcidir. İkincisi, tool nəticələri idarə olunmasa, qalan hər şeyi sıxışdırır: 2 000 sətirlik faylı oxumaq, geniş grep çıxışı, uzun test log-u, hamısı tarixçədə qalır və növbəti hər request-də yenidən oxunur.
Sabit xərcin gizli tərəfi: tool description-ları
Model-in tool çağıra bilməsi üçün hər tool-un adı, təsviri və parametrlərinin JSON sxemi context-ə yazılır. Built-in tool-lar üçün bu, Claude Code tərəfindən optimallaşdırılıb. Amma MCP server-ləri qoşanda tool təriflərini siz və ya server-in müəllifi yazır və burada xərc gözlənilməz dərəcədə böyüyür.
Sadə bir eksperiment bunu göstərir. Fərz edək ki, iyirmi trivial hesablama tool-u olan bir MCP server yazmışıq: add, subtract, multiply və s. Hər birinin docstring-i "ətraflı" olsun: nə vaxt istifadə etmək, hansı edge case-ləri nəzərə almaq, iki-üç nümunə. Bu server heç bir tool çağırılmadan, sadəcə qoşulduğu üçün, hər session-da bir neçə min token yeyir. On belə server-lə sabit xərc on minlərlə token-ə çatır və real işə qalan yer kiçilir.
Buradan bir ROI prinsipi çıxır: tool təsvirindəki hər cümlə tool-un adının artıq demədiyi bir şeyi deməlidir. multiply(a, b) üçün "iki ədədi vurur" cümləsi sıfır məlumat əlavə edir, amma token xərcləyir. Yaxşı təsvir iki suala cavab verir: bu tool-u nə vaxt istifadə etmək lazımdır və nə vaxt istifadə etməmək lazımdır. Qalan hər şey artıqdır.
Context-in kəmiyyəti və keyfiyyəti
Context window dolu olmasa belə, içindəki məlumatın keyfiyyəti nəticəni dəyişir. Uzun context-də model-lər ortadakı məlumatı kənardakılardan pis xatırlayır; bir-birinə zidd iki göstəriş varsa, model birini təsadüfi seçir; köhnəlmiş fayl məzmunu, yəni on dəqiqə əvvəl oxunmuş və sonra dəyişdirilmiş fayl, modeli yanlış fərziyyəyə aparır. Praktikada bu özünü belə göstərir:
- Agent session-ın əvvəlində verilmiş qaydanı, məsələn "test framework-ü dəyişmə", unudur.
- Eyni faylı dəfələrlə oxuyur, çünki əvvəlki oxunuş tarixçənin dərinliyində itib.
- Artıq mövcud olan helper-i yenidən yazır.
- Əvvəlki uğursuz cəhdin səhvini təkrarlayır.
Bu simptomlar görünəndə həll "daha yaxşı prompt" deyil; həll context-i təmizləməkdir. Claude Code bunun üçün bir neçə alət verir və onları nə vaxt işlətməyi bilmək bu kitabın ilk bacarığıdır.
Context engineering strategiyaları
Memory faylları: az, amma dəqiq
CLAUDE.md hər session-ın başında yüklənən layihə yaddaşıdır. Onun məqsədi model-in kodu oxuyaraq tapa bilməyəcəyi şeyləri demək olmalıdır: build və test command-ları, layihənin yazılmamış konvensiyaları, toxunulmaması lazım olan sahələr, tez-tez təkrarlanan səhvlər. Memory faylı layihənin sənədləşməsi deyil və README-nin kopyası da deyil. Hər əlavə edilən sətir hər session-da token xərcləyir, buna görə qayda sadədir: sətir model-in davranışını dəyişmirsə, orada olmamalıdır.
Tool-ları seçərək yükləmək
Hər MCP server-i daim qoşulu saxlamaq əvəzinə işə görə konfiqurasiya seçmək olar: bir konfiqurasiya gündəlik iş üçün, biri canlı sənədləşmə axtarışı üçün, biri browser testləri üçün. Hansı server-lərin yüklü olduğunu və hər birinin nə qədər yer tutduğunu görmək üçün session-da /context command-ı var: o, system prompt, tool-lar, memory faylları, mesajlar və boş yer arasında paylanmanı göstərir. Bu command-ı vərdişə çevirmək lazımdır: nəyin bahalı olduğunu bilmədən optimallaşdırmaq olmaz.
Session-ı təmizləmək: /clear və /compact
Bir-biri ilə əlaqəsi olmayan iki tapşırıq eyni session-da olmamalıdır. Bug fix bitdi, yeni feature başlayır: /clear. Bu, tarixçəni sıfırlayır, memory faylları isə yeni söhbətə yenidən yüklənir, yəni layihə haqqında bilik itmir, sadəcə köhnə söhbət itir.
Tapşırıq uzundur və tarixçə lazımdır, amma yer azalır: /compact. Claude Code tarixçəni xülasə edir və xülasəni orijinalın yerinə qoyur. Command-a göstəriş vermək olar:
/compact yalnız API dizayn qərarlarını və hələ düzəldilməmiş test-ləri saxla
Context dolanda avtomatik compaction da işə düşür, amma onun nəyi saxlayacağına siz nəzarət etmirsiniz; əl ilə və göstərişlə etmək həmişə daha yaxşı nəticə verir.
Subagent-lər: context izolyasiyası
Agent-in ən böyük context istehlakçısı araşdırmadır: düzgün faylı tapmaq üçün on faylı oxumaq. Bu on faylın məzmunu əsas session-da qalmamalıdır. Subagent ayrıca, təmiz context window-da işləyir, araşdırmanı aparır və əsas agent-ə yalnız nəticəni, məsələn "problem auth/session.ts faylının 42-ci sətrindədir", qaytarır. Əsas context on faylın yox, bir cümlənin xərcini çəkir. Bu, 7-ci fəslin mövzusudur, amma prinsipi indidən bilmək lazımdır: araşdırma subagent-ə, qərar əsas agent-ə.
Progressive disclosure: məlumat lazım olanda
Hər şeyi əvvəlcədən yükləmək əvəzinə model-ə məlumatı tapmaq yolunu vermək olar. CLAUDE.md-də @docs/architecture.md kimi import faylı hər session-da yükləyir; əvəzində "architecture sualları üçün docs/architecture.md faylını oxu" yazmaq modeli faylı yalnız lazım olanda oxumağa yönəldir. Agent Skills (9-cu fəsil) eyni prinsipin rəsmi formasıdır: session-da yalnız skill-in adı və qısa təsviri olur, tam məzmun skill çağırılanda yüklənir. Canlı sənədləşmə MCP server-ləri, məsələn kitabxananın aktual API-sini sorğu ilə gətirən server, də bura aiddir: model-in training data-sındakı köhnəlmiş API əvəzinə lazım olan anda düzgün sənədi gətirir.
File system xarici yaddaş kimi
Context window keçici yaddaşdır; disk daimi yaddaşdır. Uzun tapşırıqda planı, qəbul edilmiş qərarları və açıq sualları fayla yazdırmaq, məsələn PLAN.md və ya notes/decisions.md, sonra /clear edib faylı yenidən oxutmaq context-i yüngül saxlayır. Bu, 10-cu fəsildəki memory/ qovluğu yanaşmasının və 11-ci fəsildəki deep agent-lərin file system prinsipinin əsasıdır.
Context və xərc: token-lər vaxt və puldur
Context engineering yalnız keyfiyyət məsələsi deyil. Hər növbədə model bütün context-i yenidən oxuyur; context nə qədər böyükdürsə, cavab o qədər gec gəlir və o qədər baha başa gəlir. Claude Code bunu prompt caching ilə yumşaldır: context-in sabit prefiksi, yəni system prompt, tool tərifləri və memory faylları, API tərəfində cache-lənir və növbəti request-lərdə dəfələrlə ucuz oxunur. Bu mexanizmin bir şərti var: prefiks dəyişməməlidir. Session-ın ortasında CLAUDE.md-ni redaktə etmək, MCP server qoşmaq və ya model dəyişmək cache-i sıfırlayır və növbəti request tam qiymətə gedir. Konfiqurasiya dəyişikliklərini session-ın əvvəlində etmək və ya dəyişiklikdən sonra /clear ilə təmiz başlamaq bu xərci azaldır.
Xərci görmək üçün /cost command-ı var: session-da neçə token girib-çıxıb, nə qədər cache-dən oxunub və bunun pulla qarşılığı nədir. Abunəliklə işləyəndə pul rəqəmi yox, limitə görə istifadə payı görünür, amma məntiq eynidir. Bu rəqəmi gündə bir dəfə də olsa izləmək vərdişi context engineering-in geri dönüşünü ölçülə bilən edir: eyni işi daha az token ilə görmək həm sürət, həm də büdcə deməkdir.
Model-lərin context window-u böyüdükcə, bir milyon token-lik pəncərələr adi hala gəldikcə, bu bölmənin lazımsız olacağı düşünülə bilər. Belə deyil. Böyük pəncərə "hər şeyi yüklə" deməyə əsas vermir: ortadakı məlumatı itirmə problemi qalır, hər növbənin qiyməti context ilə mütənasib artır və model-in diqqəti lazımsız məlumatla yayınır. Böyük pəncərə sizə səhvə yer verir, səhvi düzəltmir. Context engineering-in qaydaları pəncərənin ölçüsündən asılı olmayaraq qüvvədədir.
Praktik qayda dəsti
Context engineering-i bir neçə vərdişə sığdırmaq olar:
- Session-a başlayanda
/contextilə sabit xərcə baxın. Tool-lar və memory faylları pəncərənin böyük hissəsini tutursa, ilk iş onları azaltmaqdır. - Hər yeni, əlaqəsiz tapşırıq üçün
/clear. - Uzun tapşırıqda
/compact-ı gözləmədən, təbii fasilələrdə və göstərişlə işlədin. - Böyük fayl oxumalarını və geniş axtarışları subagent-ə verin.
- CLAUDE.md-yə yalnız davranışı dəyişən sətirlər yazın; sənədi fayla yazıb yolunu göstərin.
- MCP server-lərini işə görə seçin; istifadə olunmayan server sadəcə xərcdir.
Bu qaydalar qalan fəsillərdə dönə-dönə qarşınıza çıxacaq, çünki Claude Code-un hər feature-i context-ə nəsə əlavə edir və ya ondan nəyisə çıxarır. Feature-i öyrənəndə ilk sual həmişə eynidir: bu, context window-a nə edir?
Tapşırıqlar
- Hazırda işlədiyiniz layihədə Claude Code-u açın və
/contextcommand-ını işlədin. Sabit xərc, yəni system prompt, tool-lar və memory faylları, pəncərənin neçə faizini tutur? Ən böyük üç komponenti yazın. - Layihənizin
CLAUDE.mdfaylını sətir-sətir oxuyun və hər sətir üçün soruşun: bu sətir model-in davranışını dəyişirmi? Dəyişməyən sətirləri silin və ya ayrı fayla çıxarıb yolunu göstərin. Fayl neçə faiz qısaldı? - Bir MCP server-in tool təsvirlərini açın və hər təsvir üçün yoxlayın: tool-un adının demədiyi nə deyir? Təsvirləri "nə vaxt istifadə et / nə vaxt istifadə etmə" formatına salın və
/contextilə fərqi ölçün.