Ruka hadi maudhui makuu
Mafunzo ya AI

Hifadhi Muktadha Halisi wa Claude Code kwa fast-jev-compaction

Jifunze jinsi ya kusakinisha na kutumia fast-jev-compaction kama maktaba ya npm au programu-jalizi ya Claude Code. Mafunzo haya yanaeleza maamuzi yake yanayotegemea Jev, chaguo za usanidi, usaidizi wa usafirishaji maalum, tabia wakati wa hitilafu, na mbinu za kupunguza kwa usalama nakala ndefu za mazungumzo huku ukihifadhi maandishi muhimu jinsi yalivyo.

Hifadhi Muktadha Halisi wa Claude Code kwa fast-jev-compaction

fast-jev-compaction hufanya nini

fast-jev-compaction ni maktaba ya npm na programu-jalizi ya Claude Code ya kupunguza nakala ndefu za mazungumzo ya wakala bila kuziandika upya kuwa muhtasari. Badala yake, huwaomba modeli ya Jev ipime miito ya zamani ya zana na matokeo ya zana, kisha huzihifadhi, huzifupisha, au huziondoa kulingana na vizingiti vinavyoweza kusanidiwa.

Maandishi ya mtumiaji na msaidizi hubaki kama yalivyo na katika mpangilio wake wa awali. Ni miito ya zana pekee na matokeo yake yanayolingana ndiyo yanayoweza kuondolewa. Hii huzuia kupotea kwa masharti kamili, njia za faili, amri, na ujumbe wa hitilafu kupitia ufupishaji wa kawaida.

Hifadhi hii ina kifurushi kinachoweza kutumika tena chini ya src/ na programu-jalizi ya Claude Code ya function-hook chini ya hooks/ na .claude-plugin/.

Jinsi ufupishaji unavyofanya kazi

  1. Kila tool_use huunganishwa na tool_result yake kupitia tool_use_id.

  2. Miito katika ujumbe wa kwanza na katika jumbe mpya zaidi za preserveRecentMessages hubandikwa, hivyo hazibadilishwi.

  3. Mazungumzo kamili huwasilishwa kwa Jev kutoka ya zamani zaidi hadi mpya zaidi. Maudhui ya matokeo ya zana hubadilishwa katika hali hii ya kufanya maamuzi na kuwa dokezo fupi kama ok, 4213 chars (omitted), huku pembejeo za zana na maandishi yakiendelea kupatikana.

  4. Kwa kila mwito usiobandikwa, Jev hujibu maswali mawili: ikiwa bado ni muhimu kujua kuhusu mwito huo, na ikiwa matokeo kamili lazima yabaki kupatikana kama yalivyo.

  5. Uwezekano unaorejeshwa hulinganishwa na keepThreshold.

  6. Nakala hujengwa upya bila kuacha matokeo yasiyokuwa na mwito unaolingana.

Matokeo ya maamuzi

  • Ikiwa alama ya matokeo inafikia kizingiti, mwito na matokeo kamili huhifadhiwa.

  • Ikiwa alama ya mwito pekee ndiyo inafikia kizingiti, mwito hubaki na matokeo hufupishwa kuwa herufi zake za kwanza truncateHeadChars, zikifuatiwa na dokezo.

  • Ikiwa hakuna alama inayofikia kizingiti, mwito na matokeo yake huondolewa pamoja.

Jumbe zinazokuwa tupu huondolewa. Jumbe zisizohitaji mabadiliko hurejeshwa kama vitu vilevile.

Kuweka historia kubwa ndani ya maombi ya Jev

Hali ya kufanya maamuzi ina kikomo chaguo-msingi cha 25000 tokeni zinazokadiriwa. Ikiwa hali ya awali ni kubwa mno, maktaba hupunguza hatua kwa hatua uwakilishi unaoonyeshwa kwa Jev. Hupunguza pembejeo za zana, hufupisha maandishi marefu kwa kutumia mwanzo na mwisho, hukunja jumbe za zamani, hupunguza miito ya zamani kuwa rekodi za mstari mmoja, huacha jumbe za zamani zisizo na miito, na huunganisha pamoja mfululizo wa jumbe za zamani zenye miito pekee.

Mabadiliko haya huathiri hali inayotumiwa kwa ajili ya kutoa alama, si maandishi yaliyohifadhiwa katika nakala ya mwisho. Ikiwa hali bado haiwezi kutoshea, ufupishaji hutupa hitilafu.

Maswali pia hugawanywa katika mafungu ili kila ombi la hali pamoja na swali libaki chini ya maxRequestTokens, ambayo chaguo-msingi yake ni 30000. Maombi huendeshwa kwa wakati mmoja, na maamuzi yao huunganishwa.

Sakinisha maktaba ya npm

Sakinisha kifurushi na utoe ufunguo wa API wa TypeSafe kupitia mazingira:

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

