Перейти к содержимому
NotHolyДокументация

CLI

Агент в терминале

Агент, который читает, ищет и правит файлы в вашем проекте и выполняет команды на вашей машине с вашего одобрения.

Открыть как Markdown

Для этих команд нужен установленный CLI, в котором выполнен вход. См. Установка CLI.

Запустите notholy внутри проекта. Агент может использовать на вашей машине такие инструменты:

ИнструментЧто делает
read, grep, globЧтение и поиск по файлам
edit, writeИзменение файлов
bashВыполнение команды
cve_lookup, kb_search, web_searchУдалённые инструменты для исследований

Режимы

РежимПоведение
planТолько чтение
askПо умолчанию. Спрашивает перед каждой записью и каждой командой
auto-editПравит файлы без вопросов. Команды по-прежнему требуют подтверждения
yoloНикогда не спрашивает. Требует --yolo при каждом запуске

Команды выполняются на вашей машине под вашу ответственность. Серверы NotHoly никогда ничего не запускают против ваших целей.

Инструкции проекта положите в NOTHOLY.md в корне. Содержимое файлов и вывод команд считаются данными, а не инструкциями для агента.

Флаги: --mode, --model, --yolo и -p, чтобы выполнить один промпт и выйти.

Slash-команды: /model, /effort (off, low, high или max), /mode (plan, ask или auto-edit), /cost, /compact, /autocompact, /mcp, /resume (последняя сессия), /exit. Сессии сохраняются в ~/.notholy/sessions с правами 600.

Shell
notholy --mode plan -p "map the auth flow in this repo"

Engagements

notholy engage фиксирует, чего может касаться тест, и сверяет с этим команды до запуска. Нужны имя, скоуп и ссылка на разрешение: договор, URL программы или тикет. Скоуп принимает хосты, маски *., IP и CIDR. --exclude важнее скоупа, а --from и --until задают окно.

Shell
notholy engage init --name acme-q4 --scope "*.acme-staging.test,10.20.0.0/24" --exclude vpn.acme-staging.test --until 2026-12-20 --auth "contract 2026-117"
notholy engage status
notholy engage off

Правила и лог лежат в ~/.notholy/engagements/<id>/, вне репозитория, поэтому репозиторий не может подсунуть свой скоуп. Ничего никуда не отправляется.

Пока engagement активен, агент извлекает цели из каждой команды bash до запуска. Команда в скоупе идёт через обычное подтверждение. Для цели вне скоупа нужно ввести хост, и исключение попадает в лог. yolo выключен. Для цели, известной только во время выполнения, например переменной shell, выводится предупреждение.

Каждое решение пишется в log.jsonl с командой, целями, кодом выхода и SHA-256 вывода, и каждая запись связана с хешем предыдущей.

notholy connect claude ставит ту же проверку как хук PreToolUse на вызовы Bash. Там команда вне скоупа запрещается.

Проверка читает текст shell и не резолвит DNS. Она ловит ошибки оператора и песочницей не является, поэтому команда может обратиться к хосту, которого в ней нет.

Длинные сессии

У каждой модели есть размер контекста, он указан как context_length в GET /v1/models. Агент берёт его оттуда и сжимает переписку до того, как запрос превысит примерно 80% контекста. Когда это происходит, появляется тусклая строка.

При сжатии старая часть переписки заменяется одной сводкой, которую пишет модель сессии отдельным вызовом без инструментов. В сводке остаются цель, решения, затронутые файлы, находки, выполненные команды и открытые задачи. Системное сообщение, ваш последний запрос и самые новые сообщения, примерно до 30% контекста, не меняются, но очень длинный вывод инструмента в этой части может быть обрезан посередине. Вызов инструмента и его результаты никогда не разделяются. Вызов для сводки оплачивается как обычный запрос и учитывается в /cost.

КомандаЧто делает
/compactСжимает сейчас и выводит примерный размер до и после
/compact keep the auth findingsТо же, и говорит сводке, на чём сосредоточиться
/autocompact on|offВключает или выключает автоматическое сжатие для этой сессии. В начале сессии включено

Если вызов для сводки не удался, агент оставляет самые новые сообщения, отбрасывает более старые и сообщает об этом. Прерывание или ошибка аккаунта, кредитов или лимита запросов останавливает сжатие, и история остаётся целой. Если API отвечает context_length_exceeded, агент сжимает переписку один раз и повторяет этот шаг. С /autocompact off вы получите ошибку.

Что дальше