
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
Har bir
tool_usetool_use_idorqali o‘ziningtool_resultnatijasi bilan bog‘lanadi.Birinchi xabardagi va eng yangi
preserveRecentMessagesta xabardagi chaqiruvlar mahkamlanadi, shuning uchun ular o‘zgartirilmaydi.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.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.
Qaytarilgan ehtimollar
keepThresholdbilan taqqoslanadi.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
truncateHeadCharsta 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 qiymatiTYPESAFE_API_KEY.model: Jev modeli nomi. Standart qiymatijev-latest.baseUrl: System One endpointi. Standart qiymatihttps://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 qiymati0.5.preserveRecentMessages: o‘zgartirib bo‘lmaydigan eng yangi xabarlar soni. Standart qiymati6; birinchi xabar ham har doim saqlanadi.maxStateTokens: qaror holati uchun taxminiy token chegarasi. Standart qiymati25000.maxRequestTokens: bitta so‘rovdagi holat va savollar uchun taxminiy chegara. Standart qiymati30000.truncateHeadChars: natija qisqartirilganda saqlanadigan boshlang‘ich belgilar soni. Standart qiymati300.
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:
collectToolCallschaqiruvlarni ularning natijalari bilan juftlaydi.fitStatesozlangan hajm chegarasiga mos holat tayyorlaydi.batchCallssavollarni so‘rovlarga bo‘lib taqsimlaydi.decideCallballarni saqlash, qisqartirish yoki olib tashlash qaroriga aylantiradi.applyDecisionsxabarlar 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-compactionO‘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-pluginsFaollashtirilgandan 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 demoDemo 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.shAnimatsiyani 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.
