OpenCode - это открытая и не привязанная к конкретному вендору агентная ИИ-среда для разработки, которая работает в терминале через TUI (Text User Interface). Её ключевая особенность - поддержка более 75 моделей от различных провайдеров (OpenAI, Anthropic, Google и локальных моделей через Ollama), что позволяет свободно переключаться между ними без ограничений.
OpenCode обладает мощным набором инструментов (чтение, запись, поиск файлов, выполнение команд), встроенным Git для отката изменений и системой специализированных агентов (например, Build для активной разработки и Plan для анализа кода без права на запись) .
Установка nodejs
AstraLinux 18 или AstraLinux1.7.9:
sudo apt install nodejs npm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.0/install.sh | bash
Важно:
#необходимо закрыть и открыть терминал, чтобы продолжить установку nodejs
#команда для просмотра доступных версий, рекомендуется устанавливать последнюю LTS версию
nvm ls-remote
nvm install v24.14.1
astra@astra:~$ node -v
v24.14.1
astra@astra:~$ npm -v
11.11.0
Установка opencode
curl -fsSL https://opencode.ai/install | bash
astra@astra:~$ opencode
Настройка провайдеров в OpenCode
Надо запустить в папке с проектом, создадутся в ~/.config/opencode - настройки:
В терминале создаю файл настроек:
mkdir -p ${HOME}/.config/opencode
touch ${HOME}/.config/opencode/opencode.json & kate ${HOME}/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"routerai": {
"npm": "@ai-sdk/openai-compatible",
"name": "RouterAI",
"options": {
"baseURL": "https://routerai.ru/api/v1"
},
"models": {
"qwen/qwen3.6-plus": { "name": "Qwen Qwen3.6 Plus" },
"moonshotai/kimi-k2.6": { "name": "MoonshotAI Kimi K2.6" },
"deepseek/deepseek-v4-pro": { "name": "DeepSeek: DeepSeek V4 Pro" },
"openai/gpt-5.5": {"name": "OpenAI: GPT-5.5"},
"z-ai/glm-5.1": { "name": "GLM 5.1" },
"minimax/minimax-m2.7": { "name": "MiniMax M2.7" }
}
},
"lmstudio": {
"npm": "@ai-sdk/openai-compatible",
"name": "LM Studio (local)",
"options": {
"baseURL": "http://192.168.1.70:1234/v1"
},
"models": {
"qwen/qwen3.6-35b-a3b": { "name": "Qwen 3.6-35b-a3b" },
"google/gemma-3n-e4b": { "name": "Gemma 3n-e4b (local)" }
}
}
}
}
Начало работы
Запускаем в нужном каталоге:
opencode
Подключаю провайдера:
/connect
Далее вводиться API ключ, или может быть локальная модель
Хорошо себя показывают:
* для задач С++ и Qt5 модели Kimi K2.6 и Qwen3.6
* с bash скриптами хорошо справляются все
* OpenAI кажется что справляется лучше с задачами, но стоит в 4 раза дороже.
Для специфических задач хорошо использовать локальные модели, через LMStudio. Например:
* Генерация PlantUML диаграммы для какого-то алгоритма используемого в коде
В процессе работы можно задавать разные модели,
[ctrl + p] позволяет выбрать модели доступные у провайдера прямо в процессе работы можно сменить модель.
Есть несколько бесплатных.
Но в документации сказано, что при использовании этих моделей данные будут использоваться для обучения этих моделей. Поэтому бесплатные модели лучше не использовать.
Настройка проекта
/init - создает AGENTS.md изучая все папки проекта
в этом файле прописываются правила проекта,
Можно попросить отвечать на русском языке
В AGENTS.md прописывается:
* Как в OpenCode будет собирать проект.
* Где лежат файлы спецификаций
* На какой языке общаться с пользователем.
* Какими командами собирается PlantUML диаграмма (как проверяется ее корректность)
Можно создать папку ./agents
В эту папку кладутся style guide по использованию и форматированию С++ кода, QMake, шаблоны разных операций (Шаблон генерации ТЗ на задачу).
При выполнении /init. OpenCode пропишет, что есть такие файлы, на которые надо посмотреть при кодировании и добавить в AGENTS.md пути где они лежат.
Qmake и Cmake файлов - эти стили учитываются при доработке кода
Работа с проектом.
В программе есть 2 режима Plan и Build
/agents - [build native/plan native] в режиме plan агент не может писать данные на диск
или переключаются режимы клавишей [Tab]
Plan - ничего не редактирует
Build - имеет права на редактирование
Начинаем работать с новой сессией
/new
и в режиме Plan задаются вопросы и обсуждается, что происходит в коде и как программ предлагает решить задачу.
Чаще всего не нужно переходить в Build и просить что-то редактировать, отдельные части, можно скопировать руками и продолжить обсуждение.
Также хорошо работающие сценарии
* это написать тесты причем и unit так и функциональные
* написание документации и комментариев к функциям, также черновики readme, согласно заданному стилю
* попросить сделать ревью кода и попросить объяснить.
Для выхода из программы используется
/exit - выход из приложения
Функциональность работы с github
Пока не очевидны бонусы от такой работы. Лучше пользователь создаст отдельную ветку сам и в ней решит задачу.
OpenCode может увлекаться работой с ветками и в процессе она может начать откатывать коммиты, создавать ветки, решая задачу, которая поставила модель в тупик.
Поэтому на момент написания статьи, считаю, что работа с git и merge request, это задача человека.
Подключение локальной Qwen3.6-35b-a3b
LM Studio - это программное приложение, позволяющее запускать большие языковые модели (LLM) полностью локально на персональном компьютере без необходимости подключения к интернету . Программа предоставляет интуитивно понятный интерфейс для поиска, загрузки и управления моделями из репозиториев Hugging Face, а также включает встроенный локальный сервер с API, совместимым с OpenAI, что позволяет другим приложениям, таким как OpenCode подключаться к моделям через обратный прокси для решения различных задач
Настройки обратного прокси из Win10 к виртуалке с Linux
ipconfig покажет адрес 192.168.1.70 порт желательно оставить такой как и у сервера LMStudio
Эта команда запускает Caddy в режиме простого обратного прокси (reverse proxy) - Установка Caddy будет рассмотрена ниже.
caddy_windows_amd64.exe reverse-proxy --from http://192.168.56.1:1234 --to 192.168.1.70:1234
Настройка локальных моделей в OpenCode
${HOME}/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"routerai": {
"npm": "@ai-sdk/openai-compatible",
"name": "RouterAI",
"options": {
"baseURL": "https://routerai.ru/api/v1"
},
"models": {
"qwen/qwen3.6-plus": { "name": "Qwen Qwen3.6 Plus" },
"moonshotai/kimi-k2.6": { "name": "MoonshotAI Kimi K2.6" },
"deepseek/deepseek-v3.2": { "name": "DeepSeek DeepSeek V3.2" },
"z-ai/glm-5.1": { "name": "GLM 5.1" },
"minimax/minimax-m2.7": { "name": "MiniMax M2.7" }
}
},
"lmstudio": {
"npm": "@ai-sdk/openai-compatible",
"name": "LM Studio (local)",
"options": {
"baseURL": "http://192.168.1.70:1234/v1"
},
"models": {
"qwen/qwen3.6-35b-a3b": { "name": "Qwen 3.6-35b-a3b" },
"google/gemma-3n-e4b": { "name": "Gemma 3n-e4b (local)" }
}
}
}
}
Caddy
Caddy - это современный веб-сервер на Go, который позволяет создать reverse proxy одной простой директивой reverse_proxy в минималистичном Caddyfile, автоматически получая и продлевая TLS-сертификаты через Let's Encrypt, балансируя нагрузку, поддерживая активные проверки здоровья (active health checks), WebSockets и HTTP/3 без необходимости в дополнительных настройках или перезапусках.