graphlens: превращаем репозиторий в типизированный граф — Python, TypeScript, Go и Rust в одной модели

Любой инструмент для «понимания кода», которым я пользовался, рано или поздно упирался в одну из двух стен. Первая — цикл «grep → открыть → прочитать → перейти по импорту → снова grep» . Работает, но медленно, и у него нет ни малейшего представления о том, что process_order , найденный в services.py — это тот самый process_order , который вызывается из api.py , а не однофамилец из tests/ . Когда этим занимается LLM-агент, он ещё и сжигает на этом тонну токенов. Вторая стена — моноязычность . Инструмент прекрасно понимает Python, но слепнет в ту секунду, когда фронтенд на TypeScript дёргает ручку FastAPI на Python. Реальные системы полиглотны. Инструменты вокруг них — обычно нет. graphlens — это open-source фреймворк (MIT), который спроектирован так, чтобы обойти обе стены. Он парсит исходный проект, нормализует его структуру в общий граф-IR и отдаёт этот граф вам — делайте с ним что хотите: анализ зависимостей, навигацию, поиск мёртвого кода или подачу точных ответов LLM-агенту вместо вываливания файлов в контекст.

https://habr.com/ru/articles/1050204/

#graphlens #статический_анализ_кода #граф_кода #treesitter #Python #LSP #code_intelligence #MCP

graphlens: превращаем репозиторий в типизированный граф — Python, TypeScript, Go и Rust в одной модели

Любой инструмент для «понимания кода», которым я пользовался, рано или поздно упирался в одну из двух стен. Первая — цикл «grep → открыть → прочитать → перейти по импорту → снова grep» . Работает, но...

Хабр

Почему AI-агент ищет по коду неправильно, и как это чинит cocoindex-code за две команды

Если вы работаете с Claude Code или Cursor на большом проекте, знаете боль: просишь “найди, где обрабатывается авторизация”, а агент гоняет grep по ключевым словам. Если функция называется validateUserSession, а вы спросили про “авторизацию” — grep её не найдёт. Это ограничение текстового поиска, и его решает семантический поиск через эмбеддинги. Я уже разбирал CodeGraph и SocratiCode из этой ниши, теперь поставил третий — cocoindex-code. Зацепил тем, что ставится в две команды без Docker и баз данных. Прогнал на своём проекте, разобрался с AST-чанкингом и сравнил с аналогами.

https://habr.com/ru/articles/1049814/

#Claude_Code #семантический_поиск #эмбеддинги #Treesitter #AST #MCP #cocoindex #code_search

Почему AI-агент ищет по коду неправильно, и как это чинит cocoindex-code за две команды

Большинство харнессов ищут grep’ом по ключевым словам, а не по смыслу. Поставил AST-based семантический поиск на свой проект, разобрался с устройством и сравнил с CodeGraph и SocratiCode Если вы...

Хабр
Lambda Land

Агент читает 20 файлов ради одной функции. Лечим это графом кода: CodeGraph vs Graphify и другие невиданные твари

Мне регулярно пишут: «У тебя Max-подписка, токенов вагон — зачем городить индексацию кода? Дай агенту grep и не выпендривайся». Полгода назад я бы согласился. Сейчас — нет. Когда агент ищет «где тут авторизация», он спавнит эксплорацию, грепает по ключевым словам и читает 15-20 файлов целиком, чтобы догадаться о связях. Это сотни тысяч токенов, куча tool calls и регулярные промахи. Граф кода схлопывает этот веер чтений в один точный запрос к индексу. Я сейчас гоняю CodeGraph (лёгкий локальный индекс символов для агента), а Graphify (граф знаний всего проекта — код плюс документы, PDF и медиа) только собираюсь попробовать. Это два разных инструмента под разные боли, и их постоянно путают. В статье: чем они отличаются архитектурно, почему модель хранения индекса — следствие этой архитектуры (и как держать индекс при работе с разных машин и командой), их бенчмарки с честной пометкой «не мои цифры», кому что брать — плюс карта соседних инструментов: Gortex, CodeGraphContext, Sourcegraph MCP и Cognee.

