- BrainTools - https://www.braintools.ru -

AI‑агент для закрытого контура: расширение VS Code под корпоративную LLM

В прошлой статье [1] я писал про GitBor [2], git‑клиент, через который я проверяю, что на самом деле наворотил ИИ‑агент. Эта статья про самого агента. Делал я их параллельно. Один инструмент пишет код, второй показывает, что получилось.

Модель хорошая, контекст короткий

Закрытый контур, энергетика, живая ИБ. Copilot и Cursor нам не светят, потому что код уходит на чужие серверы. Зато внутри есть свой шлюз с Qwen.

Модель хорошая. Свежий Qwen среднего размера, короткие задачи делает отлично. Беда в контексте, у нас это около 100 тысяч токенов. Агент прочитал пять файлов, поправил два, посмотрел вывод тестов, и места уже нет. Модель забывает [3] начало задачи и начинает ходить по кругу.

Популярные агенты рассчитаны на облачные модели с огромным контекстом и тратят его как хотят. Я пересмотрел несколько открытых: Cline, Kilo Code, Continue. От каждого взял понемногу, от кого‑то больше, от кого‑то меньше, и стал переделывать под себя. Так появился Skycode.

Начинал я вообще с форка всего VS Code, как сделан Cursor. Для одного человека это оказалось неподъёмно. Каждое обновление Microsoft приходилось вливать руками, чинить сборку, мучиться с подписью установщика. В итоге переехал в обычное расширение, и для корпоратива это оказалось даже лучше. Почему, расскажу ниже.

Главное: беречь контекст

Сюда ушла основная работа. Нужно, чтобы за 100 тысяч токенов агент успел и прочитать что нужно, и сделать работу.

Читать по кусочкам. Файл можно читать по строкам, а не целиком. Есть отдельный инструмент read_symbol: он достаёт из файла один метод или класс. Модели обычно нужен как раз метод, а не файл на две тысячи строк. Если модель второй раз читает файл, который не менялся, она получает короткое «файл тот же», без всего текста.

Не повторять [4] модели то, что она уже видела. После правки она получает кусок вокруг изменения, весь файл заново ей не нужен. Длинный вывод терминала режется, остаются начало и конец. Описание окружения отправляется, только если что‑то поменялось.

Сжимать историю. Когда контекст подходит к пределу, сессия сжимается в краткое содержание: что сделано и что осталось. Тут меня ждал сюрприз. В той части, что пришла из Cline, для моделей «не из топа» вместо сжатия молча выкидывалась половина истории. Модель просто забывала, что делала. В свежем Cline сжатие тоже сильно переделали, но я больше старался, чтобы контекст вообще не забивался.

Видеть, куда он ушёл. В интерфейсе есть кольцо, по нему видно, сколько занято и на что: файлы, вывод команд, история. Если половину съел один лог, это сразу заметно.

кольцо контекста

кольцо контекста

По пути закрыл несколько вещей, которые к уму модели отношения не имеют, но мешали. Модель иногда повторяла одну фразу сотни раз. Виновата оказалась температура 0, с рекомендованными для Qwen настройками петли почти пропали. Ещё модель любила написать «Начну с чтения файлов.» и закончить ответ, ничего не сделав. Теперь агент в таких случаях подталкивает её продолжить. И если ответ обрывается по лимиту длины прямо посреди записи файла, обрезанный файл больше не сохраняется. Модель получает подсказку разбить работу на части.

Жёстких запретов в промпте я почти не ставил. Слабое место модели проще подстраховать подсказкой в нужный момент.

Несколько задач во вкладках

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

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

Короткий контекст тут даже помогает: пару небольших задач в разных вкладках модель тянет лучше, чем одну огромную. Ещё агент умеет рисовать прямо в чате схемы связей и таблицы, которые потом копируются в Word или Excel. С чужим legacy это здорово выручает.

вкладки, схема в ответе, очередь

вкладки, схема в ответе, очередь

Голос без интернета

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

Сначала у меня стоял Whisper, по‑русски маленькие его версии распознают так себе. Перешёл на GigaAM v3 от Сбера. 17 секунд речи он распознаёт примерно за секунду на обычном процессоре, сразу с запятыми и точками, а текст появляется в поле ввода по ходу речи. Модель скачивается один раз, дальше интернет не нужен.

диктовка

диктовка

Терминал или редактор

Показывал Skycode коллегам. Один сказал: прикольно, но я сижу на OpenCode или Claude Code в терминале. Тут я понял, что разработчики с агентами делятся примерно на два лагеря. Одним удобно в консоли, и для них хорошие инструменты уже есть. Я из вторых, люблю визуал и контроль. Хочу видеть правку прямо в файле и откатить её одним кликом, если что. Skycode как раз для таких.

А в закрытом контуре решающей оказалась разница между программой и расширением. GitBor устанавливается как программа, и версию с ИИ мне в контур не пустили, пришлось делать сборку без ИИ. С консольными агентами будет то же самое, это тоже отдельные программы. Skycode же расширение для VS Code. У нас, как и во многих компаниях, VS Code стоит у всех, а расширения ставятся из Marketplace без отдельного согласования. Если где‑то закрыты и они, с ИБ всё равно проще договориться: расширение ходит только во внутренний шлюз, телеметрии нет, код открыт.

Честно о том, что не так

  • Делаюодин, поэтому что‑то я просто не успел проверить.

  • Проверял в основном на Windows. На macOS и Linux почти не гонял.

  • Контекст всё равно короткий. Все эти хитрости его растягивают, но большую задачу лучше резать на части и смотреть diff глазами.

  • Телеметрии нет специально, поэтому о проблемах у пользователей я узнаю только от них самих.

Зачем эта статья

Skycode бесплатный, код открыт. Мне кажется, в корпоративной среде ближайшие годы будут работать на тех моделях, что подняты внутри, а не на топовых облачных. И важно уже не то, какая модель умнее, а то, как инструмент вокруг неё бережёт её контекст.

Если вы тоже сидите за шлюзом с Qwen, GigaChat или локальной моделью, расскажите в комментариях, что ломается у вас. Самые полезные доработки в Skycode появились как раз из таких историй.

Найти можно в VS Code по запросу «Skycode AI».

Автор: l2mega

Источник [7]


Сайт-источник BrainTools: https://www.braintools.ru

Путь до страницы источника: https://www.braintools.ru/article/37234

URLs in this post:

[1] прошлой статье: https://habr.com/ru/articles/1048796/

[2] GitBor: https://gitbor.ru/

[3] забывает: http://www.braintools.ru/article/333

[4] повторять: http://www.braintools.ru/article/4012

[5] Страница проекта: https://ruslansinkevich.ru/skycode/

[6] Исходники: https://github.com/RuslanSinkevich/skycode

[7] Источник: https://habr.com/ru/articles/1096732/?utm_source=habrahabr&utm_medium=rss&utm_campaign=1096732

www.BrainTools.ru

Rambler's Top100