FreeAIr - это расширение (vsix) для Visual Studio 2022/2026, которое позволяет использовать локальную или корпоративную LLM внутри Visual Studio для помощи программисту. Это не Copilot, а независимая разработка авторов из РФ. Как и любая другая разработка энтузиастов, FreeAIr, конечно, не сравнится с Copilot по функциям и глубине интеграции, но это намного лучше, чем ничего. Кроме того, FreeAIr никуда не отправляет ни телеметрию, ни Ваш код, ничего, и поэтому может использоваться в компаниях, где использование сторонних LLM запрещено политикой конфиденциальности.

Основные функции расширения

  • Поиск на естественном языке (с поддержкой RAG)

  • Объяснение кода

    • выбранного фрагмента кода

    • всего файла

  • Комментирование кода

    • выбранного фрагмента кода

    • всего файла

  • Продолжение написания кода в соответствии с комментариями

  • Составление commit-message по git changes

  • Автодополнение целой строкам

  • Генерация unit тестов

  • Исправление ошибок сборки

  • Поддержка серверов MCP и их инструментов.

  • В FreeAIr встроен сервер Visual Studio MCP для доступа к функциям Visual Studio.

  • Поддержка сервера MSDN MCP.

Начало работы

  • Установите среду выполнения .NET 9. Это необходимо, так как FreeAIr запускает свой фоновый процесс, который требует этот runtime.

  • Установите расширение через Visual Studio Marketplace.

  • Если вы хотите использовать локальную LLM, запустите её и получите её endpoint, token и имя модели.

  • Запустите Visual Studio и откройте свое решение.

  • Щелкните Extensions -> FreeAIr -> Open control center.

  • В открывшемся окне щелкните Edit agents.

  • Выберите любой агент (например, Yandex General или любой другой) и настройте endpoint, token, chosen model. Вы также можете исправить системный промпт, но сначала используйте кнопку Replace with general system prompt.

  • Нажмите Apply changes, и окно закроется.

  • Вы вернетесь в окно центра управления, и внесенные вами изменения будут видны в текстовом JSON-файле. Со��раните измененный документ в файл, используя команду Store to options file.

  • Нажмите Extensions -> FreeAIr -> Open chat list window .

  • В открывшемся окне выберите Start chat и выберите настроенную вами модель. Окно выбора модели может не появиться, если у вас одна модель или только у одной модели установлен токен.

  • Начните общение с LLM.

Основные концепции FreeAIr

  • Агент представляет собой определённую комбинацию endpoint, token, имени модели и системного промпта. Одна и та же LLM может выступать в разных ролях, роль определяется системным запросом (например, «Вы опытный программист...», «Вы программист баз данных...»). В этом случае у вас будет два агента с одинаковыми endpoint, token и именем модели, но разными системными запросами.

  • Чат — это диалог с LLM. Вы можете иметь несколько диалогов и удалять устаревшие.

  • Контекст чата — это дополнительная информация, доступная LLM; туда добавляются различные файлы, выделения и т. д. Это удобнее, чем предоставлять текст непосредственно в запросе.

  • Поиск на естественном языке — это функция FreeAIr, позволяющая искать в вашей кодовой базе на естественном человеческом языке.

  • Support action— это действие, которое FreeAIr может выполнять в ответ на действия пользователя в Visual Studio.

  • Серверы MCP — это серверы model context protocol, которые предоставляют дополнительные возможности для LLM.

  • Tools— это возможности, которые предоставляют отдельные серверы MCP.

Агенты

Агент в FreeAIr - это просто комбинация endpoint, token, имени модели и системного промпта.

Вы можете редактировать существующих агентов или добавлять своих собственных. Если у агента нет токена, он считается неактивным.

Support action

Support actions - это, собственно, действия, через которые Вы можете отправлять в LLM запросы. Например, компиляция проекта завершилась неудачно. Вы кликаете ПКМ на ошибке в Error list window и там выбираете FreeAIr support actions. Это не функция чата с LLM, которая доступна сама по себе, это - более глубокая интеграция со средой Visual Studio.

Support actions, которые FreeAIr может предложить пользователю, не закодированы в коде FreeAIr.

Каждый support action состоит из:

  • имени.

  • области действия: для каких действий пользователя должно применяться это действие поддержки (например, при работе с кодом документа; внутри CodeLens; при работе с файлами в обозревателе решений; при формировании сообщения коммита и т. д.).

  • подсказки с якорями.

  • имени агента, который должен выполнить это действие. Если имя агента не указано, FreeAIr предложит пользователю выбрать агента вручную.

  • идентификатора изображения — используется в качестве значка для отображения в поле ввода подсказки в чате FreeAIr.

Якоря — это заполнители, в которые добавляется соответствующая контекстная информация. Они могут быть:

  • именем документа(ов) в контексте чата.

  • текстом ошибки компиляции.

  • строкой, где произошла ошибка компиляции.

  • столбцом, где произошла ошибка компиляции.

  • Предпочитаемая среда для unit тестирования.

  • Сравнение изменений в Git.

  • Поисковый запрос на естественном языке.

Вы можете редактировать существующие и добавлять собственные support actions.

Если Вы просто хотите иметь возможность выбора LLM для выполнения действия (например, для исправления ошибок компиляции) то нет необходимости создавать несколько support actions, достаточно оставить поле Имя агентапустым. Однако, если Вы хотите, чтобы в LLM отправлялись разные сообщения для исправления ошибки компиляции, Вам надо создать разные support actions, с разными промптами и выставить у галочку BuildErrorWindow. Тогда, при клике ПКМ на ошибке в окне Error list window, FreeAIr предложит Вам выбрать support action, а потом (если требуется) агента-исполнителя.