https://habr.com/ru/articles/1042930/

#AIагенты #Claude_Code #Codex #codeintelligence #treesitter #MCP #индексациякода #Sourcegraph

Агент читает 20 файлов ради одной функции. Лечим это графом кода: CodeGraph vs Graphify и другие невиданные твари

CodeGraph и Graphify решают разные задачи, хотя оба строят граф кода на tree-sitter. CodeGraph — лёгкий локальный индекс символов для рантайма агента. Graphify — граф знаний всего проекта, включая...

Хабр

Экономия токенов на grep: индекс кода для AI-агентов на Rust + tree-sitter + SQLite + MCP

История идеи проекта Сидел я и делал чанкирование разбора конфигурации 1С в PostgreSQL. Выгрузка конфы мне досталась с 43 расширениями и ноль документации по этим расширениям после 5 команд разработки. Ну, нужно было её разобрать, обогатить бизнес-терминами и превратить во что-то удобоваримое вроде как для RAG. Было всё это долго, нудно, на Питоне, с помощью локальной LLM. Сам я в настоящий момент 1с-ник, но начинал я в своё время с MSSQL-2000 (если кто-то помнит такой), T-SQL, PowerScript, Pascal и пр. романтики. Сидел я, думал о светлом будущем, когда с помощью RAG локальная моделька будет мне писать скрипты, и даже без ошибок (до некоторой степени это получилось). Ну как-то слово за слово, и мне подумалось: есть же семантический поиск по RAG, реализуется MCP-сервером. По сути это запросы — точные, но довольно медленные. А почему тогда во всех остальных случаях, работая с выгрузкой напрямую, модель раз за разом лезет в переборщики файлов — пусть правильно написанные и крайне оптимизированные, но всё же переборщики? КОТОРЫЕ ТРАТЯТ МАССУ ТОКЕНОВ ТУПО НА ЧТЕНИЕ ДЛЯ ПОИСКА?! Почему нельзя это делать запросами в базу данных — нормальными, дешёвыми, точными? И вспомнил я заодно старую идею: когда-то файловую систему в Windows (проект WinFS, времён Vista) хотели сделать похожей на БД, чтобы радикально ускорить работу с файлами. Идею потом свернули, и она как-то забылась. НО я не забыл :):) Идея-то была интересная. Итого — нужно было дать модели инструмент, который заметно экономил бы токены и ускорял поиск данных (особенно в больших массивах кода). И подумалось мне, что не один я такой — есть целый коллектив разработчиков, которому такой инструмент может пригодиться. Поэтому Бог с ним, с Питоном, будем писать на Rust, потому что Rust — это база! (с)

https://habr.com/ru/articles/1042686/

#rust #aiагенты #mcp #claude_code #sqlite #treesitter #индексация_кода #1С #bsl

Экономия токенов на grep: индекс кода для AI-агентов на Rust + tree-sitter + SQLite + MCP

История идеи проекта Сидел я и делал чанкирование разбора конфигурации 1С в PostgreSQL. Выгрузка конфы мне досталась с 43 расширениями и ноль документации по этим расширениям после 5 команд...

Хабр

Is there anywhere any "official" discussion about how to continue with nvim treesitter?

#nvim #treesitter #nvimtreesitter #Neovim

CodeGraph: граф кода для Claude Code вместо grep по файлам. Разбираю архитектуру и проверяю бенчмарки

Если вы работаете с Claude Code на больших проектах, знаете картину: задаёшь вопрос “как устроена авторизация” — и агент рекурсивно бегает по файлам через grep, жжёт токены и время. Я уже разбирал SocratiCode, который решает это через векторный поиск. CodeGraph идёт другим путём — строит граф символов через tree-sitter и хранит в SQLite. Разобрал архитектуру, проверил бенчмарки (92% меньше вызовов — правда, но с нюансами) и сравнил с альтернативами. Заодно поправил телеграм-маркетинг про выдуманного “агента Hermes”.

