Содержание
  1. Три extension ID и их собственные требования
  2. Основной сквозной маршрут для V2
  3. Файл из трёх строк, запрос и два эталона
  4. Один ответ модели как доказательство не годится
  5. Карточка прикрепления и отсутствие файловых вызовов
  6. Частые вопросы
Подборки и сравнения

OpenCode в VS Code: расширения и проверка контекста

5 ноября 2026 · 9 минут чтения

OpenCode в VS Code: расширения и проверка контекста — это выбор одного из трёх расширений Marketplace с похожими названиями, установка подходящего под ваш CLI и отдельная проверка того, что модель получила выделенный фрагмент. Ниже — таблица выбора, маршрут для V2 и упражнение с файлом из трёх строк.

Три extension ID и их собственные требования

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

sst-dev.opencode от SST — расширение, которое встраивает opencode в рабочий процесс разработки. Страница называет одно требование: установленный CLI opencode, инструкции по установке лежат на opencode.ai. Общий минимум версии VS Code на странице не задан, совместимость с V2 там не описана. Из функций документированы Quick Launch (Cmd+Esc на Mac, Ctrl+Esc на Windows/Linux открывает opencode в разделённом терминале или фокусирует уже запущенную сессию), New Session (Cmd+Shift+Esc или Ctrl+Shift+Esc), Context Awareness — автоматическая передача текущего выделения или вкладки, и File Reference Shortcuts (Cmd+Option+K на Mac, Alt+Ctrl+K на Linux/Windows) для вставки ссылок вида @File#L37-42. Страница помечает релиз как ранний и предлагает сообщать о проблемах в трекере anomalyco/opencode. Сборка из исходников описана отдельно: каталог sdks/vscode открывается в VS Code, bun install выполняется внутри него, F5 запускает отладочное окно.

vyomeshupadhyay.vscode-opencode от Vyomesh Upadhyay — расширение для OpenCode v2, которое общается с серверным API V2. Сессия, начатая здесь, появляется в TUI, десктопном приложении и веб-интерфейсе, и наоборот. Требования перечислены точно: VS Code 1.95 или новее, CLI OpenCode v2 (команда opencode --version печатает 2.x), минимум один подключённый провайдер модели. Если бинарника нет в PATH, задаётся настройка OpenCode: Binary Path. Это единственное из трёх расширений, чья страница прямо называет версию VS Code и версию CLI.

bilalbentoumi.vsc-opencode от Bilal Bentoumi встраивает официальный веб-интерфейс OpenCode в боковую панель через iframe. Требования: VS Code 1.90 или новее и CLI в PATH либо полный путь в настройке opencode-vsc.command. Мажорная версия CLI на странице не задана. Расширение запускает внешний процесс opencode serve и загружает официальный UI по адресу http://127.0.0.1:<port>/<workspace-dir>, деля с терминальным TUI один бинарник, конфиг, авторизацию, провайдеров, MCP-серверы, агентов и правила. Порты фиксированы и не настраиваются: сервер слушает 4097, прокси, который загружает панель, — 4098. Бинарник в расширение не входит.

Сводка по трём продуктам:

Расширение и издатель Документированные требования Поверхность и проверяемый признак
sst-dev.opencode, SST Установленный CLI; минимум VS Code и совместимость с V2 на странице не заданы Разделённый терминал; Cmd/Ctrl+Esc открывает или фокусирует TUI; контекст выделения описан в IDE-документации
vyomeshupadhyay.vscode-opencode, Vyomesh Upadhyay VS Code 1.95+, CLI 2.x, подключённый провайдер Панель чата через серверный API V2; General показывает соединение, версию и workspace
bilalbentoumi.vsc-opencode, Bilal Bentoumi VS Code 1.90+, CLI в PATH или opencode-vsc.command; мажор CLI не задан Официальный веб-интерфейс в iframe; сервер 4097 и прокси 4098

Основной сквозной маршрут для V2

Дальше разбирается один маршрут — расширение Vyomesh Upadhyay для OpenCode v2. Смешивать инструкции трёх страниц в одном прохождении не стоит: у них разные режимы соединения и разные признаки успеха.

