↓Перейти к содержанию
  1. Gortex/

Gortex: что изменилось и как сравнивать с альтернативами

·8 минут·

За неделю произошло многое. Когда я писал первую статью про Gortex, было 33 языка и 48 MCP-инструментов. Сейчас — 92 языка и 44 инструмента (некоторые объединили), плюс режим демона, компактный формат передачи данных, уровни точности рёбер через LSP и трекер стоимости, который показывает, сколько долларов вы сэкономили на AI API.

Эта статья — о том, что изменилось, и о честном сравнении с другими инструментами.

Что нового #

92 языка #

Было 33. За несколько дней парсерной работы стало 92. Добавились движки шаблонов (Blade, EJS, Jinja, Twig, ERB, Liquid, Pug, Handlebars), блокчейн-языки (Solidity, Move, Cairo, Noir), научные вычисления (Julia, R, MATLAB, Fortran, COBOL, Ada, Pascal), новые языки (Mojo, Odin, V, Carbon, Gleam), шелл-варианты (PowerShell, Zsh, Fish) и всё остальное.

При 92 языках вопрос «поддерживает ли мой стек» практически снимается для любого неэзотерического проекта.

Режим демона #

Раньше каждое окно редактора запускало свой процесс Gortex. Если у вас одновременно открыты Claude Code и Cursor на одном репозитории — два отдельных индекса. Теперь есть демон:

gortex daemon start --detach
gortex daemon install-service   # LaunchAgent на macOS, systemd --user на Linux

Все редакторы подключаются как тонкие stdio-прокси. Один граф — общий для всех инструментов. Демон остаётся запущенным при перезапуске редакторов и следит за изменениями файлов через fsnotify. Переключение веток тоже обрабатывается умно — вместо переиндексации всего при git checkout запускается git diff --name-status и патчатся только изменившиеся файлы.

gortex install и gortex init #

Настройка разделена на два шага. gortex install — один раз на машину, пишет артефакты уровня пользователя: MCP-конфиг, скиллы, слэш-команды, хуки. gortex init — один раз на репозиторий, пишет то, что относится к конкретному проекту: .mcp.json, CLAUDE.md, скилл-файлы по сообществам, блоки маршрутизации во всех обнаруженных файлах инструкций агентов.

Инструкции по использованию инструментов больше не дублируются в каждый репозиторий. Один экземпляр на пользователя.

Формат GCX1 #

MCP-инструменты теперь поддерживают опциональный компактный формат. Передайте format: "gcx" любому из 13 поддерживаемых инструментов — ответ придёт в более компактном виде. Измерено на 20-кейсовом бенчмарке: медиана −27,4% экономии tiktoken по сравнению с JSON, лучший случай −38,3%. Это поверх уже существующего снижения на ~94% от отказа читать файлы целиком. TypeScript-декодер есть на npm: @gortex/wire.

Уровни точности рёбер LSP #

Каждое ребро в графе вызовов теперь несёт поле origin с уровнем уверенности: lsp_resolved, lsp_dispatch, ast_resolved, ast_inferred, text_matched. Только tree-sitter — 70–85% точности разрешения вызовов. LSP-провайдеры (go/types, SCIP) поднимают до 95–100%.

Инструменты get_callers и find_implementations теперь принимают параметр min_tier. Если вы делаете высокорисковый рефакторинг, где пропущенный вызов означает ошибку в рантайме — укажите min_tier: "lsp_resolved" и получите только вызовы, подтверждённые компилятором.

Накопительный учёт стоимости #

gortex savings

Команда показывает, сколько токенов сэкономил Gortex за все сессии, переведённых в реальные доллары по стоимости конкретных моделей (Claude Opus, Sonnet, Haiku, GPT-4o, GPT-4o mini). Данные читаются из ~/.cache/gortex/savings.json, который сохраняется между перезапусками. Токены теперь считаются через tiktoken (cl100k_base) — тот же токенизатор, что используют Claude и GPT-4.

15 IDE-интеграций #

С прошлой статьи добавились шесть агентов: Codex CLI, Gemini CLI, Zed, Aider, Kilo Code, OpenClaw. gortex install и gortex init автоматически определяют все 15 и настраивают только те, что есть на машине.

Безопасность дистрибуции #

Готовые бинарники для linux/amd64, linux/arm64, darwin/amd64, darwin/arm64. Каждый релиз подписан cosign, имеет провенанс SLSA-3 и прошёл проверку VirusTotal. Homebrew-тап: brew install zzet/tap/gortex. Есть пакеты для Debian, RPM и Alpine.

