Об этом проекте
claude-code-rlm — это хук для Claude Code, который выполняет предварительное исследование кодовой базы перед тем, как основная модель обработает запрос. Вместо того чтобы позволять основной модели (Opus или Sonnet) тратить первые вызовы инструментов на ориентацию, хук сначала отправляет более быструю и дешевую модель Haiku для изучения репозитория и передает результаты основной модели в виде внедренного контекста.
Как это работает
1. Claude Code вызывает rlm-hook.mjs через хук UserPromptSubmit, передавая JSON через stdin с такими полями, как prompt, cwd и transcript_path.
2. Тривиальные входные данные пропускаются немедленно: запросы короче настроенной минимальной длины, простые команды shell (ls, pwd, cat, echo, git status, npm, yarn), односложные подтверждения, слэш-команды, такие как /help, /clear и /compact, а также вставки с большим количеством кода, где более половины ввода составляют блоки кода.
3. SHA-256 хэш запроса и рабочей директории проверяется по файловому кэшу с TTL по умолчанию один час.
4. При отсутствии данных в кэше запускается Claude CLI с настроенной моделью Haiku, ограниченной инструментами Read, Glob, Grep и git Bash, и системным промптом, предписывающим исследовать кодовую базу в пределах настраиваемого количества вызовов инструментов.
5. Haiku записывает свои выводы в промежуточный JSON-файл; хук форматирует их в структурированный блок rlm_preresearch, содержащий намерение, резюме, релевантные файлы, существующие паттерны, последние изменения, предлагаемый подход, задачи и предупреждения, затем выводит его в stdout, чтобы Claude Code внедрил его перед пользовательским запросом.
6. Любая ошибка, включая тайм-ауты, ошибки API и ошибки парсинга JSON, приводит к выходу без вывода, чтобы хук не блокировал и не искажал беседу.
Режимы и конфигурация
Все настраивается через переменные окружения. Agentic mode (по умолчанию) включает исследование на основе инструментов и занимает примерно 20 секунд при отсутствии данных в кэше; fast mode выполняет краткий анализ без вызовов инструментов примерно за 4 секунды. Другие настройки включают имя модели, общий тайм-аут, TTL кэша, минимальную и максимальную длину ввода, максимальное количество итераций инструментов, пути к кэшу и логам, а также файл метрик. Опциональный режим SDK-Direct использует Anthropic SDK с API-ключом вместо дочернего процесса.
Дополнительные функции, описанные в README, включают опциональный семантический кэш, который сравнивает эмбеддинги с настраиваемым порогом косинусного сходства, повторное использование контекста, которое анализирует последние блоки RLM, чтобы избежать повторного анализа того же намерения или файлов, и лог метрик в формате JSONL с прилагаемым дашбордом (запускаемым локально на порту 9876), отображающим распределение задержек, процент попаданий в кэш, производительность по режимам и расчетную стоимость Haiku.
Отчетные показатели задержки: около 27 мс при пропуске, около 37 мс при попадании в кэш, примерно 20 с в agentic mode при промахе и примерно 4 с в fast mode.
Требования и установка: Node.js 18 или новее и Claude Code CLI в PATH. Предоставляемый скрипт установки копирует хук в директорию хуков Claude и делает его исполняемым; в файл настроек Claude Code должна быть добавлена запись о хуке с командой и тайм-аутом. Тестирование и бенчмаркинг запускаются через npm-скрипты, а интеграционные тесты требуют наличия рабочего бинарного файла claude. Проект выпущен под лицензией MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.