Usihifadhi ufunguo wa API kwenye hifadhi wala kuuweka moja kwa moja katika faili ya chanzo.

Mteja chaguo-msingi husoma process.env.TYPESAFE_API_KEY. Unaweza pia kutoa chaguo la apiKey unapoiita API.

Fupisha nakala ya mazungumzo

Ingiza compactMessages, andaa nakala ya mazungumzo, na upitishe chaguo zozote zinazotofautiana na chaguo-msingi:

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);

Aina ya Message inayotolewa ni sehemu ndogo ya SessionMessage ya Claude Code, hivyo nakala za mazungumzo ya vipindi vya Claude Code zinaweza kupitishwa moja kwa moja kwenye kifurushi.

Kagua ikiwa ufupishaji ulikuwa na manufaa

Kifurushi hutoa reductionRatio, ambayo inaweza kusaidia programu kuamua ikiwa itumie historia iliyofupishwa:

const result = await compactMessages(transcript);

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

Takwimu za matokeo zinajumuisha hesabu za jumbe na herufi kabla na baada ya ufupishaji, hesabu za maamuzi zilizopangwa kwa sababu, ukubwa unaokadiriwa wa hali, hatua ya kutosheleza iliyotumiwa, na idadi ya maombi ya Jev.

Sanidi tabia ya ufupishaji

Chaguo kuu ni:

  • apiKey: Ufunguo wa API wa TypeSafe. Kwa chaguo-msingi hutumia TYPESAFE_API_KEY.

  • model: Jina la modeli ya Jev. Chaguo-msingi ni jev-latest.

  • baseUrl: Mwisho wa System One. Chaguo-msingi ni https://api.typesafe.ai/v1/systemone.

  • fetch: utekelezaji wa fetch unaoweza kuingizwa, muhimu hasa katika majaribio.

  • goal: maelezo ya kazi inayoendelea yanayojumuishwa katika hali. Kwa chaguo-msingi, hutumia maongozi matatu ya mwisho kutoka kwa mtumiaji.

  • keepThreshold: uwezekano wa chini unaohitajika kuhifadhi simu au matokeo kamili. Chaguo-msingi ni 0.5.

  • preserveRecentMessages: idadi ya jumbe mpya zaidi ambazo haziwezi kurekebishwa. Chaguo-msingi ni 6; ujumbe wa kwanza pia huhifadhiwa kila wakati.

  • maxStateTokens: ukomo wa makadirio ya tokeni kwa hali ya uamuzi. Chaguo-msingi ni 25000.

  • maxRequestTokens: ukomo wa makadirio ya hali pamoja na maswali katika ombi moja. Chaguo-msingi ni 30000.

  • truncateHeadChars: idadi ya vibambo vya mwanzo vinavyohifadhiwa wakati matokeo yanapopunguzwa. Chaguo-msingi ni 300.

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

keepThreshold ya juu huhitaji uwezekano mkubwa zaidi wa kuhifadhi, na hivyo inaweza kuondoa shughuli nyingi zaidi za zana. Kwa kuwa uwezekano si uthibitisho kwamba kufuta ni salama, tathmini mabadiliko ya kizingiti kwa kutumia nakala za mazungumzo zinazowakilisha matumizi halisi.

Tumia usafirishaji maalum wa Jev

Ikiwa mteja wa TypeSafe aliyejengewa ndani haulingani na mazingira yako, tekeleza kiolesura cha JevAsker kilichotangazwa. Kinahitaji mbinu ya ask(state, questions). Kisha ita compact(messages, asker, options) badala ya compactMessages.

Kifurushi pia kinatuma nje buildJevRequest kwa ajili ya kuunda mwili wa ombi la HTTP na parseJevResponse kwa ajili ya kuthibitisha jibu. Vipengele vya msingi vya kiwango cha chini vinapatikana kwa miunganisho maalum zaidi:

  • collectToolCalls huoanisha simu na matokeo yake.

  • fitState huandaa hali ndani ya ukomo wa ukubwa uliosanidiwa.

  • batchCalls hugawanya maswali katika maombi mbalimbali.

  • decideCall hubadilisha alama kuwa uamuzi wa kuhifadhi, kupunguza, au kuondoa.

  • applyDecisions huunda upya historia ya jumbe.

Sakinisha programu-jalizi ya Claude Code

Programu-jalizi inahitaji Claude Code 2.1.274 au toleo jipya zaidi. Hooks za vitendaji ni kipengele cha ufikiaji wa mapema, kwa hivyo ziwezeshe popote Claude Code inapotekelezwa. Kwa mfano, ongeza mipangilio ya mazingira kwenye ~/.claude/settings.json:

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

Ongeza hazina kama soko la programu-jalizi na usakinishe programu-jalizi:

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

Kisakinishi hukuuliza chaguo kama vile vizingiti na truncateHeadChars. Acha chaguo la ufunguo wa API katika hali yake ya chaguo-msingi ili kutumia TYPESAFE_API_KEY kutoka kwenye mazingira.

