ИИ-агент тратит большую часть бюджета на повторное открытие репозитория, который уже читал. Hilum заменяет это переоткрытие одним индексом, к которому агент подключается: разрешённая структура вместо grep-и-угадай.
Проблема
Каждая сессия начинается с нуля. Агент грепает символ, открывает файлы целиком, чтобы понять, что в них лежит, руками ходит по импортам и заново восстанавливает конвенции, о которых ему рассказывали вчера. Потом сессия заканчивается, и всё это испаряется. Следующая задача оплачивает то же расследование заново.
Это не проблема слабой модели. Это проблема отсутствующей подложки: у агента есть языковая модель и файловая система, а между ними нет ничего, что знало бы, чем код является. Поэтому он угадывает — и вы платите за угадывание токенами, задержкой и регрессиями, которые следуют за уверенно неправильным ответом.
Решение
Hilum Tools — MCP-платформа, которая даёт агентам структурный доступ к кодовой базе вместо сырого текста. Один сервер отдаёт девять доменов инструментов по Model Context Protocol; любой MCP-хост — Claude Code, Cursor, Cline, Continue или ваш собственный SDK-потребитель — подключается к одному и тому же индексу.
Написано на Rust: около 358 000 строк в ~4 700 исходных файлах, на официальном Rust MCP SDK, с транспортами stdio и streamable HTTP и пофильтровкой набора инструментов на уровне сессии. Спроектировал и построил всё сам; работает ежедневно против мультирепозиторного воркспейса — включая тот, в котором живёт этот сайт.
Девять доменов, один сервер
| Домен | Что у него спрашивает агент |
|---|---|
| Code | Структура проекта, go-to-definition, ссылки, иерархия вызовов — гибрид LSP + tree-sitter, не регулярки |
| Find | Выборка под бюджет: «верни ровно столько материала, чтобы ответить на X в N токенов» |
| Docs | Актуальная документация с привязкой к версии для библиотек, которые реально лежат в локфайле, — включая приватные API |
| Memory | Один вызов брифинга возвращает конвенции, последние решения, last-green состояние и известные грабли |
| Graph | Граф решений: почему компонент устроен так и что ставит под вопрос правка |
| Lineage | Происхождение символа — боль, которая его породила, спеки, которым он удовлетворяет, как он менялся |
| Setup | Онбординг репозитория: навигационные индексы, валидация маркеров, генерируемые карты |
| Audit | Постоянные проверки по репозиторию, отдаваемые как находки, а не как стена вывода |
| Agent | Координация: очередь работ, арбитраж claim'ов, долговечный mailbox, диспетчеризация воркеров |
Что это меняет
- Меньше токенов на задачу. Выборка отвечает в бюджет, а не возвращает топ-10 совпадений, оставляя модели платить за то, сколько они весят.
- Контекст, переживающий сессию. Решения, грабли и конвенции читаются автоматически и пишутся осознанно; устаревшая запись архивируется, а не удаляется молча.
- Ответы, заявляющие собственную надёжность. Пустой результат отличает «ничего не совпало» от «ничего не искали» — агент, действующий без присмотра, иначе эти два случая не различит.
- Параллельные агенты, которые не сталкиваются. Владение арбитрируется там, где работа раздаётся, каждый воркер получает изолированное дерево, а вывод переживает породивший его процесс.
Построено по собственной дисциплине
Архитектура здесь не документируется постфактум — она вход, а не выход. 191 запись решений образует валидируемый граф, где висячая ссылка роняет сборку, а не печатает предупреждение, и где правка автоматически ставит под вопрос всё, что от неё зависит.
Под этим лежит нормативная модель из пятнадцати областей — о том, как должен вести себя сервис, потребитель которого автономный агент, а не человек: ответ есть утверждение о собственной надёжности, и сервис отвечает за это утверждение не меньше, чем за содержимое. Модель не называет ни языка, ни движка хранения, ни продукта, а её переносимость держит сборочный гард.
Где проходит платная граница
Всё, что работает против вашего выкаченного дерева, бесплатно и живёт офлайн — кодовая интеллектуальность, локальная индексация, память, происхождение, граф решений, оркестрация в пределах одной машины. Платный тир начинается там, где данные уходят на другую машину или к другому участнику команды: хостируемая синхронизация, общая командная память, координация флота.
Граница архитектурная, а не пейвол поверх фич. Исходники вообще не попадают в путь синхронизации; туда уходят только записи памяти, а индекс пересобирается из дерева.
Статус
Ранний доступ. Сайт продукта и документация подняты, дистрибуционный репозиторий публичен — установщики и ключ подписи релизов уже на месте, следующим шагом ложатся первые подписанные бинарники. Исходники остаются приватными под BSL 1.1 с переходом в Apache-2.0 1 августа 2030 года.
Хотите такое же под вашу кодовую базу или что-то похожее под ваш стек? Для этого есть направления AI-разработка и AI-оптимизация.
