Asosiy kontentga o‘tish
AI qo‘llanmalari

fast-jev-compaction yordamida Claude Code kontekstini aynan saqlash

fast-jev-compaction dasturini npm kutubxonasi yoki Claude Code plagini sifatida o‘rnatish va undan foydalanishni o‘rganing. Ushbu qo‘llanmada Jev asosidagi qarorlar, konfiguratsiya parametrlari, maxsus transportni qo‘llab-quvvatlash, xatoliklar yuz bergandagi xatti-harakatlar hamda muhim matnni aynanligicha saqlagan holda uzun transkriptlarni xavfsiz qisqartirish usullari tushuntiriladi.

fast-jev-compaction yordamida Claude Code kontekstini aynan saqlash

fast-jev-compaction nima qiladi

fast-jev-compaction — uzun agent transkriptlarini xulosaga aylantirmasdan qisqartirish uchun npm kutubxonasi va Claude Code plagini. Buning o‘rniga u Jev modelidan eski vosita chaqiruvlari va vosita natijalarini baholashni so‘raydi, so‘ng ularni sozlanadigan chegaralarga ko‘ra saqlaydi, qisqartiradi yoki olib tashlaydi.

Foydalanuvchi va assistant matni o‘zgarishsiz va dastlabki tartibda qoladi. Faqat vosita chaqiruvlari va ularga mos natijalar olib tashlash uchun nomzod bo‘ladi. Bu odatiy xulosa chiqarish orqali aniq cheklovlar, fayl yo‘llari, buyruqlar va xato xabarlarini yo‘qotishning oldini oladi.

Repozitoriyda src/ ichidagi qayta foydalanish mumkin bo‘lgan paket hamda hooks/ va .claude-plugin/ ichidagi Claude Code function-hook plagini mavjud.

Kompaktlash qanday ishlaydi

  1. Har bir tool_use tool_use_id orqali o‘zining tool_result natijasi bilan bog‘lanadi.

  2. Birinchi xabardagi va eng yangi preserveRecentMessages ta xabardagi chaqiruvlar mahkamlanadi, shuning uchun ular o‘zgartirilmaydi.

  3. To‘liq suhbat Jevga eskisidan yangisiga qarab taqdim etiladi. Qaror holatida vosita natijalarining mazmuni ok, 4213 chars (omitted) kabi qisqa qaydlar bilan almashtiriladi, vosita kiritmalari va matn esa mavjud bo‘lib qoladi.

  4. Mahkamlanmagan har bir chaqiruv uchun Jev ikki savolga javob beradi: chaqiruv haqida bilish hali ham muhimmi va to‘liq natija o‘zgarishsiz mavjud bo‘lib qolishi shartmi.

  5. Qaytarilgan ehtimollar keepThreshold bilan taqqoslanadi.

  6. Transkript natija ortda yetim holda qolmaydigan tarzda qayta tuziladi.

Qaror natijalari

  • Agar natija bali chegaraga yetsa, chaqiruv ham, to‘liq natija ham saqlanadi.

  • Agar faqat chaqiruv bali chegaraga yetsa, chaqiruv qoladi, natija esa dastlabki truncateHeadChars ta belgigacha qisqartirilib, oxiriga qayd qo‘shiladi.

  • Agar ikkala ball ham chegaraga yetmasa, chaqiruv va uning natijasi birgalikda olib tashlanadi.

Bo‘shab qolgan xabarlar olib tashlanadi. O‘zgartirish talab qilmaydigan xabarlar ayni obyektlar sifatida qaytariladi.

Katta tarixlarni Jev so‘rovlariga sig‘dirish

Qaror holatining taxminiy standart chegarasi 25000 tokendir. Asl holat juda katta bo‘lsa, kutubxona Jevga ko‘rsatiladigan tasvirni bosqichma-bosqich qisqartiradi. U vosita kiritmalarini kesadi, uzun matnlarni boshi va oxiridan foydalanib qisqartiradi, eski xabarlarni birlashtiradi, eski chaqiruvlarni bir qatorli yozuvlargacha qisqartiradi, eski chaqiruvsiz xabarlarni tashlab ketadi va faqat eski chaqiruvlardan iborat xabarlar ketma-ketligini birlashtiradi.

