Для вашего комфорта и улучшения работы сайта мы используем cookie
Принимаю
Автоматическое покрытие LLM-сгенерированными спецификациями крупных программных проектов на языке Rust с опорой на граф зависимостей
Тезисы
Существует идея о том, что спецификации к коду могут улучшить качество генерации ответов LLM. Если их нет, то наивный подход получения массива спецификаций — запуск агента в каталоге с тысячей взаимосвязанных файлов — приводит к огромному расходу токенов, галлюцинациям, потере данных при сжатии контекста и другим проблемам. Поэтому возникает идея алгоритмически упорядочить процесс покрытия проекта спецификациями.
SPECOHOD извлекает модули, публичные сущности и зависимости через API rust-analyzer, строит граф и обходит его в топологическом порядке: от независимых модулей к зависимым. Для каждого модуля одним вызовом LLM генерируется спецификация на основе кода самого модуля и спецификаций его зависимостей.
Обнаружилось, что SPECOHOD не только работает быстро (за 6–8 часов он покрывает спецификациями проект объёмом 370 000 SLOC, расходуя 50 000 000 входных токенов и 4 000 000 выходных), но и существенно повышает качество ответов агента Kilocode 5 + Qwen 3.6/GLM 4.7 на вопросы по проекту благодаря слою спецификаций. Кроме того, этот подход позволяет проверять инварианты в сложных асинхронных приложениях без запуска исследуемой программы — с помощью агента Kilocode 7 + GLM 4.7.
Развитием проекта видится возможность организовать глубокое code review, при котором агент проверяет корректность изменённых механизмов, опираясь на сущности, извлеченные из AST на основе git diff, и ранее сгенерированные спецификации, а не ограничивается указанием на поверхностные ошибки.

Прежде всего, доклад будет полезен энтузиастам LLM, которых интересуют способы использования AST для улучшения генерации LLM, а также организации контроля корректности кода с помощью LLM. Всё это рассматривается на примере Rust с учётом специфики языка; сам SPECOHOD тоже написан на Rust.
Существует идея о том, что спецификации к коду могут улучшить качество генерации ответов LLM. Если их нет, то наивный подход получения массива спецификаций — запуск агента в каталоге с тысячей взаимосвязанных файлов — приводит к огромному расходу токенов, галлюцинациям, потере данных при сжатии контекста и другим проблемам. Поэтому возникает идея алгоритмически упорядочить процесс покрытия проекта спецификациями.
SPECOHOD извлекает модули, публичные сущности и зависимости через API rust-analyzer, строит граф и обходит его в топологическом порядке: от независимых модулей к зависимым. Для каждого модуля одним вызовом LLM генерируется спецификация на основе кода самого модуля и спецификаций его зависимостей.
Обнаружилось, что SPECOHOD не только работает быстро (за 6–8 часов он покрывает спецификациями проект объёмом 370 000 SLOC, расходуя 50 000 000 входных токенов и 4 000 000 выходных), но и существенно повышает качество ответов агента Kilocode 5 + Qwen 3.6/GLM 4.7 на вопросы по проекту благодаря слою спецификаций. Кроме того, этот подход позволяет проверять инварианты в сложных асинхронных приложениях без запуска исследуемой программы — с помощью агента Kilocode 7 + GLM 4.7.
Развитием проекта видится возможность организовать глубокое code review, при котором агент проверяет корректность изменённых механизмов, опираясь на сущности, извлеченные из AST на основе git diff, и ранее сгенерированные спецификации, а не ограничивается указанием на поверхностные ошибки.

Прежде всего, доклад будет полезен энтузиастам LLM, которых интересуют способы использования AST для улучшения генерации LLM, а также организации контроля корректности кода с помощью LLM. Всё это рассматривается на примере Rust с учётом специфики языка; сам SPECOHOD тоже написан на Rust.
Информация о спикере
Клематис Сэй
Руководитель отдела систем разработки данных, YADRO
О себе
  • Клематис Сэй
    Руководитель отдела систем разработки данных, YADRO
    О себе
Все доклады