OpenCode
- title
- OpenCode
- type
- toolbox
- summary
- Терминальный агент для написания кода с поддержкой любых OpenAI-совместимых и локальных эндпоинтов
- tags
- llm, coding-agent, cli, local-models
- language
- TypeScript
- license
- MIT
- created
- 2026-05-13
- updated
- 2026-05-13
- lang
- ru
- translation_of
- opencode
- source_updated
- 2026-05-13
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
OpenCode - это автономный агентный harness для написания кода, агент для терминала и IDE, который использует вызовы инструментов (tool calls) для чтения, редактирования и запуска кода в проекте. Он позиционируется как более гибко настраиваемая альтернатива решениям с привязкой к конкретному вендору (Claude Code, Codex) и предлагает полноценную поддержку любых OpenAI-совместимых эндпоинтов, включая локально запущенные модели через llama.cpp.
Что он делает
Долгоживущий агентный цикл со стабильным набором инструментов (чтение/запись файлов, shell, поиск, редактирование), управляемый LLM через настраиваемый провайдер. Отличительные особенности:
- Независимость от провайдера. Настраивается через JSON-файл с указанием URL провайдера, имени модели и специфичных параметров. Локальные серверы llama.cpp, OpenAI, Anthropic, Groq и встроенный набор моделей ZEN поддерживаются из коробки.
- AGENTS.md как контракт проекта. OpenCode считывает файл
AGENTS.mdна уровне проекта (аналог Cursor Rules илиCLAUDE.md) для получения контекста, соглашений и правил. В нём фиксируются нестандартные требования к префиксам файлов, ограничения типизации, стили комментариев и тому подобное. - Встроенный набор моделей ZEN. Проверенные хостинговые модели по подписке, включая бесплатные тарифы. Удобно тем, кто хочет использовать OpenCode как harness, не выбирая отдельно модель и провайдера.
В тестах агентов для кодинга на локальных 16-гигабайтных моделях, которые проводил Вячеслав, связка OpenCode + llama.cpp была основным сетапом. Он предпочёл её решениям Cline, Kilo Kode, Roo Code и Zed за "стабильность и простоту настройки".
Как работает с локальными моделями
Для работы связки требуются три вещи со стороны llama.cpp и одна со стороны OpenCode:
- Флаг
--jinjaуllama-server- необходим, чтобы шаблон чата рендерил вызовы инструментов в формате, который ожидает OpenCode. Без него модель вообще не увидит список инструментов. - Квантование, которое подходит для конкретной архитектуры модели - см. llm-quantization.
- Достаточный запас VRAM как для самой модели, так и для KV-кэша - см. kv-cache-sizing и moe-cpu-offload.
Со стороны OpenCode конфигурация провайдера указывает на http://localhost:8080/v1 (или куда привязана llama.cpp) и задаёт имя модели. Для моделей семейства Qwen 3 в конфигурации OpenCode также требуется прописать extra_body.chat_template_kwargs.enable_thinking: false, чтобы действительно отключить режим размышлений (thinking mode): флага --reasoning off на уровне сервера недостаточно (см. thinking-mode-rule-erosion).
Подводные камни из реальной практики
- Индикатор статуса "Thinking..." в интерфейсе OpenCode - это просто индикатор выполнения запроса, а не доказательство того, что модель генерирует токены рассуждений. Не стоит воспринимать его как подтверждение включённого режима reasoning.
- Навыки (skills), рассчитанные на большие облачные модели (Context 7, Superpowers и всё, что внедряет объёмный системный промпт), перегружают контекст маленьких локальных моделей. Для работы с локальными моделями Вячеслав рекомендует "caveman"-режим или полный отказ от skills.
- Системный промпт, skills и контекст MCP расходуют окно контекста ещё до первого сообщения пользователя. Это усугубляет и без того скромный бюджет контекста у небольших моделей.
Почему он упоминается в вики
OpenCode служит средой, на которой проверяются различные выводы: эффект thinking-mode-rule-erosion был обнаружен при запусках через OpenCode с правилами из AGENTS.md; замеры offload'а MoE в moe-cpu-offload проводились с OpenCode в роли управляющего инференсом. Также это один из поддерживаемых harness'ов в системе дистрибуции навыков cli-anything.
См. также
- llama.cpp - движок инференса, к которому OpenCode обращается за локальными моделями
- lucumr-local-models - критика проблем UX локальных LLM от Ронахера; OpenCode претендует на закрытие части из них
- cli-anything - кросс-harness упаковка навыков, поддерживающая в том числе OpenCode
- peon-ping - содержит хуки для OpenCode среди прочих harness'ов
Репозиторий: https://github.com/sst/opencode · TypeScript · MIT