Шаг первый — проверка CLI. В интегрированном терминале выполните:

ТЕРМИНАЛ
opencode --version

Страница расширения требует вывод 2.x. Если CLI не установлен, официальная страница загрузки V2 предлагает установку через curl, Homebrew, npm, bun, pnpm, yarn, Vite+, AUR и mise; на Windows пакетные менеджеры не поддерживаются, там предлагается отдельный бинарник. Команда npm install -g @opencode/cli ставит пакет, чей postinstall-скрипт выбирает нативный бинарник под платформу; в bun и pnpm нужный скрипт разрешается явным флагом.

Шаг второй — установка расширения по точному ID vyomeshupadhyay.vscode-opencode. Точный ID важен: поиск по слову opencode выдаёт три карточки, и установка соседней меняет и требования, и поверхность.

Шаг третий — открыть папку проекта, затем панель OpenCode из activity bar или сочетанием Ctrl+Esc (Cmd+Esc на macOS). В разделе General панели настроек проверьте три вещи: состояние соединения, версию сервера и имя workspace-папки. Провайдера подключают в разделе Providers — через API-ключ, OAuth или вход в CLI.

Шаг четвёртый — режим соединения. Настройка opencode.server.mode принимает четыре значения: auto (по умолчанию) использует работающий фоновый сервис OpenCode, при его отсутствии запускает сервис или приватный сервер, если сервис отключён; service всегда работает через общий фоновый сервис; standalone поднимает приватный opencode serve, принадлежащий этому окну VS Code и останавливающийся вместе с ним; url подключается к адресу из opencode.server.url, пароль спрашивается один раз и хранится в secret storage VS Code.

Шаг пятый — первое сообщение. Введите запрос в композер и нажмите Enter. Ответ с ошибкой авторизации указывает на провайдера, ошибка соединения или неверное имя папки — на сервер и расширение. Установленное расширение само по себе ответом модели не является.

Файл из трёх строк, запрос и два эталона

Упражнение ниже — пример для самостоятельного прохождения. Редакция его не запускала; строки-эталоны обозначены как ожидаемые.

Создайте папку bridge-demo и в ней файл probe_context.txt ровно такого содержания:

ТЕКСТ3 строки
PROJECT=bridge-demo
TRACE=DEMO-LILAC-47
STATUS=draft

Откройте файл в редакторе и выделите только вторую строку. Вызовите Add Selection to Chat сочетанием Ctrl+Alt+K (Cmd+Alt+K на macOS) — это документированное действие расширения. Убедитесь, что в композере появилась привязка выделения: карточка прикрепления видна до отправки.

Отправьте ровно этот запрос:

ТЕКСТ4 строки
Работай только с выделением, прикреплённым к этому сообщению.
Не читай файлы и не вызывай инструменты. Файлы не меняй.
Если выделение отсутствует, ответь ровно NO_SELECTION.
Если оно есть, верни ровно его единственную строку без кавычек и пояснений.

Ожидаемый эталон для этого входа — TRACE=DEMO-LILAC-47. Это строка упражнения. Ответ без ошибки авторизации показывает, что модель ответила; выполнение упражнения проверяют по точной строке и журналу инструментов. Совпадение строки оценивайте вместе с видимой карточкой прикрепления и отсутствием любых вызовов инструментов в транскрипте, включая чтение файла и vscode_get_selection.

Вторая проверка — на свежесть контекста. Замените строку в редакторе на TRACE=DEMO-LILAC-83, сохраните файл, выделите новую строку и прикрепите её в новом сообщении с тем же запросом. Эталон теперь TRACE=DEMO-LILAC-83. Старая строка означает, что свежее выделение не подтверждено. Ответ NO_SELECTION означает, что модель сообщила об отсутствии выделения; причину нужно проверять по карточке прикрепления и журналу инструментов.

Один ответ модели как доказательство не годится

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

Первый — карточка прикрепления в композере до отправки. Она показывает, что выделение попало в сообщение на стороне редактора.