Bu o‘zgarishlar yakuniy transkriptda saqlanadigan matnga emas, baholash uchun ishlatiladigan holatga ta’sir qiladi. Holat baribir sig‘masa, kompaktlash xato chiqaradi.

Savollar ham paketlarga bo‘linadi, shunda har bir holat va savol birgalikdagi so‘rov maxRequestTokens dan pastda qoladi; uning standart qiymati 30000. So‘rovlar bir vaqtda bajariladi va ularning qarorlari birlashtiriladi.

npm kutubxonasini o‘rnatish

Paketni o‘rnating va muhit orqali TypeSafe API kalitini taqdim eting:

npm install fast-jev-compaction
export TYPESAFE_API_KEY=...

API kalitini commit qilmang yoki uni to‘g‘ridan-to‘g‘ri manba fayliga joylashtirmang.

Standart mijoz process.env.TYPESAFE_API_KEY qiymatini o‘qiydi. API chaqirilganda apiKey parametrini ham berishingiz mumkin.

Transkriptni kompaktlash

compactMessages funksiyasini import qiling, transkript tayyorlang va standart qiymatlardan farq qiladigan parametrlarni uzating:

import {
  compactMessages,
  reductionRatio,
  type Message,
} from 'fast-jev-compaction';

const transcript: Message[] = [
  {
    role: 'user',
    text: 'Fix the failing test. Never edit src/generated.',
    toolUses: [],
  },
  {
    role: 'assistant',
    text: '',
    toolUses: [
      {
        tool_use_id: 'toolu_1',
        tool: 'Read',
        input: { file_path: 'src/a.ts' },
      },
    ],
  },
  {
    role: 'user',
    text: '',
    toolUses: [],
    toolResults: [
      { tool_use_id: 'toolu_1', text: '…file contents…' },
    ],
  },
];

const result = await compactMessages(transcript, {
  preserveRecentMessages: 4,
});

console.log(result.messages);
console.log(result.decisions);
console.log(result.stats);

Eksport qilinadigan Message turi Claude Codeʼning SessionMessage turining bir qismidir, shuning uchun Claude Code sessiya transkriptlarini to‘g‘ridan-to‘g‘ri paketga uzatish mumkin.

Kompaktlash foydali bo‘lgan-bo‘lmaganini tekshirish

Paket reductionRatio funksiyasini eksport qiladi; u ilovaga qisqartirilgan tarixdan foydalanish kerakligini aniqlashda yordam beradi:

const result = await compactMessages(transcript);

if (reductionRatio(result) < 0.25) {
  // Keep the original transcript or use another fallback.
} else {
  // Continue with result.messages.
}

Natija statistikasi kompaktlashdan oldingi va keyingi xabarlar hamda belgilar sonini, sabablar bo‘yicha guruhlangan qarorlar sonini, holatning taxminiy hajmini, foydalanilgan sig‘dirish bosqichini va Jev so‘rovlari sonini o‘z ichiga oladi.

Kompaktlash xatti-harakatini sozlash

Asosiy parametrlar:

  • apiKey: TypeSafe API kaliti. Standart qiymati TYPESAFE_API_KEY.

  • model: Jev modeli nomi. Standart qiymati jev-latest.

  • baseUrl: System One endpointi. Standart qiymati https://api.typesafe.ai/v1/systemone.

  • fetch: kiritiladigan fetch amalga oshirishi, ayniqsa testlarda foydali.

  • goal: holatga kiritiladigan joriy vazifa tavsifi. Standart bo‘yicha oxirgi uchta foydalanuvchi so‘rovidan foydalanadi.

  • keepThreshold: chaqiruv yoki to‘liq natijani saqlash uchun talab qilinadigan minimal ehtimollik. Standart qiymati 0.5.

  • preserveRecentMessages: o‘zgartirib bo‘lmaydigan eng yangi xabarlar soni. Standart qiymati 6; birinchi xabar ham har doim saqlanadi.

  • maxStateTokens: qaror holati uchun taxminiy token chegarasi. Standart qiymati 25000.

  • maxRequestTokens: bitta so‘rovdagi holat va savollar uchun taxminiy chegara. Standart qiymati 30000.

  • truncateHeadChars: natija qisqartirilganda saqlanadigan boshlang‘ich belgilar soni. Standart qiymati 300.

