Хуки

Хук agent: обнаружение неограниченных циклов агентов

Проверьте кодовую базу на вызовы агентов и LLM без ограничения шагов или времени или оцените отдельный вызов из командной строки.

Хук agent помечает среды выполнения агентов, которые крутятся в цикле без ограничения ходов, бюджета или времени, ту дыру неконтролируемой автономии, через которую специально сформированный ввод превращается в неограниченные расходы или эскалацию через prompt injection. Он учитывает язык и охватывает две экосистемы агентных фреймворков: JavaScript (среда выполнения query из агентного SDK Claude) и Python (LangChain, LangGraph, CrewAI, OpenAI Agents). Это детерминированный движок, стоящий за специализацией llm, и вы можете запускать его сами в режиме scan или check.

Запуск​

npx lagune read agent # scans the whole project
npx lagune read agent --dir src/ai # scans a directory
npx lagune read agent --file chat.ts # scans a single file

Каждая строка в разделе Uncapped agent loops found находится в файле, который импортирует агентный SDK, и представляет собой либо вызов среды выполнения query из агентного SDK Claude без ограничения ходов, бюджета или времени (JavaScript, по умолчанию без ограничений), либо явное снятие ограничения фреймворка по умолчанию, например max_iterations=None / max_turns=None (Python, по умолчанию с ограничением). В обоих случаях хук завершается с ненулевым кодом. В Vercel AI SDK generateText/streamText по умолчанию выполняют один шаг (stopWhen: stepCountIs(1)), поэтому голый вызов там не может зациклиться и не помечается, а обычный db.query(...) никогда не принимается за вызов агента. Если ничего не найдено, выводится no uncapped agent loops found.

Как читать вердикт​

ВердиктЗначение
uncappedВызов среды выполнения query без ограничения (JS) или явное снятие ограничения (=None, Py).
safeВызов query с ограничением, генерация в один шаг или вызов фреймворка, ограниченный по умолчанию.
invalidВо фрагменте нет узнаваемого вызова агента, который можно оценить.

Параметры CLI​

ПараметрЗначениеОписание
--patternфрагмент кодаПроверяет один вызов. Повторите, чтобы проверить несколько, по одному вердикту на строку.
--langязыкОбязателен с --pattern: javascript или python.
--dirдиректорияОграничивает сканирование директорией. Можно повторять и сочетать с --file.
--fileфайлОграничивает сканирование одним файлом. Можно повторять и сочетать с --dir.

Без параметров хук сканирует весь проект. --pattern требует --lang и не сочетается с --dir или --file.

По мере возможностей, а не исчерпывающе

Самописный цикл агента на любом языке недоступен статическому сканированию. Считайте результат надежным минимумом, а не полной инвентаризацией.

подсказка

Хук решает только вопрос ограничения: разграничение возможностей, смешение уровней доверия и авторизация остаются вопросами суждения, которые по-прежнему охватывает специализация llm.

Частые вопросы

Агента без ограничений можно загнать в неограниченную рекурсию, расходы или эскалацию через prompt injection. Ограничения maxTurns, maxBudgetUsd, stopWhen или signal сдерживают его, а хук agent помечает вызов среды выполнения query, в котором не задано ни одного из них.