Розробник виявив, що прихований пошук npx додавав приблизно 10 секунд до кожного циклу Claude Code, а заміна пошуку на глобальне встановлення скоротила час кожної взаємодії на шість секунд.
Чому затримка була важливою
Claude Code навігує по монорепозиторію з десятками компонентів, індексує символи, зберігає транскрипти в Postgres і надсилає звіти про помилки. Робочий процес здається плавним, поки відповіді моделі не починають затримуватися. Перевірка стану (health check) виявила кілька неефективностей та один дорогий мережевий виклик.
Що виявила перевірка стану
- Дубльовані інсталяції — нативний лаунчер і застаріла версія npm-global існували одночасно. Видалення застарілої копії позбавило від непотрібного пошуку шляху.
- Пошкоджений файл агента — файл без опису дублював ім'я валідного файлу, через що Claude Code ігнорував його. Видалення пошкодженого запису усунуло плутанину.
- Невикористовувані розширення — плагін і MCP-сервер, які ніколи не запускалися, були вимкнені, що зменшило навантаження під час виконання.
- Роздуті файли “CLAUDE.md” — ці файли повторювали інформацію, яка вже є в коді (наприклад, команди збірки), збільшуючи обсяг даних, що надсилаються моделі. Скорочення цих файлів залишило лише необхідний контекст.
Це очищення допомогло, але найбільший успіх принесла робота зі Stop hook, який запускається після кожної відповіді моделі.
Прихований «податок» npx
Stop hook виконує шість окремих команд, кожна з яких має префікс npx -y. Прапор -y змушує npx перевіряти npm registry на наявність новішої версії перед запуском команди, що ініціює мережевий запит. Кожен пошук займав у середньому 1,6 секунди, тому шість викликів додавали близько 10 секунд до кожного циклу. На практиці загальна затримка хука становила 12 секунд, з періодичними стрибками до 113 секунд під час збоїв у мережі.
Просте рішення
Заміна викликів npx на глобально встановлений бінарний файл усунула пошук у реєстрі:
- До:
npx -y @invariance/gps→ 1,6 с за виклик - Після:
gps(встановлено глобально) → 0,7 с за виклик
Ця зміна скоротила час виконання Stop hook приблизно на 6 секунд за цикл і усунула величезні стрибки затримки, спричинені віддаленою перевіркою.
На що звернути увагу далі
- Таймінг хуків — додавайте інструментарій до будь-яких кастомних хуків, щоб виявляти затримки до того, як вони зашкодять користувачам.
- Гігієна залежностей — регулярно видаляйте дубльовані інсталяції та невикористовувані розширення.
- Конфігураційні файли — тримайте “CLAUDE.md” лаконічними; надавайте лише ту інформацію, яку модель не може вивести самостійно.
Урок простий: автоматизація може приховувати дорогі внутрішні механізми. Швидка перевірка стану може виявити приховані мережеві виклики, які перетворюють швидкого ШІ-помічника на повільного.
Висновок: Якщо Claude Code працює повільно, виміряйте час роботи хуків і усуньте будь-які пошуки через npx; глобальне встановлення може заощадити кілька секунд на кожному циклі та підтримувати ваш темп розробки.