С другими областями действия ситуация аналогична. Архитектура немного непривычная поначалу, но быстро осваивается и очень гибка.

Все настройки, которые Вы сделаете, могут быть сохранены в репозиторий проекта, чтобы делиться ими с командой, или локально - в Вашу Visual Studio.

Чат с LLM

Чат с LLM всем знаком, и в подробных пояснениях не нуждается. Поэтому, опишем кратко:

Чат состоит из трех элементов:

  • область диалога, содержащая промпты пользователя и ответы LLM;

  • область для ввода подсказок;

  • область контекста чата.

Диалог чата

В этой области отображается:

  • Отправленные промпты

  • Полученные ответы от LLM

  • Служебная информация (например, вызовы MCP Server Tools)

Размер этих элементов настраивается в меню Tools -> Options -> FreeAIr.

Для некоторых элементов диалога (фрагменты кода, изображения и т. д.) в текст добавлены специальные кнопки, позволяющие удобно управлять этими элементами:

  • Скопировать в буфер обмена

  • Выбрать элемент контекста для замены его содержимого

  • Заменить выделенный блок кода в документе VS

  • Создать новый файл с этим кодом

Размер этих кнопок также настраивается в меню Tools -> Options -> FreeAIr.

Область ввода промпта

Это область для ввода нового промпта. Чтобы отправить введенный промпт, нажмите Ctrl+Enter, после чего FreeAIr будет ожидать ответа от LLM. Вы можете прервать ожидание, нажав кнопку Stop.

В этой области также можно ввести следующее:

  • действия для FreeAIr: для этого введите / и выберите действие из списка; список доступных действий поддержки указан в настройках FreeAIr.

  • документы Вашего solution: для этого введите # и выберите необходимый документ.

Контекст чата

Контекст чата — это дополнительная информация для LLM, например, в контекст часто добавляются документы из вашего решения. Вы можете добавить в контекст:

  • документ вашего решения (для этого введите #, выберите документ из списка и нажмите Ctrl+Enter);

  • внешний документ (для этого нажмите кнопку Add custom file).

Если ваш проект настроен на использование Microsoft Copilot, файл copilot-instructions.md будет автоматически добавлен в контекст чата при создании чата.

Если ваш проект написан на C#, вы можете добавить в контекст чата все файлы, зависящие от уже добавленного файла, чтобы LLM получал больше контекстной информации. Для этого есть соответствующая кнопка рядом с именем документа.

MCP сервера

Серверы MCP — это серверы Model Context Protocol, предоставляющие дополнительные возможности для LLM (например, доступ к базам данных или доступ к Git). FreeAIr полностью поддерживает серверы MCP.

Существует три категории серверов MCP:

  • Встроенный сервер MCP Visual Studio — встроенный в FreeAIr сервер MCP, предоставляющий LLM возможность выполнять действия внутри Visual Studio (например, компилировать проект, изменять текст документа и т. д.).

  • Сервер MCP GitHub.com — это стандартный сервер MCP github.com; его можно установить из панели управления FreeAIr.

  • Другие серверы MCP — их можно «установить», отредактировав соответствующий раздел настроек FreeAIr JSON (формат — стандартный формат Claude), или через FreeAIr UI установить MCP из docker hub.

Каждый сервер MCP предоставляет свой собственный набор инструментов. Вы можете отредактировать набор серверов MCP и их инструменты. При создании чата выбранные инструменты копируются в чат, и вы можете включать/отключать инструменты внутри чата; это не влияет на состояние глобальных инструментов.

Примеры запросов, которые LLM может выполнить, если ему предоставлены соответствующие инструменты:

  • commit my changes with message "newcommit"

  • install a 3.3.6 version of "Ninject" nuget package in TestSubject project

Встроенный Visual Studio MCP сервер

Этот MCP-сервер предоставляет LLM возможность работать в Visual Studio, например:

  • создавать коммиты Git;

  • собирать решение и собирать ошибки;

  • устанавливать пакеты NuGet;

  • получать структуру дерева решения;

  • получать тело документа;

  • заменять тело документа;

  • и другие функции.

Этот MCP-сервер доступен сразу и не требует никаких дополнительных настроек.

Github.com MCP сервер

Сервер Github.com MCP — это сервер, который предоставляет LLM возможность работать с репозиторием на github.com. Например, через этот сервер вы можете запросить у LLM список issues и попросить его исправить одну из них.

Для установки этого сервера нажмите соответствующую кнопку в FreeAIr control center. Будет загружена и установлена ​​последняя версия сервера Github.com MCP.

Commit message building

FreeAIr позволяет пользователю Visual Studio использовать LLM для генерации сообщения коммита. Для этого перейдите на вкладку Git changes и нажмите соответствующую кнопку. Начнётся новый чат с LLM, и после получения ответа сообщение коммита будет скопировано в поле Enter a message.

Поиск на естественном языке

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

Каждый текстовый файл из solution (проекта) передается в LLM вместе с поисковым запросом, и LLM определяет, содержит ли этот файл что-либо подходящее. После обработки всех файлов результаты собираются в окне результатов поиска.

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

Заключение

Не все желаемые функции реализованы. Например, не реализована до конца функция RAG (через Natural Language Outlines).

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

Нет гарантий, что в коде FreeAIr нет ошибок, они наверняка есть. Со стороны авторов гарантируем, что в коде нет закладок и нет отправки какой-либо телеметрии или какого-либо кода (переписки в LLM). Spyware не завезли. Проверьте сами.

Проект создан энтузиастами в свободное время. Если проект оказался полезным, пожалуйста, дарите звезды и на visual studio marketplace, и в github. Нам будет приятно.

Пользуйтесь на здоровье!