Anzisha upya Claude Code au endesha:

/reload-plugins

Baada ya kuwezesha, /compact na upunguzaji wa kiotomatiki hupitia hook ya Jev. Ubadilishaji uliofanikiwa huonyesha taarifa ibukizi inayofanana na fast-jev-compaction: kept N/M messages, no summary (...). Jev ikishindwa au upunguzaji hautoshi, hook hurudi kwenye muhtasari wa ndani wa Claude Code.

Endesha programu-jalizi moja kwa moja kutoka kwenye checkout

Unaweza kujaribu hazina bila kuichapisha au kuisakinisha:

CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1 claude --plugin-dir .

Endesha amri hii kutoka kwenye mzizi wa hazina.

Vidokezo vya matumizi ya hali ya juu

Linda kazi inayoendelea

Ongeza preserveRecentMessages wakati matokeo ya zana ya hivi karibuni yana uwezekano wa kutumiwa tena. Simu katika jumbe hizi hubandikwa na haziwezi kuondolewa au kupunguzwa.

Toa lengo sahihi

Lengo la chaguo-msingi hutokana na maongozi matatu ya mwisho kutoka kwa mtumiaji. Kwa vipindi virefu au vinavyobadilika, kuweka goal wazi kunaweza kumpa Jev maelezo yaliyo wazi zaidi kuhusu kazi inayoendelea.

Tumia takwimu kufafanua sera ya kurejea

Kagua result.stats na reductionRatio(result) badala ya kukubali kiotomatiki kila matokeo yaliyopunguzwa. Vipindi vifupi huenda visipunguze vya kutosha kuhalalisha kubadilisha nakala ya mazungumzo ya awali.

Jiandae kwa hitilafu

Upunguzaji hutupa hitilafu Jev inaposhindwa, inaporudisha data yenye muundo usio sahihi, inapokosa ufunguo unaohitajika, au inapopokea historia ambayo haiwezi kutoshea ndani ya kikomo cha hali. Funga miito ya maktaba katika ushughulikiaji wa hitilafu na uhifadhi nakala ya mazungumzo ya awali au tumia mkakati mwingine wa upunguzaji inapohitajika. Hook ya Claude Code tayari hurudi kwenye muhtasari wake wa ndani.

Elewa gharama ya ombi

Hali kamili iliyotoshelezwa hurudiwa kwa kila kundi la maswali. Kwa hiyo, historia iliyo karibu na kikomo cha hali inaweza kuhitaji ombi moja kubwa kwa kila kikundi kidogo cha maswali. Kagua idadi ya maombi katika result.stats unapoweka mipaka.

Fanya majaribio bila miito ya mtandao

Majaribio ya kitengo ya hazina hutumia utekelezaji bandia wa Jev na hayawasiliani kamwe na TypeSafe. JevAsker maalum au utekelezaji wa fetch uliodungwa unaweza kusaidia kutumia mbinu hiyo hiyo katika majaribio ya programu yako.

Amri za usanidi

Unapofanya kazi kutoka kwenye hazina, sakinisha vitegemezi na endesha ukaguzi unaopatikana:

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

Amri ya demo hufanya ukaguzi wa mtandao wa moja kwa moja. Hifadhi pia ina uhuishaji wa macOS SwiftUI chini ya demo/JevDemo. Huonyesha ufupishaji kwa kutumia nakala ya mazungumzo iliyotayarishwa na haiiti API:

demo/JevDemo/build.sh

Bonyeza space kwenye programu ili kucheza tena uhuishaji.

Vikomo muhimu

  • Ni miito na matokeo ya zana pekee yanayoweza kuondolewa au kufupishwa. Ujumbe wa maandishi hubaki bila kubadilishwa kwenye matokeo.

  • Idadi ya tokeni ni makadirio yanayotokana na mifumo ya herufi badala ya tokenizer.

  • Uwezekano wa Jev hauhakikishi kwamba matokeo ni salama kufutwa, ingawa msaidizi anaweza kutekeleza tena mwito wa zana ulioondolewa inapohitajika.

  • Kila kundi la maombi hurudia hali nzima, jambo linaloweza kuongeza gharama kwa historia zilizo karibu na kikomo kilichosanidiwa.

Hitimisho

fast-jev-compaction inatoa mbadala wa muhtasari wa mazungumzo unaopoteza taarifa kwa kuhifadhi maandishi ya mtumiaji na msaidizi huku ikiondoa kwa uteuzi shughuli za zamani za zana. Tumia API ya npm kwa udhibiti wa kiwango cha programu, programu-jalizi ya Claude Code kwa ujumuishaji wa kiotomatiki, na vizingiti, mipangilio ya uhifadhi, takwimu, pamoja na tabia ya kurejea iliyotolewa ili kurekebisha ufupishaji kulingana na mtiririko wako wa kazi.