Производительность на больших репозиториях #

Измерения на Apple Silicon:

РепозиторийФайлыВремя индексацииПиковая память
torvalds/linux70 333~3 мин5,07 GB
microsoft/vscode10 762~1 мин580 MB
zzet/gortex4303,4 с52 MB

Ядро Linux работает. Большинство проектов значительно меньше.


Как сравнивать с альтернативами #

Есть несколько подходов к тому, как дать AI-агенту контекст о кодовой базе. Честный взгляд на каждый.

repomix #

repomix упаковывает репозиторий в один текстовый файл и помещает его в контекстное окно. Просто, работает с любым AI-инструментом, нулевая настройка.

Хорошо работает для небольших репозиториев и разовых задач. Агент видит всё сразу и может отвечать на вопросы без инструментальных вызовов. Для репозиториев до нескольких тысяч файлов это нередко правильный выбор.

Проблемы появляются с ростом кодовой базы. Упаковать 50 000 файлов в контекст невозможно — вы выйдете за пределы любого контекстного окна и потратите много токенов. Нет помощи для длительных сессий — каждый новый разговор начинается с полной упаковки. Нет графа, нет межрепозиторных запросов, нет обнаружения контрактов, нет режима наблюдения.

repomix для небольших проектов и быстрых задач. Для больших кодовых баз и длительных сессий нужно что-то графовое.

Встроенная индексация Cursor (@codebase) #

Cursor индексирует репозиторий в фоне. Вы задаёте вопросы через @codebase, он достаёт релевантный код. Нулевая настройка, автоматически.

Для обычной повседневной работы этого достаточно. Агент неплохо ориентируется в кодовой базе без дополнительного инструментария.

Ограничения: агент получает результаты поиска, а не запрашиваемый граф с MCP-поверхностью. Он не может делать анализ радиуса взрыва, обнаружение контрактов или анализ мёртвого кода как структурированные вызовы. Нет межрепозиторной поддержки. Нет guard-правил. Нет возможности передать агенту кастомные графовые запросы. Непрозрачно — нельзя увидеть уровень уверенности рёбер или узнать, когда индекс устарел.

Если вы работаете с однообразным однорепозиторным проектом средней сложности — встроенная индексация Cursor может быть достаточной. Если нужна межрепозиторная работа, полиглотный стек или микросервисы с проверкой контрактов — нужно что-то структурированнее.

GitNexus #

GitNexus — инструмент, в ответ на который появился Gortex. Подробности в первой статье.

Коротко: TypeScript, 8 языков, 16 MCP-инструментов, персистентное хранилище LadybugDB, хостируемый веб-проводник. Хостируемый проводник на gitnexus.vercel.app — настоящее преимущество: поделиться графом можно без какой-либо локальной настройки.

GitNexusGortex
Языки892
MCP-инструменты1644
ХранилищеПерсистентное (LadybugDB)In-memory + снимок на диске
IDE-интеграции—15
Встроенное редактирование—Есть
Обнаружение контрактов—Есть
Точность рёбер LSP—Есть
Режим демона—Есть
Хостируемый проводникЕсть—
Только self-hosted—Да

GitNexus проще запустить, если не хочется разворачивать инфраструктуру. Если нужно языковое покрытие, поверхность инструментов или мультирепозиторная поддержка — Gortex покрывает больше.

Sourcegraph / Cody #

Sourcegraph проверен в продакшене на корпоративном масштабе — крупные организации со сотнями репозиториев, сложным управлением доступом, выделенной поисковой инфраструктурой. Cody — их AI-ассистент поверх.

Философия разная. Sourcegraph создан для людей, просматривающих код. Поиск, веб-интерфейс, навигация — всё оптимизировано под разработчика, читающего код в браузере. Эффективность токенов для агентов — не основная цель.

Gortex создан специально для AI-агентов: MCP-поверхность для инструментов, ответы оптимизированы по количеству токенов, guard-правила для предотвращения ошибок агента, анализ радиуса взрыва. SaaS-варианта у Gortex нет — вы запускаете его сами, всё остаётся локально, код не покидает машину.

В крупной организации с нуждой в хостируемой инфраструктуре, SSO и корпоративном поиске для людей — Sourcegraph правильный выбор. Для разработчика, которому нужен оптимизированный для агентов граф кода на ноутбуке — Gortex.


Честная оценка #

