Fəsil 01 · 8 dəq oxu

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, repository-ni oxuyur, test yazır, bug tapır. Sonra layihə böyüyür, session uzanır və eyni 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 ifadəsi yox, model-in context window-unda nəyin olduğu müəyyən edir. 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 , 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 qədər, bu bir problemə cavabdır: məhdud ən faydalı məlumatla doldurmaq və lazımsız olanı kənarda saxlamaq.

Context window nədir və nə ilə dolur

onun bir request-də görə biləcəyi ü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. 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:

KomponentNə vaxt yüklənirTipik həcm
Session-ın başında, Claude Code tərəfindənBir neçə min
Built-in tool tərifləriSession-ın başındaHər tool üçün ad, təsvir, parametr sxemi
MCP tool tərifləriHər konfiqurasiya olunmuş server üçün, istifadə olunmasa beləServer-ə görə yüzlərlə və ya minlərlə
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çəsiHər mesajla böyüyürSession boyunca artır
Tool nəticələriHə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 yeyir. On belə server-lə sabit xərc on minlərlə ç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 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

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:

  • 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şı " 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 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, , 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 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ı

ə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. ayrıca, təmiz işləyir, araşdırmanı aparır və əsas 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 , qərar əsas .

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. 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 köhnəlmiş API əvəzinə lazım olan anda düzgün sənədi gətirir.

File system xarici yaddaş kimi

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 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 ilə yumşaldır: context-in sabit prefiksi, yəni , tool tərifləri və memory faylları, API tərəfində 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 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çə girib-çıxıb, nə qədər 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 ilə görmək həm sürət, həm də büdcə deməkdir.

Model-lərin 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:

  1. Session-a başlayanda /context ilə 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.
  2. Hər yeni, əlaqəsiz tapşırıq üçün /clear.
  3. Uzun tapşırıqda /compact-ı gözləmədən, təbii fasilələrdə və göstərişlə işlədin.
  4. Böyük fayl oxumalarını və geniş axtarışları verin.
  5. CLAUDE.md-yə yalnız davranışı dəyişən sətirlər yazın; sənədi fayla yazıb yolunu göstərin.
  6. 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 context-ə nəsə əlavə edir və ya ondan nəyisə çıxarır. öyrənəndə ilk sual həmişə eynidir: bu, nə edir?

Tapşırıqlar

  1. Hazırda işlədiyiniz layihədə Claude Code-u açın və /context command-ını işlədin. Sabit xərc, yəni , tool-lar və memory faylları, pəncərənin neçə faizini tutur? Ən böyük üç komponenti yazın.
  2. Layihənizin CLAUDE.md faylı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ı?
  3. 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ə /context ilə fərqi ölçün.