Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Ouroboros: инструмент инструментирования кода для работы с LLM-агентами

Ouroboros: инструмент инструментирования кода для работы с LLM-агентами

Разработка инфраструктуры вокруг больших языковых моделей направлена на минимизацию участия человека в поддержке процессов. В рамках экспериментов был создан специальный программный инструмент Ouroboros, предназначенный для отладки и исследования исходного кода с помощью динамического логирования до того, как изменения попадут в финальную версию.

Проект разрабатывался для персональных задач, однако он показал стабильную работу и прирост эффективности при использовании как с локальными языковыми моделями, так и с агентами семейства Claude. Суть подхода заключается в автоматическом обертывании каждой созданной функции или строки кода аналогами привычных операторов выводов вроде console.log или printf.

Ouroboros: инструмент инструментирования кода для работы с LLM-агентами — изображение 2
Ouroboros: инструмент инструментирования кода для работы с LLM-агентами — изображение 3

Принципы работы инструментирования

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

Реклама

Главная практическая цель метода заключается в оптимизации работы с крупными кодовыми базами. Искусственному интеллекту может быть слишком дорого самостоятельно писать полноценные тесты с нуля и дорабатывать их до работоспособного состояния. Вместо этого агенту предоставляется возможность изолированно запускать исполняемый файл и исследовать поведение логики аналогично тому, как это делает программист при ручном анализе.

Чтение десятков тысяч строк исходного текста требует значительных вычислительных ресурсов и контекстного окна, тогда как программный запуск и отслеживание реально вызываемых функций обходятся существенно дешевле. Процесс автоматического инструментирования позволяет быстро фиксировать маршруты выполнения кода.

Влияние на производительность и накладные расходы

В период написания программного кода длительность процессов компиляции или интерпретации закономерно возрастает, однако отладочные конструкции не попадают в итоговую production-среду. Замеры показывают конкретные показатели задержек для различных языков программирования при внедрении обвязки.

Для языка Python базовое время выполнения в тесте составляло 0,0202 с, с обвязкой оно возрастает до 1,1837 с при чистой добавке на один вызов около 58,2 мкс. В JavaScript эти показатели составляют 0,0366 с и 0,4454 с с добавкой 20,4 мкс, для языка C — 0,0017 с и 0,3988 с (19,9 мкс), а для C++ — 0,0021 с и 0,4469 с (22,2 мкс).

Аналогичные измерения зафиксированы для среды Elixir (рост с 0,7909 с до 4,6060 с, добавка 190,7 мкс), Go (0,0228 с до 0,6013 с, добавка 28,9 мкс), Java (0,0332 с до 0,4518 с, добавка 20,9 мкс) и C# (0,0416 с до 0,3535 с, добавка 15,6 мкс). Дополнительные оптимизации вроде минимального режима для C или отключения номеров горутин в Go позволяют снизить накладные расходы.

Результаты тестов и эффективность моделей

Практические испытания демонстрируют заметное улучшение результативности ответов моделей при подключении инструмента. На модели qwen3.5:4b успешность ответов выросла с 44,0% до 78,3%, что дает прирост на 34,3 процентных пункта. Для qwen2.5:14b-instruct показатель увеличился с 61,0% до 84,7% (+23,7 п.п.).

Модель qwen3:32b показала рост правильных ответов с 66,7% до 90,3% (+23,6 п.п.), в то время как более мощный субагент Claude Opus продемонстрировал повышение точности с 95,0% до 98,3% (+3,3 п.п.) благодаря высокой базовой эффективности.

Установка и интеграция в рабочие процессы

Исходный код утилиты опубликован на платформе GitHub, а подробная документация, включая отдельный русскоязычный раздел, размещена на страницах GitHub Pages. Дополнительно на Hugging Face доступен сопутствующий датасет.

Для развертывания утилиты предусмотрено несколько типовых вариантов. Пользователи могут установить два бинарных файла ouroboros и ouroboros-mcp, выполнить установку через пакетный менеджер с помощью команды uv tool install git+https://github.com/digitable-lol/ouroboros либо воспользоваться пакетным менеджером Homebrew командой brew install digitable-lol/tap/ouroboros.

Кроме того, предусмотрена возможность прямой интеграции через языковую модель, которой передается инструкция постоянно задействовать инструмент в процессе написания кода, обращаясь к репозиторию и официальной документации проекта.

01.