https://habr.com/ru/articles/1038474/

#Claude_Code #MCP #AIагенты #treesitter #SQLite #индексация_кода #CodeGraph #граф_кода

CodeGraph: граф кода для Claude Code вместо grep по файлам. Разбираю архитектуру и проверяю бенчмарки

Ещё один инструмент индексации кодовой базы под AI-агентов — но с интересной реализацией на tree-sitter и SQLite. Чем отличается от SocratiCode и где реальные границы Если вы работаете с Claude Code...

Хабр

Sabe aquele tipo de bug que fica escondido na sua cara, passa em todos os testes e quando você vai ver, está gerando centenas de falsos positivos? Pois é, passei exatamente por isso recentemente trabalhando no motor de análise estática do Ollanta.

Um de seus componentes o ollanta-scanner, de repente começou a acusar que qualquer chamada de função no código JavaScript era um perigoso eval(), não importava se era uma simples renderização de view ou configuração do sistema.

Fui investigar a fundo e o buraco era bem mais embaixo, envolvendo a forma como o binding Go da API do tree-sitter funciona. O problema não estava na query em si, mas em uma única chamada de método que faltava para avaliar os predicados semânticos.

O código compilava sem reclamar e os testes continuavam verdes porque só validavam o caminho feliz da detecção. Na prática, a ferramenta estava devolvendo todos os matches estruturais crus e ignorando completamente os filtros da regra.

Acabei escrevendo um artigo em meu blog pessoal https://scovl.github.io/2026/05/08/fixgo02/ detalhando toda essa investigação, que no fim das contas virou uma baita reflexão sobre design de APIs, o perigo do acoplamento temporal e aquele viés de confirmação clássico que temos ao esquecer de escrever testes negativos.

Se você trampa com #Go, #desenvolvimento de ferramentas, ou simplesmente curte ler um post-mortem sobre caça a #bugs que dão dor de cabeça, acho que vai gostar do texto.

#go #golang #desenvolvimento #development #developers #ast #cst #treesitter #postmortem

O predicado que ninguém chamou | scovl

Como uma linha de código ausente fez 20 regras de análise estática produzirem centenas de falsos positivos por meses

I use #sqlx, and I wanted syntax highlighting for embedded #SQL queries in my #Rust code. Making that work in #Neovim led me to learning a few things about #Treesitter, and #NixOS packaging conventions. Here's my write-up!

Public replies to this post will appear in a comments section under the blog post.

https://sitr.us/2026/05/03/embedded-sql-highlighting-in-neovim/

Embedded SQL highlighting in Neovim, a look into Treesitter, and some NixOS patching

This is the story of the rabbit hole I went down because I wanted pretty syntax highlighting for embedded SQL queries in my Rust code. I’m a fan of sqlx, which provides macros for writing inline SQL with real-time type checking. Because the queries are in Rust strings the whole query is highlighted uniform green by default. That’s not acceptable! By the end of my journey I had highlighting looking like this: In most cases this kind of embedded syntax highlighting is easy in Neovim, and it’s often set up by default if you use the nvim-treesitter plugin. But I ran into some issues in this particular case. That led me to learn some things about Treesitter, and about how nixpkgs packages Neovim plugins, and Treesitter packages. If you care to follow along, you’ll hear a tale of Neovim, Treesitter, injection queries, patching, NixOS, and more patching!…

sitr.us

I decided to work on this #treesitter parser a little bit more and put together some documentation for it:

https://tree-sitter-fasta.jrhawley.ca/

This won't come as a surprise to software maintainers, but writing good documentation is hard! It takes a lot of time to make sure it's right and that things are understandable.

In this case, I found Tree-sitter's support across editors to be ... sparse. #HelixEditor is by far the easiest, which is why I've documented that one first.

tree-sitter-fasta - tree-sitter-fasta

A parser for the FASTA sequencing file format.