Привет. Делаю расширение для VS Code, которое даёт OpenCode CLI полноценный графический интерфейс.

Суть простая: OpenCode — мощный CLI-агент, но работать с ним в терминале на длинных сессиях не всегда удобно. Хотелось нормально видеть, что происходит — tool calls, изменения файлов, контекст, токены. Не форк, не отдельный продукт — именно UI-слой поверх OpenCode, который общается с ним через SDK и SSE-стриминг.

Если вы уже работаете с OpenCode и у вас есть существующие сессии — можно продолжить работу с ними прямо через расширение. Вся история, контекст, tool calls — всё подхватывается.

Что умеет

Полноценная мультисессионная работа — можно вести несколько чатов одновременно, каждый со своей историей, контекстом и статистикой. Переключение между сессиями, восстановление диалогов.

Стриминг с визуализацией всего, что делает агент: thinking, tool calls, результаты. Каждый тип инструмента рендерится по-своему — bash-команды, правки файлов с inline diff, веб-запросы, MCP-вызовы. Видно, что агент делает и почему.

Панель изменённых файлов показывает все правки за сессию с diff-статистикой. Checkpoints позволяют откатить состояние файлов к любому сообщению. Сабтаски — дочерние сессии с отдельным учётом токенов. Можно назначить разные модели для разных типов задач.

Всё управление агентами, правилами, командами, скиллами и MCP-серверами — через UI. Менеджер провайдеров с поддержкой OpenAI-compatible прокси. Prompt Improver, вложения через drag & drop, очередь сообщений, live-статистика в реальном времени — и ещё многое, что сложно уместить в один пост. Лучше просто посмотреть. По набору возможностей чат-интерфейс ближе всего к тому, что предлагает Cursor — но бесплатно, с открытым кодом и без привязки к экосистеме.

Репозиторий: https://github.com/HALDRO/PrimeCode

Про установку

На данный момент расширение не опубликовано в VS Code Marketplace — есть проблемы с публикацией, которые пока не удалось решить. Установка через .vsix файл из Releases с уведомлением в само расширение об обновлениях.

Важно

  • Без установленного opencode расширение не работает — это UI, не самостоятельный агент

  • Основной сценарий, который я тестировал — Windows + PowerShell

  • Проект в бете

  • Пока не доделан Change Diff Panel (принять / отменить изменения в файлах) — требуется тонкая настройка работы с git и CLI сессиями. Если у вас есть опыт и интерес — жду PR. Фронтенд готов.

Буду рад фидбеку или PR.

Личный фидбек

Перепробовал большую часть инструментов на рынке: расширения (Cline, Kilo Code, Continue), отдельные IDE (Cursor, Kiro, Qoder, Void, Antigravity), множество CLI-решений и ещё кучу всего.

Не знаю как вам, но мне с нормальным GUI работать значительно проще. Долгое время я сидел на Cursor с Pro-подпиской — по сути только ради поддержки кастомных моделей через OpenAI Compatible протокол и удобного интерфейса.

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

С бурным развитием OpenCode я понял одну вещь: закрытые проекты, предоставляющие интерфейс для AI-агентов, на мой взгляд почти всегда будут отставать от опенсорсных решений. Навязывая свою экосистему. На удивление, OpenCode довольно быстро вышел на стабильные версии, пригодные для повседневной работы.

За всё время активного использования Cursor и Copilot через OAI Proxy — а это больше года — я встретил, наверное, сотню мелких багов и недоработок, которые планомерно убивали мой UX. Ничего критичного по отдельности, но в сумме — ощутимо.

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

Сейчас все мои потребности UI/UX закрыты, периодически исправляю мелкие недочеты если нахожу. Может и вам понравится (или нет).

Процесс разработки

42 000 строк TypeScript, 155 файлов, 128 коммитов. Один разработчик. 99% кода написано через AI-модели. Практически без опыта в разработке VS Code расширений до этого проекта.

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

Workflow

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

Контекст — это всё

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

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

Переписывание — норма

По git-статистике (только исходный код, без документации) за всё время было добавлено ~113 000 строк TypeScript и удалено ~71 000. В проекте сейчас 42 000. Общий churn — 183 000 строк. На каждую строку в текущей кодовой базе приходится больше 4 написанных и переписанных.

Не потому что модель плохо генерирует, а потому что на старте ты сам не до конца понимаешь, как всё должно работать. Модель выдаёт рабочее решение, ты живёшь с ним какое-то время, понимаешь, что нужно иначе — и переписываешь. Это нормальный процесс, просто с AI он происходит быстрее.

Мелкие баги накапливаются

Модели редко делают критические ошибки. Но она стабильно делает мелкие: не тот тип, забытый edge case, race condition при стриминге. По отдельности — ерунда. В сумме на 42 000 строк — ощутимо. Линтер и строгий TypeScript спасают от большей части, но не от всего.

Почему OpenCode

Изначально расширение проектировалось как универсальное — с поддержкой нескольких CLI-агентов: OpenCode, Claude Code, Codex и других. Идея казалась логичной: единый интерфейс для любого агента.

На практике я быстро понял, что поддержка нескольких провайдеров в соло — это колоссальный объём работы, особенно без глубокого опыта. У каждого агента свой протокол, свои события, свои особенности. Писать и поддерживать отдельные executor'ы, маппинги событий, обработку edge cases для каждого — нереально в одиночку.

К тому же OpenCode и так покрывает практически все сценарии. Помимо поддержки кастомных провайдеров через OpenAI-compatible протокол, OpenCode уже имеет множество встроенных провайдеров, которые можно подключить из коробки. Смысл тянуть отдельные CLI отпал сам собой.

Масштаб

42 000 строк — это точка, после которой vibe-coding перестаёт быть «я попросил модель и она сделала». Это уже полноценное управление проектом, просто инструмент генерации другой. Ты всё равно принимаешь архитектурные решения, ты всё равно дебажишь, ты всё равно решаешь, что переписать, а что оставить.

Разница в скорости. То, что заняло бы месяцы ручной работы командой, делается за пару дней. Шутка — в соло вы скорее всего потратите ровно столько же, сколько и команда, если не больше. Особенно если у вас нет опыта. Но это не «бесплатная» скорость — ты платишь за неё временем на ревью, на исправление мелочей, на переформулирование задач, когда пару лишних токенов развернет модель не туда.

В итоге я доделывал своё расширение через своё же расширение. И это, наверное, лучшая валидация того, что получилось.