Когда Gortex не подходит:

  • Маленький проект. До нескольких тысяч файлов repomix или встроенная индексация Cursor обычно достаточна.
  • Хотите нулевую настройку. gortex install и gortex init занимают около десяти минут — это всё равно десять минут.
  • Нужен hosted-вариант. Gortex сейчас только self-hosted — но поддержка hosted-режима стоит в приоритетном роадмапе. Проверьте актуальный статус на github.com/zzet/gortex, когда будете читать эту статью.
  • Крупная корпорация с требованиями compliance. Gortex серьёзно относится к безопасности цепочки поставок — каждый релиз подписан cosign с провенансом SLSA-3, и вы можете убедиться, что бинарник не был подменён. Но управление доступом, аудит-логи и коммерческие контракты поддержки пока отсутствуют. Если это стоппер при оценке Gortex для вашей организации — пишите напрямую на [email protected].

Когда Gortex стоит потраченного времени на настройку:

  • Экономия токенов реальна. Вот вывод gortex savings из моего использования за одну неделю — и не самую отлаженную: первые сессии ещё настраивались:

    Calls counted:   599
    Tokens returned: 219,720
    Tokens saved:    2,979,097
    Efficiency:      14.6x
    
    Cost avoided (tokens saved × input-price, USD):
      claude-haiku-4.5   $2.98
      claude-opus-4      $44.69
      claude-sonnet-4    $8.94
      gpt-4o             $7.45
      gpt-4o-mini        $0.45
    

    599 вызовов инструментов. 2,9 млн сэкономленных токенов. По ценам Opus — это $44 за одну неделю. И не самую оптимальную неделю: первые сессии ещё настраивались. С нормально отлаженной конфигурацией текущая экономия у меня составляет не меньше $50–60 в неделю — что на фоне $200 в месяц за подписку Claude является заметным вкладом. И это ещё без учёта сохранения контекстного окна: меньше потраченных токенов за сессию означает более длинные и связные сессии до достижения лимита. Для тех, кто работает на плане с ограничениями использования, это важно в том смысле, в котором деньги не помогут — подписку можно улучшить, но час ожидания, пока лимит сбросится, не купишь ни за какие деньги.

  • Полиглотный стек. 92 языка означают, что весь проект виден — Go-сервисы, Ruby-скрипты, HCL-инфраструктура, Protobuf-схемы — всё в одном графе. Большинство инструментов покрывают восемь языков и игнорируют остальное.

  • Несколько репозиториев. Вы работаете над бэкендом, фронтендом и общей библиотекой. В мультирепо-режиме анализ радиуса взрыва охватывает все три. Обнаружение контрактов находит места, где маршруты Go API не совпадают с тем, что ожидает TypeScript-клиент — через границы репозиториев.

  • Большие кодовые базы. Ядро Linux индексируется примерно за 3 минуты при 70К файлах. VSCode — за 1 минуту. Инкрементальные перезапуски после этого занимают ~200 мс.

  • Встроенное редактирование без чтения файлов. edit_symbol и rename_symbol позволяют агенту патчить код напрямую по ID символа. Никакого цикла «прочитать → найти → переписать весь файл». Это существенно сокращает количество инструментальных вызовов при многофайловых рефакторингах.

  • Guard-правила. Вы определяете границы зависимостей в .gortex.yaml. Агент не сможет случайно импортировать инфраструктурный код в доменный пакет без предупреждения до ревью. Полезно для любой кодовой базы, где важна архитектурная дисциплина.

  • Конфигурация агента, которой можно доверять. audit_agent_config проверяет CLAUDE.md, AGENTS.md, .cursor/rules и аналогичные файлы против живого графа — находит устаревшие ссылки на символы и несуществующие пути, которые накапливаются по мере развития кода. Больше никто этого не делает.

  • Несколько членов команды на разных редакторах. Один демон, один граф, 15 агентов настраиваются двумя командами. Все в команде — будь то Claude Code, Cursor, Kiro или Copilot — работают против одного и того же индекса.

  • Высокорисковые рефакторинги. Рёбра, обогащённые через LSP, несут уровни уверенности. Отфильтруйте get_callers до min_tier: "lsp_resolved", когда нужны результаты, подтверждённые компилятором, а не эвристические совпадения. Точность разрешения вызовов 95–100% вместо 70–85%.


Код: github.com/zzet/gortex

brew install zzet/tap/gortex   # macOS
gortex install                  # один раз на машину
gortex init                     # один раз на репозиторий (опционально)