одноразовое чтение: Крючок Кода Клода, Предотвращающий Избыточное Чтение Файлов

Разработчик создал PreToolUse-хук под названием read-once, который решает проблему склонности Claude Code многократно читать одни и те же файлы в течение сессии, что потребляет ненужные токены.
Проблема и решение
Claude Code часто перечитывает файлы, которые уже есть в контексте. Например, открытие файла на 500 строк, внесение небольшого изменения и повторное чтение Claude всего файла обходится примерно в 2000+ токенов за каждое чтение. В типичных сессиях одни и те же файлы могут читаться 5-10 раз.
Хук read-once отслеживает, какие файлы Claude уже прочитал в текущей сессии. Когда Claude пытается перечитать неизмененный файл, хук блокирует это и отображает сообщение типа: "read-once: config.rs (~3400 токенов) уже в контексте (прочитано 4 минуты назад, без изменений). Экономия за сессию: ~12 000 токенов."
Как это работает
- При первом чтении: Записывает путь к файлу, время изменения и временную метку, затем разрешает чтение как обычно.
- При повторном чтении неизмененного файла: Блокирует чтение, так как у Claude уже есть содержимое.
- При повторном чтении измененного файла: Вместо разрешения полного перечитывания хук вычисляет разницу и возвращает только то, что изменилось. У Claude уже есть старая версия в контексте, и ему нужна только дельта. Для файла на 500 строк, где изменились 3 строки, это использует ~30 токенов вместо ~2000, экономя 80-95% на итерациях файлов.
Функции и конфигурация
Инструмент учитывает TTL с истечением срока действия записей кэша через 20 минут (настраивается). После истечения срока повторные чтения разрешены, потому что Claude мог сжать контекст и потерять предыдущее содержимое.
Конфигурация выполняется через переменные окружения:
READ_ONCE_TTL=1200- секунды до истечения кэша (по умолчанию 20 минут)READ_ONCE_DIFF=1- включить режим различийREAD_ONCE_DIFF_MAX=40- максимальное количество строк различий перед возвратом к полному перечитываниюREAD_ONCE_DISABLED=1- полностью отключить
Технические детали
Весь инструмент составляет примерно 250 строк bash без зависимостей, кроме jq и diff. Он лицензирован под MIT и устанавливается путем добавления себя в ваши хуки .claude/settings.json.
Разработчик создал этот инструмент, потому что запускает Claude Code в автономном цикле, где затраты на токены быстро накапливаются. Только режим различий, по сообщениям, сократил использование токенов за сессию примерно на 30%.
📖 Read the full source: r/ClaudeAI
👀 Смотрите также

TeamHero v2.6.1: Открытая Платформа для Управления ИИ-Агентами Claude
TeamHero v2.6.1 — это локально-ориентированная платформа с открытым исходным кодом, которая создаёт управляемую команду агентов Claude с такими функциями, как режим автопилота, вложенность подзадач, представления потоков и постоянная память. Инструмент работает на Node.js с простой панелью управления на HTML/CSS/JS и не требует базы данных.

Извлечение компонентов OpenClaw: Опыт разработчика с очередью Lane и системой памяти
Разработчик попытался извлечь определённые компоненты из OpenClaw для использования в персональных AI-агентах, протестировав систему выполнения задач Lane Queue и изучив систему памяти memsearch. Lane Queue была успешно перереализована на Python с использованием документации, что выявило пробелы в ней и 13 проблем в реализации.

Результаты тестирования: Когда использовать Claude Opus с Codex или чистый Opus для генерации кода
Контрольный тест проверил подход 'Планирование с Opus, выполнение с Codex' на трех реальных задачах программирования. Результаты показывают точку пересечения затрат примерно на 600 строках кода с конкретными рекомендациями в зависимости от размера проекта.

Calmkeep: Внешний слой непрерывности для противодействия дрейфу LLM в длинных сессиях
Calmkeep — это внешний слой непрерывности, предназначенный для противодействия дрейфу LLM в длинных сессиях. В тесте на 25 шагов при сборке бэкенда он показал 85% целостности против 60% у стандартного Claude, а в юридической сессии — 100% против 50%.