Галоўная / Артыкулы / Я аудытаваў 300 пакетаў npm, зв’язаных з MCP. Мой сканер не мог пераканацца ў стане пакетаў у часе експлуатацыі.

Я аудытаваў 300 пакетаў npm, зв’язаных з MCP. Мой сканер не мог пераканацца ў стане пакетаў у часе експлуатацыі.

Паспортна інформацыя пра 300 пакетаў npm, зв’язаных з MCP, якія былі аудытаваны. Мой сканер не мог з’явіцься ў часе експлуатацыі: контракты, перакананні та слоты для коду для команд, якія викорыстоўваюць гэты патэрн.

1540 слоў

Існавайце гэта як перадзваненую версію ідэй з артыкула “Я пераглянуў 300 пакетаў npm, зв’язаных з MCP. Мой сканер не мог аналізаваць код пад час выканання ў 217 з іх. Таму я створыў Driftward.”: чыстыя этапы, аранжаваныя слоты для коду і прыміткі з восстанавлення, якія застаюцца пасля перадачы.

Короткая версія

Этап “Короткая версія” працюе найэфектывней, калі яго розглядаць як вимерную плошчу. Запісаўце адна ідеальная транскрыпцыю, адзін прыклад неудачы і прыміткі з вярнення да пачатковага стану прычым расшырэнню масштаба. Зберагачце настройкі праза код аплікацыі. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцый должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжнага чытання всіх элементаў. Адкрывайце інструменты з вузкімі схемамі та чыткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым вони автаматычна схваляюць іх.

Чаму MCP змінюе расчытак рызыка

Прычыны, за якія MCP зменяе стадію роботы, лепша аналізаваць як меркавыя показнікі. Зберагчыце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Дакументавайце як шлях успеху, так і шлях вярнэння да нормальнага стану разам. Перапрыбуткі, людзкія перакрыцці та обробка некоректных паведамленняў є частью продукту, а не елементамі пазнейшай доработкі. Адкройце інструменты з вузкімі схемамі та чысткімі пазначэннямі пабочных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць ўпраўленні.

Што вы мерылі

Этап «Што вы змерылі» працюе найкраща, калі яго розглядаць як змержымую паверхню. Запісаце адна «золатая» транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненні роботы, прычым расшырюючы сферу дзеяння. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказваць на адзін конкрэтны элемент абавяску, а не на заплутаны ланцюг задач. Адкройце інструменты з вузкімі схемамі та чысткімі пазначэннямі побачных наследкаў. Хостам неабходна знать, якія вызовы мутуюць стан, перш чым вони автаматычна схваляюць ўпраўленні.

Рэзультаты

Этап Рэзултата працюе наякша, калі яго спрыяваць як мерыемую паверхню. Зафіксавайце адны ідеальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Спрыяйце гэтам этапу як кантракту межа вхіднымі даннымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце критэрыя успеху і не падзейцеся частым, непূরным выкананнем задач. Адкройце інструменты з вузкімі схемамі та чысткімі пазначэннямі побачных наследкав. Адміністраторам неабходна інфармацыя пра тое, якія вызовы зменяюць стан, перш чым яны автаматычна схваляюць ўсё.

Два випадку введэння прамптов былі хыбнымі пазитывамі

Два этапы впрыску запрошчэння працуюць наяўней, калі іх спрыяваць як мерыемую паверхню. Зафіксавайце адна ідеальная транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Запісвайце часы выканання і кост токэнаў або запытаў разам з функцыйнальнымі рэзултатамі. Відразы костаў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмавайшнага режыма ў спакульнае сераўерное сэрвіса. Задаць бюджет на токэны на кожны раунд і на кожную сесію. Інструменты-агенты агрэсывна расширваюць контекст; строгі ліміты не дазволяюць дэмам ператварыцца на неспакойныя рахунки. Два этапы впрыску запрошчэння працуюць наяўней, калі іх спрыяваць як мерыемую паверхню. Зафіксавайце адна ідеальная транскрыпцыю, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перад расшырэнням масштаба. Дакументавайце як успішны, так і вярнэння да нормальнага стану процеса. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных запытаў є часткай продукту, а не чымсь, што дадаецца пазней.

