Vitaliy Zarubin | @keygenqt
456 subscribers
1.12K photos
280 videos
3 files
578 links
Привет! Я инженер-программист компании ОМП. За свою карьеру я сменил много платформ и языков, и продолжаю учить новые. На канале рассказываю о своей работе и моих pet-проектах.
Download Telegram
Столько разговоров было о форматах... JSON просто взял и сделал 89 KB как и TOON. Зачем люди всё усложняют? 🤷‍♂️
👍6🔥1
Vibe Analyzer: что нового

AST-сканер отполирован:
🍔 13 языков — от Rust до ArkTS, включая Bash/Batch
🛟 Тесты на реальных данных, контроль качества
⚠️ Экспорт в JSON/JSON5/TOON/XML — можно и в LLM-контекст, и в API

Добавил LLM-обогащение:
🥳 Стабильно даже на qwen2.5-coder:3b
👍 Каждый файл получает описание и 3-5 тегов
🤩 Батчинг с умным ограничением по символам

Кластерный режим:
⚡️ Разные машины с разными настройками
⚡️ Конкуренция — мощный сервер возьмёт больше задач
⚡️ M4 Pro + 4070 Ti = 100 файлов ~30 секунд

Что есть сейчас:
Полный дамп проекта AST
Полный дамп проекта AST+LLM
Дальше — OpenSearch и MCP

Представьте, что любой AI-ассистент сразу понимает структуру вашего проекта. Не потому, что вы ему что-то объяснили, а потому что он получил знания о проекте. Сейчас Vibe Analyzer умеет проходить по проекту и создавать аннотированный слепок: AST, метаданные, сгенерированные локальной моделью описания и теги. Это не просто список файлов, а готовая семантическая карта проекта — компактная, быстрая, заточенная под Agentic RAG. Следующий шаг — интеграция с OpenSearch и MCP. Тогда агент не будет тратить контекст на слепое чтение файлов, а сможет точечно запрашивать через индекс именно то, что ему нужно. Спросит: «что у нас есть по этой теме?» — и получит точный, компактный ответ, в котором будет всё необходимое для его работы.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍2
Vibe Analyzer: что нового

OpenSearch:
🚀 Три индекса на проект: meta, files, analysis
Bulk-операции и Scroll API — загрузка 643 файлов за секунды
🎯 Nested-маппинги для AST — поиск по функциям, классам, импортам
🔒 BLAKE3-хеши для каждого файла — основа инкремента

Инкрементальная индексация:
⏱️ 15-100x ускорение — индексируются только изменившиеся файлы
💾 Проверка по хешам через OpenSearch
🔧 --force для полной переиндексации когда нужно
📄 Экспорт AST или AST+LLM — готовый контекст для бесплатных чатов

CLI поиск:
search ast UserService — поиск по коду с умными бустами
🎯 Path (5.0) > Tags (5.0) > Functions (3.0) > Comments (2.0)
0.1 секунда на поиск по 2+ проектам

Стабильность на 3B:
600 файла за ~3 минуты на qwen2.5-coder:3b
🧠 Умные промпты с шаблонами — модель следует указаниям
🔄 Ретраи и восстановление кривых JSON
🚫 Побеждены дедлоки — FuturesUnordered + атомарные флаги

Следующие шаги:
👉 Расширение CLI поиска (meta, file, get, stats)
👉 MCP сервер для AI-ассистентов
👉 Docker (образ и docker-compose)
👉 Документация по конфигурации и API

🔗 https://gitcode.com/keygenqt_vz/vibe-analyzer
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6
OpenSearch готов - расчехляем свои знания по Axum для MCP.
🔥7
MCP (Streamable HTTP) - готов. Это было просто. Отладка сложнее. Цель: добиться стабильной работы на 3B, тогда все остальные B тоже смогут.
🔥6
Пришлось написать небольшой фреймворк для тестирования MCP-инструментов.

Я не смог найти что-то вменяемое и готовое — одни не соблюдают спецификацию, другие просто падают. Альтернатив, которые работают как надо, по сути и нет. Пришлось писать свой на Rust.

Главная задача — контролировать качество ответов моделей при работе с MCP. Сервер и клиент общаются через rmcp (streamable HTTP), тесты вызывают LLM через Ollama и полностью контролируют весь стек запросов.

Теперь каждый запрос можно детально проанализировать и добиться идеального tools, который сможет минимизировать поглощение контекста моделями.

RAG не должен зависеть от размера оперативной памяти.
🔥5👍3
Vitaliy Zarubin | @keygenqt
Photo
Думаете это было просто?

- Бесконечные циклы: модель вызывала тулсы пока не упрётся в лимит
- Галлюцинации имён: update_index, list_tree, show_structure
- Зависания: модель не понимала когда остановиться
- Путаница с target: null, пустые строки, кривые вызовы
- Утечка контекста: работал только первый запрос

