
Lokho okwenziwa yi-fast-jev-compaction
fast-jev-compaction iyilabhulali ye-npm kanye ne-plugin ye-Claude Code yokunciphisa imibhalo emide yama-agent ngaphandle kokuyibhala kabusha ibe isifinyezo. Kunalokho, icela imodeli ye-Jev ukuthi ilinganise izingcingo zamathuluzi ezindala nemiphumela yamathuluzi, bese iyazigcina, izifinyeze, noma izisuse ngokwemikhawulo elungisekayo.
Umbhalo womsebenzisi nowomsizi uhlala unjengoba unjalo futhi ulandelana ngendlela yawo yokuqala. Izingcingo zamathuluzi kuphela kanye nemiphumela yazo ehambisanayo ezibhekwa ukuthi zisuswe. Lokhu kugwema ukulahlekelwa yimikhawulo eqondile, izindlela zamafayela, imiyalo, nemiyalezo yamaphutha ngenxa yokufingqa okujwayelekile.
Indawo yokugcina iqukethe kokubili iphakheji engasetshenziswa kabusha ngaphansi kwe-src/ kanye ne-plugin ye-function-hook ye-Claude Code ngaphansi kwe-hooks/ ne-.claude-plugin/.
Indlela okusebenza ngayo ukunciphisa
I-
tool_usengayinye ixhunyaniswa ne-tool_resultyayo nge-tool_use_id.Izingcingo ezikumlayezo wokuqala kanye nemiyalezo emisha kakhulu engu-
preserveRecentMessagesziyaphinwa, ngakho aziguqulwa.Ingxoxo ephelele inikezwa uJev kusukela kwendala kuya kwentsha. Okuqukethwe kwemiphumela yamathuluzi kushintshwa kulesi simo sokwenza izinqumo kube amanothi amafushane afana ne-
ok, 4213 chars (omitted), kuyilapho okokufaka kwamathuluzi nombhalo kusatholakala.Kuzo zonke izingcingo ezingaphinwanga, uJev uphendula imibuzo emibili: ukuthi ukwazi ngalolo cingo kusabalulekile yini, nokuthi umphumela ophelele kufanele uhlale utholakala unjengoba unjalo yini.
Amathuba abuyisiwe aqhathaniswa ne-
keepThreshold.Umbhalo wengxoxo wakhiwa kabusha ngaphandle kokushiya umphumela ongenacingo oluhambisanayo.
Imiphumela yezinqumo
Uma amaphuzu omphumela efinyelela umkhawulo, kokubili ucingo nomphumela ophelele kuyagcinwa.
Uma amaphuzu ocingo kuphela efinyelela umkhawulo, ucingo luyasala futhi umphumela ufinyezwa ube izinhlamvu zokuqala ezingu-
truncateHeadCharszilandelwe inothi.Uma kungekho nelilodwa iphuzu elifinyelela umkhawulo, ucingo nomphumela walo kuyasuswa ndawonye.
Imiyalezo eba yize iyasuswa. Imiyalezo engadingi zinguquko ibuyiswa kuyona leyo objects.
Ukufaka imilando emikhulu ezicelweni zikaJev
Isimo sezinqumo sinomkhawulo ozenzakalelayo wama-token alinganiselwa ku-25000. Uma isimo sokuqala sikhulu kakhulu, ilabhulali iqhubeka inciphisa ukumelwa okuboniswa uJev. Ifinyeza okokufaka kwamathuluzi, ifinyeze umbhalo omude isebenzisa ingxenye yokuqala neyokugcina, igoqe imiyalezo emidala, inciphise izingcingo ezindala zibe amarekhodi omugqa owodwa, ishiye imiyalezo emidala engenazingcingo, futhi ihlanganise uchungechunge lwemiyalezo emidala equkethe izingcingo kuphela.
Lezi zinguquko zithinta isimo esisetshenziselwa ukukala, hhayi umbhalo ogcinwe embhalweni wengxoxo wokugcina. Uma isimo singakakwazi ukungena, ukunciphisa kuphonsa iphutha.
Imibuzo nayo ihlukaniswa ibe amaqoqo ukuze isicelo ngasinye sesimo kanye nombuzo sihlale singaphansi kwe-maxRequestTokens, okuzenzakalelayo kube ngu-30000. Izicelo zisebenza ngesikhathi esisodwa, bese izinqumo zazo zihlanganiswa.
Faka ilabhulali ye-npm
Faka iphakheji bese unikeza ukhiye we-API we-TypeSafe usebenzisa imvelo:
npm install fast-jev-compaction
export TYPESAFE_API_KEY=...Ungazibophezeli ngokhiye we-API noma uwubeke ngokuqondile efayeleni lomthombo.
Iklayenti elizenzakalelayo lifunda process.env.TYPESAFE_API_KEY. Ungaphinda unikeze inketho ye-apiKey lapho ubiza i-API.
Yehlisa umbhalo wengxoxo
Ngenisa i-compactMessages, lungisa umbhalo wengxoxo, bese udlulisa noma yiziphi izinketho ezihlukile kwezijwayelekile:
import {
compactMessages,
reductionRatio,
type Message,
} from 'fast-jev-compaction';
const transcript: Message[] = [
{
role: 'user',
text: 'Lungisa ukuhlolwa okuhlulekayo. Ungalokothi uhlele i-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: '…okuqukethwe kwefayela…' },
],
},
];
const result = await compactMessages(transcript, {
preserveRecentMessages: 4,
});
console.log(result.messages);
console.log(result.decisions);
console.log(result.stats);Uhlobo lwe-Message oluthunyelwa ngaphandle luyisethi encane ye-SessionMessage ye-Claude Code, ngakho imibhalo yezikhathi ze-Claude Code ingadluliselwa ngqo kuphakheji.
Hlola ukuthi ukunciphisa bekufanele yini
Le phakheji ithumela ngaphandle i-reductionRatio, engasiza uhlelo lunqume ukuthi lisebenzise yini umlando oncishisiwe:
const result = await compactMessages(transcript);
if (reductionRatio(result) < 0.25) {
// Gcina umbhalo wengxoxo wokuqala noma usebenzise enye indlela yokubuyela emuva.
} else {
// Qhubeka no-result.messages.
}Izibalo zomphumela zihlanganisa izibalo zemiyalezo nezinhlamvu ngaphambi nangemva kokunciphisa, izibalo zezinqumo ezihlelwe ngesizathu, usayizi wesimo olinganisiwe, isigaba sokufaka esisetshenzisiwe, kanye nenani lezicelo zikaJev.
Lungisa indlela yokuziphatha kokunciphisa
Izinketho eziyinhloko yilezi:
apiKey: Ukhiye we-API we-TypeSafe. Okuzenzakalelayo ngu-TYPESAFE_API_KEY.model: Igama lemodeli ye-Jev. Okuzenzakalelayo ngu-jev-latest.baseUrl: I-endpoint ye-System One. Okuzenzakalelayo ngu-https://api.typesafe.ai/v1/systemone.fetch: Ukusetshenziswa kwe-fetch okufakwa ngaphandle, okuwusizo kakhulu ekuhloleni.goal: Incazelo yomsebenzi oqhubekayo efakwe esimweni. Okuzenzakalelayo kusebenzisa imiyalezo emithathu yokugcina evela kumsebenzisi.keepThreshold: Amathuba amancane adingekayo ukuze kugcinwe ucingo noma umphumela ophelele. Okuzenzakalelayo ngu-0.5.preserveRecentMessages: Inani lemiyalezo emisha kakhulu engakwazi ukuguqulwa. Okuzenzakalelayo ngu-6; umlayezo wokuqala nawo uhlala ugcinwe.maxStateTokens: Umkhawulo olinganisiwe wama-token wesimo sesinqumo. Okuzenzakalelayo ngu-25000.maxRequestTokens: Umkhawulo olinganisiwe wesimo kanye nemibuzo esicelweni esisodwa. Okuzenzakalelayo ngu-30000.truncateHeadChars: Inani lezinhlamvu zokuqala ezigcinwayo lapho umphumela uncishiswa. Okuzenzakalelayo ngu-300.
const result = await compactMessages(transcript, {
goal: 'Fix the test without editing generated files',
keepThreshold: 0.6,
preserveRecentMessages: 8,
truncateHeadChars: 500,
});keepThreshold ephakeme idinga amathuba aqinile okugcina, ngakho ingasusa umsebenzi omningi wamathuluzi. Njengoba amathuba engewona ubufakazi bokuthi ukususa kuphephile, hlola izinguquko zomkhawulo usebenzisa imibhalo emelelayo.
Sebenzisa ezokuthutha ze-Jev ezenziwe ngokwezifiso
Uma iklayenti le-TypeSafe elakhelwe ngaphakathi lingahambisani nendawo yakho, sebenzisa i-interface ye-JevAsker ethunyelwe ngaphandle. Idinga indlela ye-ask(state, questions). Bese ubiza compact(messages, asker, options) esikhundleni se-compactMessages.
Iphakheji iphinde ithumele ngaphandle i-buildJevRequest yokwakha umzimba wesicelo se-HTTP kanye ne-parseJevResponse yokuqinisekisa impendulo. Izingxenye zokwakha ezisezingeni eliphansi ziyatholakala ekuhlanganisweni okukhethekile:
collectToolCallsihlanganisa izingcingo nemiphumela yazo.fitStateilungisa isimo ukuze sihlangabezane nomkhawulo kasayizi omisiwe.batchCallsihlukanisa imibuzo phakathi kwezicelo.decideCalliguqula amaphuzu abe yisinqumo sokugcina, sokunciphisa, noma sokususa.applyDecisionsyakha kabusha umlando wemiyalezo.
Faka i-plugin ye-Claude Code
I-plugin idinga i-Claude Code 2.1.274 noma entsha. Ama-function hook ayisici sokufinyelela kusenesikhathi, ngakho wavule noma kuphi lapho i-Claude Code isebenza khona. Isibonelo, engeza izilungiselelo zemvelo ku-~/.claude/settings.json:
{
"env": {
"CLAUDE_CODE_ENABLE_FUNCTION_HOOKS": "1",
"TYPESAFE_API_KEY": "<your key>"
}
}Engeza inqolobane njenge-plugin marketplace bese ufaka i-plugin:
claude plugin marketplace add tamaratran/fast-jev-compaction
claude plugin install fast-jev-compaction@fast-jev-compactionIsifaki sikucela izinketho ezifana nemikhawulo kanye ne-truncateHeadChars. Shiya inketho yokhiye we-API kokumisiwe ukuze usebenzise i-TYPESAFE_API_KEY esendaweni yemvelo.
Qalisa kabusha i-Claude Code noma usebenzise:
/reload-pluginsNgemva kokusebenza, kokubili i-/compact kanye nokunciphisa okuzenzakalelayo kudlula ku-hook ye-Jev. Ukushintshwa okuyimpumelelo kubonisa isaziso esifana nalesi: fast-jev-compaction: kept N/M messages, no summary (...). Uma i-Jev yehluleka noma ukunciphisa kunganele, i-hook ibuyela esifinyezweni esakhelwe ngaphakathi se-Claude Code.
Qalisa i-plugin ngokuqondile ku-checkout
Ungahlola inqolobane ngaphandle kokuyishicilela noma ukuyifaka:
CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude --plugin-dir .Qalisa lo myalo usuka empandeni yenqolobane.
Amathiphu okusetshenziswa okuthuthukile
Vikela umsebenzi osebenzayo
Khulisa preserveRecentMessages lapho imiphumela yakamuva yamathuluzi kungenzeka iphinde isetshenziswe. Izingcingo ezikule miyalezo ziyaphinwa futhi azikwazi ukususwa noma ukuncishiswa.
Nikeza umgomo ocacile
Umgomo wokuzenzakalela uthathwe emiyalezweni emithathu yokugcina evela kumsebenzisi. Ezikhathini ezinde noma ezishintshayo, ukusetha i-goal ngokucacile kunganikeza i-Jev incazelo ecacile yomsebenzi oqhubekayo.
Sebenzisa izibalo ukuchaza inqubomgomo yokubuyela emuva
Hlola result.stats kanye ne-reductionRatio(result) esikhundleni sokwamukela ngokuzenzakalelayo wonke umphumela oncishisiwe. Izikhathi ezimfushane zingase zinganciphisi ngokwanele ukuze kushintshwe umbhalo wokuqala.
Hlela amaphutha
Ukunciphisa kuphonsa iphutha lapho i-Jev yehluleka, ibuyisa idatha engalungile, ishiya ukhiye odingekayo, noma ithola umlando ongeke ulinganiswe ngaphakathi komkhawulo wesimo. Faka izingcingo zelabhulali ekuphathweni kwamaphutha futhi ugcine umbhalo wokuqala noma usebenzise elinye isu lokunciphisa lapho kudingeka. I-hook ye-Claude Code isivele ibuyela esifinyezweni sayo esakhelwe ngaphakathi.
Qonda izindleko zesicelo
Isimo esiphelele esilinganisiwe siphindwa kuwo wonke amaqoqo emibuzo. Ngakho umlando oseduze nomkhawulo wesimo ungadinga isicelo esisodwa esikhulu eqenjini ngalinye elincane lemibuzo. Buyekeza inani lezicelo ku-result.stats lapho ulungisa imikhawulo.
Hlola ngaphandle kwezingcingo zenethiwekhi
Ukuhlolwa kweyunithi kwenqolobane kusebenzisa i-Jev mbumbulu futhi akuxhumani ne-TypeSafe. I-JevAsker eyenziwe ngokwezifiso noma ukusetshenziswa kwe-fetch okufakiwe kungasekela indlela efanayo ekuhlolweni kohlelo lwakho.
Imiyalo yokuthuthukisa
Lapho usebenza usuka enqolobaneni, faka okuncikile bese usebenzisa ukuhlola okutholakalayo:
npm install
npm run typecheck
npm test
npm run build
npm run validate:plugin
TYPESAFE_API_KEY="$(cat ~/.typesafe_key)" npm run demoUmyalo we-demo wenza ukuhlolwa kwenethiwekhi okubukhoma. Indawo yokugcina ikhodi iphinde ibe nopopayi we-macOS SwiftUI ngaphansi kwe-demo/JevDemo. Ubonisa ukuhlanganiswa kusetshenziswa umbhalo wengxoxo olungiselelwe, futhi awubizi i-API:
demo/JevDemo/build.shCindezela ibha yesikhala kuhlelo lokusebenza ukuze uphinde udlale lopopayi.
Imikhawulo ebalulekile
Izingcingo zamathuluzi nemiphumela yazo kuphela ezingasuswa noma zifinyezwe. Imilayezo yombhalo ihlala ingashintshiwe kokuphumayo.
Izibalo zamathokheni ziyizilinganiso ezithathwe emaphethini ezinhlamvu, hhayi ku-tokenizer.
Amathuba ka-Jev awaqinisekisi ukuthi umphumela uphephile ukuwususa, nakuba umsizi engaphinda asebenzise ucingo lwethuluzi olususiwe lapho kudingeka.
Iqoqo lesicelo ngalinye liphinda isimo esigcwele, okungakhuphula izindleko zomlando osuseduze emkhawulweni omisiwe.
Isiphetho
i-fast-jev-compaction inikeza enye indlela yezifinyezo zengxoxo ezilahlekisela ngolwazi, ngokugcina umbhalo womsebenzisi nowomsizi kuyilapho isusa ngokukhetha umsebenzi wamathuluzi osuphelelwe yisikhathi. Sebenzisa i-npm API ukuze ulawule ezingeni lohlelo lokusebenza, i-plugin ye-Claude Code ukuze ihlanganiswe ngokuzenzakalelayo, kanye nemingcele enikeziwe, izilungiselelo zokulondoloza, izibalo, nokuziphatha kokubuyela emuva ukuze ulungise ukuhlanganiswa ngokuvumelana nokugeleza komsebenzi wakho.