Навмысна зловучы пакет тэста не выказаў жадных рызыкаў

Для спецыяльна злонамеранага тэставання A неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння перад змінайом коду. Аператары должны магчымаць перзапуск крока з вядомай точкі контролю, не падозрываючы схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына неудачы должна вказываць на адну адпаведальнасць, а не на заплутаны процес. Автентыфікуйцеся на входзе і паўторна автарызуйцеся на роўні дадзенняў. Толькі токэн-носіцель не є межай арендаванага ресурсу.

Статычны аналіз не паўстаў проблем

Для статычнага аналізу, які не ўрабоўваецца на певным этапе, неабходна перад зменай коду задаць вхідныя даны, адпаведальнага за этап і крэтыры завершэння. Аперацыяныя працавнікі должны магчымае перайсці на гэты этап з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Спрыяйце гэтаму этапу як даговору між вхіднымі данымі і перакананымі выходнымі рэзультатамі. Даць назвы артыфактам, задаць перакананні на успех і не прабаваць прыймаць часткова завершаную роботу без падтверджэння. Автентыфікуйцеся на входзе і парадзельна автарызуйцеся на роўні дадзеных. Толькі токэн-носіцель не є межой арендаванага ресурсу.

Што павінен адкрываць корыстны статычны звятын

Для функцыі «Які корыстны статычны этап» неабходна прадзеявання, адпаведальны за выконанне крока і крэтарыяі завершэння перад зменым коду. Аперацыяныя працавнікі должны магчымасць перапрыявленне крока з вядомага пункта контролю без неабясненняя схованага стану. Запісваюцься час выконання і вартасць токена або запытку праз адзін час з функцыйнальнымі рэзултатамі. Відразы вартасцей з самага пачатку запобегае неспакоўным рашчыткам, калі процес пераходзіць з дэмовай среды ў спяльнаваныя сераўеры. Автентыфікацыя выканаліцаецца на воратах, а паўторная автарызацыя — на роўні дадзеных. Толькі токен-носіцель не є межой адпаведальнасці. Для функцыі «Які корыстны статычны этап» неабходна прадзеявання, адпаведальны за выконанне крока і крэтарыяі завершэння перад зменым коду. Аперацыяныя працавнікі должны магчымасць перапрыявленне крока з вядомага пункта контролю без неабясненняя схованага стану. Адначасова дакументаваюцца успішны і варыянт вярнення да нормальнасці. Практыкі перапрыявлення, людзкія контрольны пункты і обработка некоректных паведамленняў є часткай продукту, а не элементамі пазнейшага доўнелення.

Чаму ўсё ж такі важліва працэздатнае паведанне

Калі працуеце над этапам «Чаму ўсё ж такі важліва працэздатнае паведанне», спачатку запісайце умовы викорыстання: неабяжныя даны, сігнал успеху та тое, што выходзіць на падчасныя неудачы. Такі чарт дапамагае заліцватися ў пазнейшых змянах коду. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, неудача должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцюг задач. Фіксуйце назву інструмента, хэш параметраў, час адпаведзі і рынак кожнага вызову. Без такога следу дэбагаванне агента займае гадзіны.

Абмежэння

Калі працюеце над стадзіяй «Абяранні», спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список пераконвае ў тым, што пазнейшыя змены коду будуць чыстымі. Спрэчвайце гэтую стадзію як угоду межа данымі і перакананымі выходамі. Дайце назву рэзультатам, задаце критэрыя успеху і не прымайце часткова завершэнне без паведамлення. Зявляйце логі з назвай інструмента, хэшам аргументаў, часу затрымкі і рэзультата для кожнага вызову. Без такога следу дэбаггінгавы агент траціць гадзіны на безрезультатныя прабыткі.

Павторыце аудыт

Калі працуеце над стадзіяй «Аудыт: воспамінанне», спачатку запісайце «контракт»: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі список пераканае ў тым, што пазнейшыя змены коду будуць чыстымі. Запісвайце час выканання і кост токена або запыту праза функцыйнальныя рэзултаты. Відразлівасць коста з самага пачатку запобегае неспакоўным рахункам, калі процес пераходзіць з дэмовай среды ў спакульную. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рэзултат кожнага вызову. Без такога следу дэбаггінг агента губіць гады. Калі працуеце над стадзіяй «Аудыт: воспамінанне», спачатку запісайце «контракт»: неабяжлівыя даны, сігнал успеху і тое, што выходзіць пад частковыя неудачы. Такі список пераканае ў тым, што пазнейшыя змены коду будуць чыстымі. Дакументавайце як «шчаслівы» так і «вярнучыся» шляхі. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не чыставаннем пазнейша.

