Описание
Oscar, архитектура агента-контрибьютора с открытым исходным кодом, представляет собой проект, направленный на улучшение разработки программного обеспечения с открытым исходным кодом путем создания автоматизированных агентов для сопровождения проектов. Основная идея заключается в том, что значительную трудоемкость сопровождения проектов с открытым исходным кодом, как больших, так и малых, можно снизить. Большие языковые модели (LLM) предоставляют новые возможности для агентов плавно взаимодействовать с людьми посредством семантического анализа естественного языка, такого как отчеты об ошибках и инструкции сопровождающих, а также путем преобразования инструкций на естественном языке в программный код. Хотя LLM являются критически важным компонентом, большая часть действий агента будет включать выполнение стандартного, детерминированного кода. В отличие от многих применений LLM, ориентированных на разработку, Oscar не стремится дополнить или заменить процесс написания кода. Вместо этого он фокусируется на менее привлекательных аспектах сопровождения, таких как обработка входящих запросов, сопоставление вопросов с существующей документацией и аналогичные задачи.
Oscar — это, по сути, эксперимент, чье будущее направление и полученные уроки еще предстоит полностью определить. Первоначальный прототип, бот @gabyhelp, уже продемонстрировал многочисленные успешные взаимодействия в трекере запросов Go. В настоящее время разрабатываемый в рамках проекта Go, Oscar потенциально может быть выделен в отдельный проект в будущем. Конкретные цели проекта включают снижение усилий сопровождающих по разрешению запросов и списков изменений (CL/pull requests), уменьшение усилий, необходимых для ответа на вопросы на форумах, и предоставление возможности большему количеству людей стать продуктивными сопровождающими. Ключевая нецелевая задача — автоматизация написания кода; фокус остается на автоматизации трудоемкости для сопровождающих.
Подход центрируется на создании повторно используемой и расширяемой архитектуры, которую любой программный проект может адаптировать для создания настраиваемых агентов. Oscar стремится решить проблему трудоемкости для сопровождающих, которая не уникальна для проекта Go. Ключевые выявленные возможности включают индексацию и предоставление соответствующего контекста проекта во время взаимодействия с контрибьюторами, использование естественного языка для управления детерминированными инструментами, а также анализ отчетов об ошибках, CL/PR и групповых обсуждений для их улучшения в реальном времени, маркировки и соответствующей маршрутизации. LLM являются неотъемлемой частью этих возможностей благодаря их силе в обработке естественного языка, в то время как детерминированный код обрабатывает выполнение. Проект подчеркивает использование LLM для семантического анализа и перевода естественного языка в программы, полагаясь на детерминированный код для остального.
Одна из важнейших возможностей — индексация и предоставление связанного контекста проекта. Программные проекты сложны, и сопровождающие не всегда могут запомнить все соответствующие детали. Oscar использует встраивания LLM для создания поисковой системы проекта, индексируя документацию, запросы и обсуждения. Когда возникает новый запрос, агент может использовать этот индекс для поиска связанного контекста, такого как аналогичные прошлые запросы или соответствующая документация, и ответить ссылками. Это показало такие преимущества, как выявление дублирующихся запросов, предоставление контекста контрибьюторам и экономия времени сопровождающих путем направления их к соответствующим прошлым обсуждениям или отчетам об ошибках. Немедленное взаимодействие агента после подачи отчета также жизненно важно для вовлечения репортеров, пока они еще доступны и заинтересованы.
Другая ключевая возможность — использование естественного языка для управления детерминированными инструментами. По мере роста проектов увеличивается количество инструментов, что затрудняет их отслеживание и использование. Oscar предусматривает средства для редактирования комментариев к запросам, добавления меток или назначения людей на основе запросов на естественном языке. LLM отлично справляются с преобразованием намерений на естественном языке в исполняемые формы, такие как вызовы инструментов. Предварительные эксперименты с Gemini показывают многообещающие результаты в выборе и вызове инструментов. Этот подход, который использует LLM для преобразования естественного языка в детерминированное использование инструментов, считается более эффективным, чем чистый подход «волшебной палочки» LLM, поскольку он позволяет осуществлять детерминированное выполнение и более легкую проверку.
Третья важная возможность включает анализ отчетов об ошибках и CL/PR. Помимо связывания связанных запросов, Oscar планирует включить семантический анализ, такой как определение основной темы запроса для соответствующей маркировки (например, «производительность»). Он также стремится определить, требуется ли дополнительная информация для полезности отчета, например, запрос ссылки на программу воспроизведения или встраивание кода. Агент потенциально может запускать изолированные инструменты выполнения для идентификации версий с ошибками или использовать git bisect для определения коммитов, вводящих ошибки. Эти анализы наиболее эффективны, когда они выполняются сразу после подачи отчета, используя круглосуточную доступность агента.
Первый прототип, Gaby («Go AI bot»), работает в трекере запросов Go, публикуя сообщения как @gabyhelp. Его исходный код находится в internal/gaby. Gaby индексирует контент из запросов Go, документации Go, обзоров кода Gerrit и обсуждений проекта Go/golang-nuts, что позволяет ему отвечать на новые запросы соответствующими ссылками. Архитектура Gaby разработана с учетом гибкости, позволяя ей работать на различных хостинговых сервисах, использовать разные LLM, уровни хранения и векторные базы данных. Текущий прототип использует GCP Cloud Run с LLM Gemini от Google и Google Cloud Firestore. Проект также признает существование @gopherbot, давно существующего детерминированного агента в проекте Go, и стремится в конечном итоге объединить @gabyhelp в @gopherbot путем перестройки @gopherbot как агента Oscar, стремясь к более легковесному методу конфигурации с использованием естественного языка.
Основные функции Oscar
Автоматизированный агент для сопровождения проектов с открытым исходным кодом
Снижает трудоемкость для сопровождающих путем обработки запросов и обращений
Использует LLM для понимания естественного языка и семантического анализа
Использует детерминированный код для надежного выполнения задач
Индексирует и предоставляет соответствующий контекст проекта (документация, запросы, обсуждения)
Обеспечивает управление детерминированными инструментами с помощью естественного языка
Анализирует отчеты об ошибках и списки изменений для улучшения маршрутизации и маркировки
Прототип агента @gabyhelp активен в трекере запросов Go
Расширяемая архитектура для разработки настраиваемых агентов
Поддерживает интеграцию с различными LLM, уровнями хранения и векторными базами данных
Направлен на автоматизацию не связанных с кодированием аспектов сопровождения проектов с открытым исходным кодом
Способствует более быстрому вовлечению контрибьюторов посредством немедленных ответов
Как использовать Oscar?
Настроить: Определите возможности агента и подключитесь к источникам данных проекта
Развернуть: Разместите агента на подходящей платформе (например, облачном сервисе)
Интегрировать: Подключитесь к репозиториям проекта и каналам связи (например, вебхукам GitHub)
Обучить/Индексировать: Позвольте агенту обрабатывать и индексировать контекст проекта с использованием LLM
Мониторить: Наблюдайте за взаимодействиями и производительностью агента в трекерах запросов и на форумах
Расширять: Разрабатывайте новое поведение агента и интегрируйте пользовательские детерминированные инструменты
Оптимизировать: Уточняйте ответы и анализ агента на основе потребностей проекта и обратной связи
Варианты использования Oscar
- Автоматизация триажа запросов
- Помощь с документацией
- Обнаружение дублирующихся запросов
- Снижение трудоемкости для сопровождающих
- Поддержка контрибьюторов
- Анализ списков изменений
- Предоставление контекста
- Интеграция инструментов