Второй — отсутствие вызовов чтения в транскрипте. В расширении Vyomesh Upadhyay вызовы инструментов показываются карточками: правки файлов с инлайн-диффами, shell-команды с выводом, поиск, веб-запросы, задачи субагентов, списки задач и MCP-инструменты. Любая карточка вызова инструмента, включая чтение файла и vscode_get_selection, оставляет источник строки неоднозначным; повторите упражнение без вызовов инструментов.

Третий — смена эталона для проверки свежести. Второе значение помогает обнаружить устаревший ответ. Источник строки по одной смене значения определить нельзя: свежую строку можно получить и из прикрепления, и через инструмент, поэтому проверяйте журнал каждого ответа.

Отдельно стоит помнить, что расширение передаёт агенту языковые возможности VS Code через MCP-сервер с именем vscode. В его состав входят инструменты vscode_get_diagnostics, vscode_get_open_editors, vscode_get_selection, vscode_open_file, vscode_workspace_symbols, vscode_document_symbols, vscode_go_to_definition, vscode_find_references и vscode_hover. Отключаются они настройкой opencode.ide.enableMcpBridge. Наличие vscode_get_selection в списке означает, что у агента есть и второй путь к выделению — через IDE-мост; при разборе ответа учитывайте оба канала.

Карточка прикрепления и отсутствие файловых вызовов

Порядок сверки для каждого ответа в упражнении:

  1. До отправки — карточка прикрепления видна в композере, в ней тот фрагмент, который вы выделили.
  2. После ответа — в транскрипте нет карточек вызовов инструментов, включая чтение, поиск и MCP-инструмент vscode_get_selection.
  3. Текст ответа совпадает с текущим эталоном.
  4. При несовпадении — сначала проверьте, что выделение в редакторе сохранено и прикреплено заново, затем повторите отправку.

Настройки, влияющие на этот сценарий, собраны в одном месте. opencode.chat.includeActiveEditorContext по умолчанию включена и предлагает активный редактор или выделение как прикрепление в один клик. opencode.chat.defaultDelivery со значением queue определяет, как доставляется сообщение, отправленное во время работы агента: steer вводит его в текущий ход, queue ждёт завершения хода, Esc останавливает ответ. opencode.diff.autoOpen по умолчанию выключена и открывает дифф-редактор при каждой правке файла агентом. opencode.autoApprove по умолчанию false и читается только из пользовательских настроек: репозиторий не может изменить ни сервер, ни исполняемый файл, ни автоподтверждение вызовов инструментов.

Композер показывает, сколько контекстного окна занято и сколько сессия стоила. Клик по индикатору открывает разбивку по категориям токенов, итоги сессии и стоимость. Для длинной переписки есть /compact — команда суммирует разговор и освобождает контекст. Отмена и повтор правок работают через /undo и /redo: первый возвращает разговор и изменения файлов к выбранной точке и кладёт запрос обратно в композер.

Частые вопросы

Как установить opencode в VS Code?
Проверьте CLI командой opencode --version, затем установите расширение по точному ID из таблицы выше. Для V2 подходит vyomeshupadhyay.vscode-opencode с требованием CLI 2.x и VS Code 1.95+. После установки откройте панель OpenCode и подключите провайдера модели.

Какое расширение opencode vscode выбрать?
Смотрите на установленный CLI и версию редактора. SST требует установленного CLI и даёт терминальную поверхность, расширение Vyomesh Upadhyay требует CLI 2.x и VS Code 1.95+, расширение Bilal Bentoumi требует VS Code 1.90+ и CLI в PATH. Требования одного продукта на другой не переносятся.

Как использовать opencode в vscode для работы с выделением?
Выделите фрагмент и вызовите Add Selection to Chat сочетанием Ctrl+Alt+K или Cmd+Alt+K. В композере появится карточка прикрепления. Отправьте запрос, который явно ссылается на прикреплённое выделение, и проверьте транскрипт на отсутствие вызовов чтения файла.

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

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

Читайте также

3 материала