const result = await compactMessages(transcript, {
  goal: 'Fix the test without editing generated files',
  keepThreshold: 0.6,
  preserveRecentMessages: 8,
  truncateHeadChars: 500,
});

Yuqoriroq keepThreshold kuchliroq saqlash ehtimollarini talab qiladi va shu sababli ko‘proq vosita faoliyatini olib tashlashi mumkin. Ehtimollik o‘chirish xavfsizligining isboti bo‘lmagani uchun chegara o‘zgarishlarini namunaviy stenogrammalar asosida baholang.

Maxsus Jev transportidan foydalanish

Agar o‘rnatilgan TypeSafe mijozi muhitingizga mos kelmasa, eksport qilinadigan JevAsker interfeysini amalga oshiring. U ask(state, questions) usulini talab qiladi. So‘ng compactMessages o‘rniga compact(messages, asker, options) ni chaqiring.

Paket HTTP so‘rovi tanasini yaratish uchun buildJevRequest va javobni tekshirish uchun parseJevResponse funksiyalarini ham eksport qiladi. Ixtisoslashgan integratsiyalar uchun quyi darajadagi qurilish bloklari mavjud:

  • collectToolCalls chaqiruvlarni ularning natijalari bilan juftlaydi.

  • fitState sozlangan hajm chegarasiga mos holat tayyorlaydi.

  • batchCalls savollarni so‘rovlarga bo‘lib taqsimlaydi.

  • decideCall ballarni saqlash, qisqartirish yoki olib tashlash qaroriga aylantiradi.

  • applyDecisions xabarlar tarixini qayta tuzadi.

Claude Code plaginini o‘rnatish

Plagin uchun Claude Code 2.1.274 yoki undan keyingi versiyasi kerak. Funksiya hooklari erta kirish funksiyasi bo‘lgani sababli, Claude Code ishlaydigan barcha joylarda ularni yoqing. Masalan, muhit sozlamalarini ~/.claude/settings.json fayliga qo‘shing:

{
  "env": {
    "CLAUDE_CODE_ENABLE_FUNCTION_HOOKS": "1",
    "TYPESAFE_API_KEY": "<your key>"
  }
}

Repositoryni plagin marketplace sifatida qo‘shing va plaginni o‘rnating:

claude plugin marketplace add tamaratran/fast-jev-compaction
claude plugin install fast-jev-compaction@fast-jev-compaction

O‘rnatuvchi chegara qiymatlari va truncateHeadChars kabi parametrlarni so‘raydi. API kaliti parametrining standart qiymatini qoldirib, muhitdagi TYPESAFE_API_KEY dan foydalaning.

Claude Code’ni qayta ishga tushiring yoki quyidagini bajaring:

/reload-plugins

Faollashtirilgandan so‘ng, /compact ham, avtomatik ixchamlashtirish ham Jev hooki orqali o‘tadi. Muvaffaqiyatli almashtirish fast-jev-compaction: kept N/M messages, no summary (...) ga o‘xshash toast xabarini ko‘rsatadi. Jev ishlamay qolsa yoki qisqartirish yetarli bo‘lmasa, hook Claude Code’ning o‘rnatilgan xulosasiga qaytadi.

Plaginni checkoutdan to‘g‘ridan-to‘g‘ri ishga tushirish

Repositoryni nashr qilmasdan yoki o‘rnatmasdan sinab ko‘rishingiz mumkin:

CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude --plugin-dir .

Bu buyruqni repository ildizidan ishga tushiring.

Kengaytirilgan foydalanish bo‘yicha maslahatlar

Faol ishni himoyalang

Yaqindagi vosita natijalaridan qayta foydalanish ehtimoli yuqori bo‘lsa, preserveRecentMessages qiymatini oshiring. Bu xabarlardagi chaqiruvlar mahkamlanadi va ularni olib tashlash yoki qisqartirish mumkin bo‘lmaydi.

