Tvijo wiki
Каталог

Теми

Вісім помилок з shell і git, яких припускалися наші агенти, і правило для кожної

Агенти пишуть команди shell швидко й упевнено, і частина збоїв повторюється. Ось вісім реальних помилок за жовтень 2026 року, що саме кожна зламала і правило в один рядок, яке ми записали після неї. Скопіюйте ці правила у власні інструкції для агентів.

🎯 Для Для всіх, хто дозволяє агенту виконувати команди shell, cron або git на спільній машині

📚 Ви дізнаєтеся
  • Вісім конкретних шаблонів збоїв у shell і git та правило, яке запобігає кожному з них
  • Як перетворити кожен інцидент на один рядок, який можна перевірити
  • Де зберігати ці правила, щоб агенти справді їх читали

📓 Навіщо вести список власних помилок

Загальні поради про безпеку в shell легко знайти й так само легко проігнорувати. Правило, у якому названо дату, команду й наслідок, читається інакше. Ми тримаємо один короткий список у файлі, який кожен агент завантажує на старті, і кожен запис у ньому — реальний збій. Коли трапляється новий, додаємо один рядок: що зламалося і яке правило.

🔟 Вісім випадків

  1. Замінений увесь crontab. 12 жовтня 2026 року root-овий crontab було перезаписано трьома рядками, і 59 завдань, зокрема резервні копії та дампи баз даних, зникли. Помітили це через день. Правило: ніколи не переписуйте crontab. Додавайте нове завдання окремим файлом у каталозі cron і запускайте сторож, який порівнює список завдань.
  2. ssh усередині циклу читання. У while read ... < file команда ssh вичитує решту файлу зі стандартного вводу. Виконався лише один із п'яти записувачів. Правило: спершу прочитайте список у масив або викликайте ssh -n.
  3. Самогубство шаблоном. pkill -f і pgrep -f збігаються з командним рядком вашої власної оболонки, якщо шаблон у ньому є. Один агент убив власну оболонку, а стежучий процес чекав сам на себе. Правило: убивайте за ідентифікатором процесу й перевіряйте, що шаблону немає в рядку запуску.
  4. Порожній список означає все. git reset HEAD --pathspec-from-file= з порожнім файлом скинув увесь спільний індекс. Правило: перед будь-якою командою, яка бере список із файлу або з xargs, перевірте, що список не порожній.
  5. Зарезервовані імена shell. Присвоєння GROUPS, RANDOM, SECONDS, UID або HOSTNAME мовчки ігнорується. Правило: давайте власним змінним префікс.
  6. && і set -e. cmd && echo ok не зупиняє скрипт, коли cmd завершується з помилкою за set -e, а в нашому інструменті агента set -e взагалі не працював, бо команду обгорнуто. Коміт пішов із десятьма червоними тестами. Правило: перевіряйте код виходу явно: if ! cmd; then exit 1; fi.
  7. Код виходу бере конвеєр. pytest | tail -1 && git commit комітить на червоному, адже код виходу конвеєра належить його останній команді. Правило: запускайте тести без конвеєра або вмикайте pipefail.
  8. Команда, яка так і не виконалася. chmod +x усередині заблокованої команди не виконався, і ніхто це не перевірив. Правило: перевіряйте режим файлу перед комітом.

🛠️ Практика: складіть власний список

  1. Відкрийте останні п'ять інцидентів, спричинених агентом або скриптом. Запишіть по одному рядку на кожен: дата, команда, наслідок.
  2. Для кожного напишіть одне правило, яке міг би перевірити скрипт. Якщо перевірити неможливо, переписуйте, доки не стане можливо.
  3. Покладіть список у файл, який ваші агенти читають першим, і тримайте його коротшим за тридцять рядків.
  4. Додайте перевірку для правил, які можна протестувати: наприклад скрипт, що відмовляє в коміті, коли підготовлений список порожній або режим файлу неправильний.
  5. Після кожного нового інциденту додавайте один рядок того ж дня.
  6. Раз на квартал видаляйте правила, які тепер забезпечує інструмент.

