Как обычно, я сидел и думал, как бы уменьшить расходы токенов на Claude Code. Рефлексировал содержимое сессий, исследовал вместе с самим Claude Code и наткнулся на интересную штуку.
Сначала я было хотел написать свой писатель файлов из под Claude Code, вместо Write. Но подумал, что это будет слишком напряжно, если делать это в клоде, поддерживать, и так далее.
Но для редактирования файла его надо читать(обязательно! Как минимум у клода) - что логично. Вопрос: а сколько его надо читать? Конкретно сколько строк его надо читать? Теоретически весь? А практически? Для замены, к примеру, одной строки?!
И да, Read читает по-разному, Но всегда больше одной строки(мелкие файлы читаются за один Read)..Ок, а обязательно ли для редактирования читать весь файл(или куски)? И вот вот тут-то нас ожидает сюрприз! Для снятия "защиты" файла от редактирования (в сессии Claude Code) достаточно прочитать ОДНУ строку указанного файла:):)
Если у тебя есть средство поддержки актуальности теста файла(я намекаю на code-index), то снятие гейта в модели будет выглядеть примерно как:

(кусок кода сессии)

Read C:\MCP-Servers\code-index\Cargo.toml (lines 2-2)

Read C:\MCP-Servers\code-index\CHANGELOG.md (lines 2-2)

Read C:\MCP-Servers\code-index\CHANGELOG_EN.md (lines 2-2)

Read C:\MCP-Servers\code-index\README.md (lines 2-2)

Read C:\MCP-Servers\code-index\README_RU.md (lines 2-2)

(это я готовил к выкладке очередной апдейт code-index.
Почему (2-2)? Сам не знаю, в промте указано (1-1), но везде модель ставит 2-2. Тайна сия великая есть:)).

И потом просто в темпе пулемета вызываются команды Edit.

Следовательно, в контекст тебе НЕ сыпятся куски файлов(которые тебе не нужны), и контекст остается максимально чистым.

Комментарии (13)


  1. sanchesfree
    08.06.2026 20:19

    READ выполняется чтоб понять — может файл уже отредачил другой агент или ещё кто... Будто 1 строку читать в данном случае — опасно


    1. Regsorm Автор
      08.06.2026 20:19

      Согласен, но это при коллективном редактировании(или многопоточном) Я же редактирую один. Я же пишу - в одной сессии клод. В нескольких сессиях... Там можно разрулить, но более сложно.


    1. aamonster
      08.06.2026 20:19

      А у него нет операции типа CAS (compare-and-swap) для таких дел?


      1. Regsorm Автор
        08.06.2026 20:19

        Нет


      1. alex-khv
        08.06.2026 20:19

        Есть. Diff называется


  1. schekinfs
    08.06.2026 20:19

    кажется, вам есть еще чего полезного рассказать :). давайте еще


  1. StudyQA
    08.06.2026 20:19

    Хороший хак. Мы тоже столкнулись с этой проблемой, когда стали гонять ~100 сессий Claude Code в день по разным проектам — контекст забивался чтениями файлов моментально.

    Ещё один паттерн, который хорошо работает в дополнение: CHECKPOINT.md в корне проекта. Каждая сессия при завершении пишет туда своё состояние (что сделала, что дальше, какие файлы трогала). Когда контекст компактится или сессия перезапускается — Claude читает один файл вместо того, чтобы заново сканировать полпроекта.

    По сути это тот же принцип — держать контекст чистым. Только Read(1-1) экономит на уровне отдельных правок, а чекпоинт-файл — на уровне всей сессии.

    А code-index — это свой MCP-сервер для индексации? Или что-то другое?


    1. Regsorm Автор
      08.06.2026 20:19

  1. dkeiz
    08.06.2026 20:19

    а ещё можно читать/писать исключительно сабагентом с младшей моделью.
    Это все весело, пока кросс контекст в коде не понадобится, или не окажется, что модель не прочитала комментарии строкой выше, в которых указано что этот кусок кода менять не надо, менять надо другой
    А ещё для любого суперрида из файлов можно устраивать автокомпакт прошлого функционального вызова с записью только результата, тогда контекст всегда будет свеж, правда и кэш придется каждый раз обновлять.
    Короче проблема одна - модель в целом не знает какой контекст ей нужен. Если начнет гадать - может прогадать. Если начнет слишком детерминировано искать - так может и не нужны ей лишние риды, пусть пишет в столбик на бэйсике?
    Очень хотелось бы узнать на каком стэке такой детерменированный рид реально работает.


    1. Regsorm Автор
      08.06.2026 20:19

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


      1. dkeiz
        08.06.2026 20:19

        это понятно, но хотелось бы объективных бенчмарков. Мой скепсис: если модель не знает, она может начать гадать. Это из очевидного. Но другое - модель может знать половину, а вторую половину придумывать в режиме thinking x(super-ultra)high, и экономии ни по токенам ни по времени не получится. Ваш поиск быстрее, но поиск и так самая быстрая операция из всего инференса.
        Я тут без претензий, у меня любопытство. Ведь если есть гарантированно хороший паттерн - о нем стоит знать побольше.

        Если же вы за счет индексации добились изоляции (частей) проекта, так может сразу на микросервисы попилить? Шутка конечно, но раз уж отвечают, хочется задать вопросов.


  1. nidalee
    08.06.2026 20:19

    Все эти костыли, к сожалению, малополезны - модель постоянно спотыкается о кастрированную выдачу того же ртк - "дай проведу тесты rtk npm run tests - ой, что-то не все видно, дай еще раз с грепом проведу - ой, опять не все, щас без ртк сделаю..." в итоге по ощущениям на ту же операцию с третьей попытки уходит только больше токенов, чем на обычную. Так и тут, будет читать и не видеть то, что ожидал - дай по-другому прочитаю, итд итп. Очень и очень не универсально.


    1. Regsorm Автор
      08.06.2026 20:19

      Если перехватывать все запросы чтения grep/glob/read/bash c целью Read в индексированном каталоге и пропускать все на неиндексированные файлы(тип, размер) - нормально.