Теперь я понимаю, почему многие MCP проекты работают как работают.

Моё мнение остаётся при мне: модели не способны самостоятельно создавать достойные продукты. Три месяца с ними. Да, они помогают, но финальный эксперт - это человек. Моделям плевать на результат, а человеку - нет.
🔥7
#fyi А вы знали, что ваша нелюбовь к дебаггерам и мокам — это не каприз, а философия? 🎯

Это называют Классической школой или менталитетом UNIX.

Суть проста:
🔸 Доверяй реальному взаимодействию, а не симуляции.
🔸 Сложность отладки должна заставлять думать, а не жать кнопки.
🔸 Лучше честный лог, чем красивый брейкпойнт.
🔸 Лучше интеграция, чем изоляция.

Такой подход разделяют Линус Торвальдс, Кент Доддс, DHH (создатель Rails), авторы UNIX и многие системные программисты.

А вы в этом лагере или предпочитаете современный комфорт IDE и моков? Классицист или Мокист? =)
🔥3👍1💩1
Нашёл подход к моделям. Стабилизация вызова тулов - непростая задача. Чтобы 3B тебя понимала, 7B не выдумывала лишнего, а 14B не упиралась в лимиты по памяти - нужна тонкая настройка MCP-методов, их описания и особая обработка входящих параметров.

Для отладки MCP потребовался собственный тестировочный фреймворк. Он показал себя отлично: все уровни запросов чётко отслеживаются, сценарии выполняются стабильно.
5🔥7👍3
Vibe AnalyzerMVP готов 🎉

Agentic RAG для кодовых баз и баз знаний. AST-парсинг, LLM-обогащение, индексация в OpenSearch. 11 MCP инструментов дают AI-моделям свободу поиска — они сами решают что искать и как.

Почему Agentic RAG

Классический RAG добавляет найденные документы в промпт — чем больше контекст, тем больше VRAM. Vibe Analyzer возвращает структурированные результаты через инструменты, сохраняя контекст максимально чистым:

- 📉 Минимальный контекст — модель получает только то, что вернул инструмент
- 🧠 Без эмбеддингов — поиск по ключевым словам и AST через OpenSearch
- 🔗 Один вызов = полный ответ, без набивания промпта документами
- ♾️ Контекст остаётся маленьким независимо от размера проекта

Возможности

- 🌳 AST-парсинг для 13 языков
- 💡 Обогащение AST через LLM (описания, теги)
- 📄 Экспорт AST и AST+LLM в JSON, JSON5, TOON, XML
- 📝 Семантический и морфологический поиск по коду и базе знаний
- Инкрементальная индексация
- 📦 Самодостаточные инструменты (один вызов — полный ответ)
- 🗂️ Поддержка трёх языков (EN, RU, CN)
- 🦀 Написан на Rust — быстро и экономично по памяти

Все тесты (180 запросов, 3 модели) пройдены успешно. Ещё предстоит поработать над простой доставкой приложения людям, но при желании уже можно попробовать — проект открыт:

🔗 https://gitcode.com/keygenqt_vz/vibe-analyzer
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12
Сначала дизайн, потом контент. Документация Vibe Analyzer в процессе.
🔥7
📕 Документация Vibe Analyzer готова!

От быстрого старта до внутренностей AST-парсинга и MCP-инструментов.

🔗 https://vibe-analyzer.keygenqt.com

Enjoy.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4
vibe-ast 0.0.1

Вынес парсеры AST из vibe-analyzer в отдельный крейт. Теперь это доступная всем библиотека:

🦀 14 парсеров языков, скриптов и Markdown
📦 Единая структура, простое подключение
🏷️ Мультиязычные теги — EN, RU, CN
Без сети, без БД, без конфигов
🔧 Решена проблема совместимости tree-sitter-грамматик

🔗 https://crates.io/crates/vibe-ast
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2
#fyi
Собеседования никогда не работали и не думаю, что будут. Всегда говорю — пишите пэты, они отражают ваши реальные скиллы. А что теперь? Легко можно собрать тулс на базе Vibe Analyzer, который объективно оценит ваш уровень по пэтам. И все эти «напишите сортировку пузырьком» или «кем вы себя видите через 10 лет» — можно отправить в мусорку. Think about it.
1👍3🔥2
vibe-fs 0.0.1

Вынес файловые утилиты из vibe-analyzer в отдельный крейт. Маленький, но важный:

🔍 Рекурсивное сканирование с поддержкой .gitignore
🔄 Инкрементальное сканирование
🧩 Фильтрация сабмодулей Git
🚫 Дефолтные игноры: target, node_modules, .git, *.log
💾 Снапшот в MessagePack: ~/.vibe-fs-snapshot
BLAKE3 хеширование

🔗 https://crates.io/crates/vibe-fs
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥2👍1
Теперь я знаю еще больше. Я знаю, как там после 40ка. 🎂😅
🎉28😁1