Aniq maqsad bering

Standart maqsad oxirgi uchta foydalanuvchi so‘rovidan olinadi. Uzoq yoki yo‘nalishi o‘zgarib turadigan seanslarda goal ni aniq belgilash Jevga joriy vazifani yanada ravshanroq tushuntirishi mumkin.

Zaxira siyosatini belgilash uchun statistikadan foydalaning

Har bir ixchamlashtirilgan natijani avtomatik qabul qilish o‘rniga result.stats va reductionRatio(result) ni tekshiring. Qisqa seanslarda asl stenogrammani almashtirishni oqlaydigan darajada qisqartirish bo‘lmasligi mumkin.

Xatolarga tayyor bo‘ling

Jev ishlamay qolsa, noto‘g‘ri ma’lumot qaytarsa, talab qilinadigan kalitni qoldirsa yoki tarixni holat chegarasiga sig‘dirib bo‘lmasa, ixchamlashtirish xato chiqaradi. Kutubxona chaqiruvlarini xatolarni qayta ishlash bilan o‘rang va zarur bo‘lganda asl stenogrammani saqlang yoki boshqa ixchamlashtirish strategiyasini chaqiring. Claude Code hooki allaqachon o‘rnatilgan xulosaga qaytadi.

So‘rov xarajatini tushuning

To‘liq moslashtirilgan holat har bir savollar to‘plami uchun takroran yuboriladi. Shu sababli holat chegarasiga yaqin tarix har bir kichik savollar guruhi uchun bittadan katta so‘rov talab qilishi mumkin. Chegaralarni sozlashda result.stats dagi so‘rovlar sonini ko‘rib chiqing.

Tarmoq chaqiruvlarisiz test qiling

Repositoryning birlik testlarida soxta Jev amalga oshirishi ishlatiladi va TypeSafe’ga hech qachon murojaat qilinmaydi. Maxsus JevAsker yoki kiritilgan fetch amalga oshirishi ilovangiz testlarida ham shu yondashuvni qo‘llashga yordam beradi.

Ishlab chiqish buyruqlari

Repository bilan ishlaganda bog‘liqliklarni o‘rnating va mavjud tekshiruvlarni ishga tushiring:

npm install
npm run typecheck
npm test
npm run build
npm run validate:plugin
TYPESAFE_API_KEY="$(cat ~/.typesafe_key)" npm run demo

Demo buyrug‘i tarmoq orqali jonli tekshiruvni amalga oshiradi. Repozitoriyda demo/JevDemo ichida macOS SwiftUI animatsiyasi ham mavjud. U tayyor transkript yordamida kompaksiyani namoyish etadi va API'ga murojaat qilmaydi:

demo/JevDemo/build.sh

Animatsiyani qayta ishga tushirish uchun ilovada bo‘sh joy tugmasini bosing.

Muhim cheklovlar

  • Faqat vosita chaqiruvlari va natijalarini olib tashlash yoki qisqartirish mumkin. Matnli xabarlar chiqishda o‘zgarishsiz qoladi.

  • Tokenlar soni tokenizer yordamida emas, balki belgilar andozalaridan kelib chiqqan taxminiy hisob-kitobdir.

  • Jev ehtimolliklari natijani o‘chirish xavfsizligini kafolatlamaydi, biroq zarur bo‘lsa, yordamchi olib tashlangan vosita chaqiruvini qayta bajarishi mumkin.

  • Har bir so‘rovlar to‘plami to‘liq holatni takrorlaydi, bu sozlangan chegaraga yaqin tarixlar uchun xarajatni oshirishi mumkin.

Xulosa

fast-jev-compaction foydalanuvchi va yordamchi matnlarini saqlagan holda eskirgan vosita faoliyatini tanlab qisqartirish orqali yo‘qotishli suhbat xulosalariga muqobil yechimni taklif etadi. Ilova darajasida boshqarish uchun npm API'sidan, avtomatik integratsiya uchun Claude Code plaginidan foydalaning. Ish jarayoningizga mos kompaksiyani sozlash uchun taqdim etilgan chegaralar, saqlash parametrlari, statistika va zaxira xatti-harakatlaridan foydalaning.