Перейти к содержанию

Claude Code

Codedict срезал токены Claude Code на 63%, а счёт на 26%

4 мин чтения

Текст написан ИИ-моделью по источникам, на которые ведут ссылки, и сверен с ними второй моделью. Как мы работаем

Всё о теме: Claude Code: версии и изменения →
Изображение: emergent.sh

Автор codedict 1 ноября выложил в репозитории на GitHub утилиту, которая один раз и без ИИ разбирает проект в локальный индекс. Затем через хук она отдаёт Claude Code вместе с вопросом о коде нужную функцию, места её вызова и сам код. В бенчмарке самого автора на одном закрытом проекте токенов ушло на 63% меньше, а верных ответов было 12 из 12 с обеих сторон, но счёт в долларах упал всего на 26%: утилита сокращает число ходов, а самая дорогая часть сессии, запись контекста в кэш, остаётся на месте.

Началось всё с проекта примерно из 250 файлов на TypeScript, C# и Python, где сессии Claude Code раз за разом упирались в лимит. По замерам автора, дело было не в объёме прочитанного кода, а в числе ходов. На каждом вызове инструмента, будь то grep или открытие файла, Claude Code заново читает весь контекст, от 35 до 50 тысяч токенов за ход. На простой вопрос «где X и кто его вызывает» уходило пять ходов, на вопрос о потоке «от клика до результата» больше двадцати. С индексом ответ приходит за один-два хода.

Установка и другие агенты

Ставится codedict одной строкой, один раз на машину. На macOS и Linux это curl -fsSL https://raw.githubusercontent.com/Marqueos/codedict/main/install.sh | sh, для Windows в README есть такая же строка для PowerShell. Нужен Python 3.11 или новее, права администратора не нужны. Установщик прописывает три хука в ~/.claude/settings.json и короткую инструкцию в ~/.claude/CLAUDE.md, поэтому codedict включается сразу во всех проектах. Прежний файл настроек остаётся рядом как settings.json.codedict-bak, а убрать хуки можно командой codedict setup --remove.

Индекс лежит в SQLite-файле в папке .codedict/ внутри проекта, у которой свой .gitignore. При открытии проекта и после каждой правки от ИИ утилита перечитывает только изменившиеся файлы. На промпты не о коде («спасибо», «закоммить») и на слэш-команды хук ничего не подставляет.

Автоматически codedict подключается только к Claude Code. Cursor, Codex, Gemini CLI, OpenCode и Windsurf получают индекс через MCP-сервер (codedict --root <project> mcp) и строчку в AGENTS.md от codedict agent-snippet. Для любой другой модели, включая локальные через Ollama или LiteLLM, есть ручной режим: codedict search "<вопрос>" --budget 2000, а вывод вставляется в промпт.

Откуда 63%

Для замера автор взял две одинаковые копии закрытого проекта, индекс и инструкцию codedict получила только одна. Памяти Claude и файлов с ответами не было ни в одной, промпт, модель и разрешённые инструменты (только чтение) совпадали. Каждую задачу прогоняли по три сессии с каждой стороны и брали медиану: одна и та же задача от сессии к сессии гуляла до 45%. Ответ засчитывался автоматически, если в нём названы ожидаемые функции и файлы.

По 12 сессиям с каждой стороны токенов ушло 4 543 176 без codedict и 1 666 033 с ним, ходов 138 против 34 (минус 75%), денег 5,76 доллара против 4,27. Разрыв между токенами и долларами автор объясняет кэшем: запись контекста в кэш стоит дороже любых других токенов, и никуда она не девается.

Цифра 63% относится к установке по умолчанию, с хуком: четыре задачи по три сессии. В двух других раундах хука не было, работала только инструкция. Вопросы о потоке дали 52% экономии по сумме при 6 верных из 6, короткие поиски 51% при 30 из 30. Ещё одна проверка обходится без ИИ: скрипт задаёт вопросы прямо индексу и смотрит, находит ли первый же поиск полный ответ. На psf/requests так нашлись ответы на 3 вопроса из 4, на spf13/cobra на 3 из 3.

Где индекс не поможет

Постоянный минимум сессии, по оценке автора около 37 тысяч токенов за ход, codedict не уменьшает: он срезает число ходов, а не этот порог. На размытый вопрос вроде «хорошее ли это приложение» в индексе нечего искать, имён из кода в нём нет. Тогда codedict ничего не подставляет, и Claude работает как обычно.

Связи между функциями утилита находит без компилятора, по именам и объявленным типам, и помечает каждую уровнем уверенности. Обычные MVC-маршруты она выводит по шаблону /{Controller}/{Action}, а по Razor и XAML знает только факты уровня файла. Если у функции нет doc-комментария, её описание в индексе структурное: где лежит, что вызывает, кто вызывает её саму.

Код разбирается на Python, JavaScript, TypeScript/TSX, C#, Java и Go через tree-sitter, SQL/T-SQL и Razor/Blazor через регулярные выражения, остальные файлы попадают в индекс просто как файлы. Словоформы поиск понимает в вопросах на английском и португальском: «parsed» находит ParseFlags.

Повторить A/B-замер на своём коде можно скриптом bench/ab_test.py из репозитория: ему нужны две копии проекта, без индекса и с ним, и файл с задачами. Скрипт гоняет настоящие сессии Claude Code и тратит токены.

Claude Code

Бэкдор в Claude Code ограничился маркетплейсом Cursor

«Все данные указывают, что инцидент ограничен маркетплейсом Cursor», пишет Microsoft о подменённом Claude Code 2.1.312 и 2.1.313. Но удаление расширения не убирает SSH-ключ и автозапуск, которые оно успело прописать. Вы обновляете расширения редактора автоматически или вручную?

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.