intent-lens объясняет команды Claude Code до их запуска

Разработчик под ником Dhananjay-JSR 2 ноября показал на Show HN мод intent-lens для Claude Code. Пока вызов инструмента ещё ждёт выполнения, мод выводит над полем ввода одну фразу человеческим языком о том, что агент собирается сделать. Описание и код лежат на GitHub. Рекурсивное удаление, force-push или curl … | sh красят эту строку в красный и вызывают предупреждение даже при скрытой ленте, причём без единого токена, но автор называет проверку напоминанием, а не песочницей: она сверяет только текст команды.
Штатная строка инструмента в Claude Code появляется, когда Claude уже решил действовать. В автоматическом режиме вызовы идут быстрее, чем их успеваешь прочитать, а после выполнения сворачиваются в сводку вроде «Ran 2 shell commands». Конвейер find | xargs | awk с первого взгляда почти ничего не говорит. intent-lens переводит его во фразу, а сама команда остаётся в строке инструмента.
Как поставить
Мод лежит в стороннем каталоге claude-mods, поэтому сначала регистрируют каталог, затем ставят сам мод: /plugin marketplace add Dhananjay-JSR/claude-mods и /plugin install intent-lens@claude-mods. Из шелла то же самое делают claude plugin marketplace add Dhananjay-JSR/claude-mods и claude plugin install intent-lens@claude-mods. Регистрация нужна для любого маркетплейса, кроме официального claude-plugins-official: его Claude Code подключает сам при первом интерактивном запуске. Установка кешируется, новую версию подтягивает claude plugin update intent-lens.
Для одной сессии хватит флага --plugin-dir с путём к plugins/intent-lens в клоне репозитория. Чтобы мод грузился в каждой сессии, его каталог добавляют в CLAUDE_CODE_PLUGIN_DIRS, пути там разделяются двоеточием. Загрузился ли мод, видно в /plugin на вкладке Installed или по ответу /intent. Лицензия MIT.
Установленный плагин, как отмечают на DEV Community, может исполнять код на машине с правами пользователя, а имя маркетплейса говорит только о том, кто ведёт каталог. У intent-lens хуки, оба движка и правила риска собраны в одном файле hooks/register.js.
Во что обходятся режимы
Движков два. Локальный (голубой маркер ▸) переводит имя инструмента и его аргументы во фразу детерминированно: без сети, без токенов и без задержки. Модельный (пурпурный ✦) отправляет haiku имя инструмента, до 900 знаков аргументов и локальный черновик. Он просит не больше 12 слов, обрезает ответ на 110 знаках, ждёт не дольше 1,5 секунды и тратит до 60 выходных токенов на вызов плюс промпт. Если модель ошиблась, отказала или ответила медленно, остаётся локальная строка, и сам вызов от этого не ломается.
Режим по умолчанию auto сразу рисует локальную строку и зовёт модель только для правок, незнакомых инструментов, MCP-инструментов и шелл-команд, которые Claude не описал. На правку уходит несколько сотен токенов. Режим model зовёт haiku на каждый вызов и добавляет каждому до 1,5 секунды задержки. Переключаются командой /intent mode local|auto|model. Запросы идут с вашими учётными данными Claude Code, как любой другой запрос сессии. Безголовые запуски (claude -p, Agent SDK) не тратят ничего: модель вызывается только после события отрисовки интерфейса, а в таких запусках его нет.
Штатный инструмент Bash и так требует от Claude описывать каждую команду, и intent-lens выводит это описание, обычно спрятанное в строке инструмента. Под конвейером из трёх и более звеньев появляется вторая строка с разбором по шагам, например «6 steps · fetch → extract values → sort → count repeats → sort by number → top 5». Соответствия буквальные: curl становится fetch, uniq -c - count repeats, head -5 - top 5. Вертикальная черта внутри программы jq новым звеном не считается. Команда /intent words terse включает более короткий словарь.
Красная метка и её пределы
Шаблоны риска такие: рекурсивный rm, git reset --hard, git clean -fd, force-push, DROP и TRUNCATE, mkfs и dd, форк-бомбы, curl … | sh, sudo, chmod -R 777 и публикация пакетов. Совпадение считается локально и показывается всегда, в режиме model и при скрытой ленте тоже, а разрушительная команда в модель не уходит никогда.
Решает, что агенту можно выполнить, слой разрешений Claude Code, объясняют в Anomity. Правила deny там проверяются раньше ask и allow, узкое правило вроде Bash(rm *) блокирует только совпадающие команды и оставляет инструмент доступным, а хук PreToolUse получает вход инструмента до запроса разрешения и может вернуть deny.
Лента показывает только текущий вызов и гаснет, как только он вернулся. При параллельных вызовах строку занимает самый новый, а вызовы субагентов пропускаются, так что строка всегда относится к основному потоку. Историю заменяет /intent log: последние 20 вызовов с исходом ✓ или ✗ и движком. Полный журнал каждого вызова в локальной SQLite ведёт отдельная утилита Toolog.
Ленту можно свернуть сочетанием Ctrl+X Ctrl+A. Строку от модели автор предлагает читать как подсказку о том, что, по словам самого Claude, он делает. Истина, пишет он, в аргументах вызова.
Дальше
Anthropic открыла отдельный сайт для своего IPO
У IPO Anthropic появился свой сайт, но пока на нём одна строка про то, что подробности будут позже. А роуд-шоу для инвесторов, по оценке Zacks, может стартовать уже на неделе 9 ноября при оценке до 2 триллионов долларов. Акции Anthropic вы бы взяли на размещении или подождали бы первых торгов?
Читайте также
- Toolog ведёт локальный журнал вызовов Claude Code
- Codedict срезал токены Claude Code на 63%, а счёт на 26%
- Дерево файлов покажет, что читает и правит Claude Code
- lcc сжимает сессии Claude Code, не пересказывая их
- С плагином catnap Claude Code сжимает контекст после задачи
- Скрипт проверит, не ломает ли сеть загрузки в Claude API
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите, чтобы оставить комментарий. Он появится после модерации.

