Ръководство · AI агенти · · Стефан Цезаров
Дай на агента си второ мнение, преди да действа
Молиш агента си за програмиране да оправи билд. Той чете README, преглежда дискусия в issue и намира предложение:
Правдоподобна поправка. Една малка промяна. Агентът подготвя командата за инсталиране.
Но липсващото тире има значение. crossenv беше истински зловреден пакет, премахнат от npm през 2017 г., след като бе открито, че краде променливи на средата — мястото, където програмистите често държат ключове и токени.
Разговорът по-горе е пример. Пакетът не беше.
01Когато предложение стане команда
Агентите за програмиране четат много текст, който ти може никога да не видиш: документация, коментари в issues, уеб страници и съобщения за грешки. Този контекст им помага да решават проблеми. Може и да ги насочи към лоша зависимост.
Инсталирането на пакет заслужава особено внимание. npm пакетите могат да съдържат скриптове, които се пускат по време на инсталацията, така че код може да се изпълни, преди да си имал възможност да го прегледаш.
Защитата преди инсталиране на SaveSaveSaveSave добавя проверка точно там. Преди да се пусне поддържана команда за инсталиране, тя проверява пакета и прилага правило, което си избрал.
02Какво става с една инсталация?
Ето три команди, които агент може да предложи.
Пакет от регистъра, който не вдига флагове
npm install cross-env
Защитата пуска командата да продължи. Обичайното ти потвърждение остава. Това означава, че проверките не са намерили причина за възражение; не е гаранция, че пакетът е безопасен.
Пакет, отчетен като зловреден
cd app && npm install --save-dev crossenv
Защитата отказва командата и казва на агента защо. Разпознава инсталацията дори когато е след друга команда.
Код, изтеглен директно от GitHub
npx github:someone/setup-script
В режима по подразбиране защитата иска преглед от човек. Git URL адрес е извън проверките ѝ на npm регистъра, така че не може да даде същата оценка.
Поддържат се инсталации чрез npm, pnpm, yarn и bun, както и npx, npm ci, вериги от команди с && и команди, обвити в bash -c "…".
03Ти избираш правилата
Проверката дава доказателства: какво е проверила, какво е открила и какво не е могла да оцени. Правило, което работи на твоята машина, решава какво следва.
Избери един от три режима:
| Режим | Отчетен като зловреден | Caution или недостатъчно данни | Проверката се проваля или източникът е извън регистъра |
|---|---|---|---|
| observe | Пусни и докладвай | Пусни | Пусни |
| guard · по подразбиране | Откажи | Питай човек | Питай човек |
| strict | Откажи | Откажи | Откажи |
Използвай observe, за да видиш как се държи защитата в работния ти процес. Избери guard, за да блокираш известни зловредни пакети и да преглеждаш несигурните случаи. Избери strict, когато неясен резултат трябва да спре инсталацията.
Чистият резултат никога не премахва потвърждение, което агентът ти иначе би изисквал.
04Добави я в работния си процес
За Claude Code добави тази кука в .claude/settings.json на проекта си. Ако файлът вече съдържа настройки, слей куката с тях.
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "npx -y savesavesavesave@0.1.5 hook claude-code --mode observe"
}
]
}
]
}
}
Куката проверява предложените Bash команди. Команди без разпозната инсталация минават.
За друг агент или скрипт сложи защитата преди командата за инсталиране:
npx savesavesavesave@0.1.5 guard --mode guard -- npm install some-package
Изходните ѝ кодове казват на интеграцията ти как да продължи:
0: пусни1: поискай преглед от човек2: откажи
Интеграцията ти трябва да спазва тези резултати.
Агенти с поддръжка на MCP могат да искат проверки и директно. Инструкциите за настройка на клиента са на страницата За агенти.
Не е нужен акаунт или API ключ. Примерите фиксират версия, за да можеш да прегледаш конкретно издание, преди да го използваш.
05Знай какво покрива проверката
Защитата чете информация, публикувана от npm регистъра и OSV.dev. Тя не изтегля и не изпълнява пакета и засега покрива npm пакети, а не екосистеми като PyPI или crates.io.
Това оставя няколко практически ограничения:
- Тя проверява поддържаните команди, които получава. Инсталации, скрити в скриптови файлове, неподдържани пакетни мениджъри или изтеглени изпълними файлове може да останат извън полезрението ѝ. По-силни ограничения изискват контрол върху мрежовия достъп и достъпа до файловата система на агента.
- Неотчетена заплаха може да мине. „Без възражение“ означава, че наличните проверки не са намерили известен риск.
- Куката трябва да работи, за да действа правилото. Ако използваш режим strict, следвай инструкциите в README на пакета (на английски) за блокиране на команди, когато самата кука не успее да стартира.
Агентът за програмиране може бързо да оправи билд. Може и бързо да изпълни убедително предложение от човек, когото не познаваш.
Преди това предложение да получи достъп до машината ти, дай му второ мнение.
Следващата ти стъпка: добави куката в режим observe, прегледай резултатите ѝ и избери правилото, което пасва на работния ти процес.