# self-bootstrapping — no install needed
git clone https://github.com/abdalhafeezbushara/driftward.git
cd driftward
python3 research/mcp-npm-audit-2026-09-01/audit.py \
  research/mcp-npm-audit-2026-09-01/results.json \
  /tmp/mcp-audit-rerun.json
N=300 ./detonate/fetch-corpus.sh /tmp/mcp-packages.txt
python3 research/mcp-npm-audit-2026-09-01/audit.py \
  /tmp/mcp-packages.txt /tmp/mcp-audit-current.json

Практычны справак для корыстнікаў MCP

Практычны справак для стаджовых задаń найкраща выкарыстоўваць як мерыябельную базу. Зафіксавайце адны ідеальны прыклад роботы, адзін прыклад неудачы і прыметкі па поверненню да пярвоначальнага стану пры расшырэнні масштаба. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшоў, прычына неудачы павінна вказываць на адную конкрэтную адпаведальнасць, а не на заплутаны ланцюг задаń. Адкройце інструменты з вузкімі схемамі та чысткімі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, прытаму ўжо перш чым яны автаматычна затвердзяюць заданні.

Практычны вывод

Этап практычнага вывароту працюе найкраща, калі яго спрыяваць як до мерымабельнай паверхні. Запісаце адны ідеальны прыклад, адну справу з бягам і прыметку пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Спрыявайце гэты этап як кантракт межа вхіднымі даннымі і паверыжанымі выходнымі рэзультатамі. Даеце назвы артыфактам, задаеце критэрыі успеху і адмовляйцеся ад тыхоў, частковага завершэння. Адкрывайце інструменты з вузкімі схемамі та чысткімі пазначэннямі пабочных эфектаў. Адпаведальныя за эксплуатацыю должны знать, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.

Чэк-ліст для эксплуатацыі

Калі працуеце над этапам чэк-ліста для эксплуатацыі, спачатку запісайце кантракт: неабходныя вхідныя даны, сігнал успеху та тое, што выходзіць у разе частковага бягу. Гэты чэк-ліст дапамагае заставіць пазнейшыя змены коду быць чысткімі.

Зберагаеце настройкі за межамі коду прыемлівача. Файлы серавэса, хранільнікі секретных данных та флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабходнасці чытання всей структуры.

Зявіце логі з назвайом інструмента, хэшам аргументаў, часам затрымкі і рэзультатам кожнага вызову. Без такога следу агент для дэбагавання цягне годзіны на безрезультатныя спробы.

Зафіксавайце версіі залежнасцей і запісаўце дзіжэст зображэння, якое выканало дэман. Возможнасць павторнага стварэння ситуацыі лепш за традыцыйныя знаёмства.

Документавайце як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія перакрыцця і обробка некоректных паведамленняў є часткай продукту, а не чымсь, што дадаецца пазней.

Зявіце логі з назвайом інструмента, хэшам аргументаў, часам затрымкі і рэзультатам кожнага вызову. Без такога следу агент для дэбагавання цягне годзіны на безрезультатныя спробы.

Перш чым пераводзіць стэк, заморозьце версіі, зафіксавайце „золаты” транскрыпт для критычнага шляху і паказвайце крокі для вярнення да пачатковага стану. У спільных средах неабходны ліміты частоты вызоваў, перакрыцця на адпаведнае прызначэнне і чыстае відпаведальнае аб’екта для змены секрэтных даных. Лепш надзейная надзея, чым крэатывныя, але разовыя дэманы.

Запіскі для пакета 0f0aff9c909a: не трэба кантрацаваць ключы прадастоўца ў репазітары, задаць максімальную кантроль на токены за сесію, а таксама зберагчы транскрыпціі праза фіксатуры для ацэнкі, каб пазнейшыя замены моделяў заставаліся пораўнанымі.