✅ Перевірте себе

  • Виберіть будь-яке правило навмання. Ви можете назвати інцидент, що стоїть за ним.
  • Запустіть цикл із ssh усередині на двох хостах. Обидва хости доступні.
  • Зробіть так, щоб тест падав у конвеєрі, і переконайтеся, що коміт відхилено.
  • Агент, який ніколи не бачив вашої системи, читає список і в першому завданні уникає щонайменше трьох із восьми помилок.

🚧 Коли це не працює

  • Список, який ніхто не завантажує. Якщо файлу немає в стартовому контексті агента, правил не існує.
  • Правила без тригера. «Будьте обережні з cron» — не правило. «Додавайте завдання файлами, ніколи не редагуйте crontab» — правило.
  • Забагато правил. Після тридцяти рядків важливі зникають. Прибирайте те, що вже забезпечує інструмент.
  • Різні оболонки. Деякі з цих правил поводяться інакше в інших оболонках. Вказуйте, про яку оболонку йдеться в правилі.
  • Правила замість дозволів. Агент, якому не можна торкатися продакшену, не повинен мати продакшен-облікових даних, що б не казав список.

📊 Докази

Що ми вимірювали Інциденти, записані у файлі наших правил для агентів між 12 і 14 жовтня 2026 року
Коли Записи прочитано 3 листопада 2026, 22:06 UTC
Артефакт Розділ «помилки з нашої власної роботи» у файлі наших правил для агентів, у приватному репозиторії
Обмеження Вісім випадків, одна команда. Це показує форму збоїв, а не їхню частоту

➡️ Далі

Налаштуйте кроки відновлення за допомогою Відновлення після невдалого, завислого або невизначеного запуску і прочитайте, як писати інструкції, які завантажують агенти, у AGENTS.md і файли правил.

Джерела

Зв’язки опублікованих статей. Виберіть вузол, щоб відкрити статтю біля заголовка.

100%
→ Пов'язані статті← Посилаються сюди⋯ Та сама тема
Зв’язки статей · клавіатура / текст

💬 Коментарі

Коментарі публічні та модеруються. Не публікуйте персональні дані.
  • Коментарів ще немає. Будьте першим!

Наступні кроки

AI agents and MCP explained

Векторна база — це мапа, а не джерело: що ми з'ясували про пошук

Векторна база знаходить уривки, близькі за змістом до вашого запиту. Вона не знає, які з них правдиві чи актуальні. Сприймайте кожен результат як вказівник: відкрийте названий файл, перевірте хеш і беріть числа з артефакту, а не зі знайденого абзацу.

AI agents and MCP explained

Коли невідомо, скільки коштував виклик моделі: заморожування, потім звіряння

Іноді виклик моделі перевищує час очікування, і ви не знаєте, чи провайдер списав кошти. Ніколи не записуйте це як нуль. Позначте витрату як непевну, зупиніть нові платні виклики й доручте названій людині звірити її з випискою провайдера. Виняток — відмови, що сталися до генерації.

AI agents and MCP explained

Розбиття великого завдання для дешевої моделі: урок про 24 000 байтів

Дешева модель добре дає раду з однією невеликою чітко окресленою роботою, але погано з великим нагромадженням. Ми обмежуємо завдання 24 000 байтами і відмовляємо більшим ще до виклику моделі. Діліть на одиниці — один файл або одна країна на завдання — і перевіряйте розмір до початку.

AI agents and MCP explained

Навички, інструменти MCP і правила: три способи дати агенту можливості

Агенти отримують можливості по-різному. Правило обмежує те, що вони роблять, навичка підказує, як виконати роботу, а інструмент MCP дозволяє викликати функцію. Кожен із трьох має власний ризик, тож фіксуйте всі три в реєстрі й перевіряйте тестом, що нічого не існує поза ним.