OpenCode с Ollama: локальная модель и проверка правки кода
На странице · 5 разделов
OpenCode может редактировать файлы и запускать команды, получая ответы от модели через локальную Ollama. Для первого запуска выберите именно локальный тег, ограничьте права клиента и проверьте изменение одного учебного файла через Git diff. Адрес localhost сам по себе не доказывает отсутствие иных сетевых запросов, а ответ модели не доказывает, что файл изменился.
Документация сверена 3 октября 2026 года по закреплённым ревизиям OpenCode и Ollama. Это инструкция для проверки на собственном устройстве, не отчёт о прогоне Modelium. У OpenCode и Ollama есть версии с отличающимся поведением; перед работой с настоящим кодом проверьте установленную версию и настройки. s1 s7
Что именно будет локальным?
OpenCode — отдельный агентный клиент: он читает проект, редактирует файлы и может выполнять команды; Ollama обслуживает выбранную модель. Официальная интеграция Ollama предлагает как Local, так и Cloud модели, поэтому команда ollama launch opencode сама по себе не доказывает, что код обрабатывается только локально: в выборе нужно явно указать установленный локальный тег. Для сетевого контура потребуются отдельные проверки и ограничения клиента. s1 s8
Здесь результатом считается правка одного учебного файла с подтверждённым diff, а не правдоподобный ответ агента. Общий путь для coding-agent через Aider решает близкую задачу другим клиентом; эта страница посвящена именно настройке OpenCode, разрешениям действий и проверке его интеграции с Ollama. Если нужен только сервер модели, начните с Ollama. s1 s5
Как подготовить безопасный тест?
Выберите отдельный пустой Git-репозиторий без секретов и клиентских данных на машине, где уже установлены Ollama, OpenCode и Git. Убедитесь, что локальный сервер Ollama отвечает и нужная модель действительно есть в ollama list; если её ещё нет, скачивание выбранного тега через ollama pull <тег> потребует сети и диска. Возможность модели возвращать tool_calls предусмотрена API Ollama, но надёжность редактирования конкретным тегом этим не гарантируется: проверяйте поведение на учебном файле. s1 s4
Ollama рекомендует для coding tools контекст 64 000 токенов и больше и приводит пример OLLAMA_CONTEXT_LENGTH=64000 ollama serve. Это рекомендация runtime, не минимум RAM/VRAM и не обещание, что ваша модель или железо поддержат такой режим: длинный контекст расходует больше памяти. Если приложение Ollama или служба уже запустили сервер, не стартуйте второй на том же порту — меняйте настройку именно у работающей службы или приложения. После пробного обращения ollama ps показывает столбцы CONTEXT и PROCESSOR для фактически загруженной модели. В документации провайдера OpenCode при проблемах с tool calls отдельно советуют начать с num_ctx 16–32k: эти советы не следует выдавать за измеренный единый порог успеха. s3 s2 s8
Как подключить OpenCode к Ollama и ограничить права?
Для быстрого знакомства Ollama документирует ollama launch opencode. Команда может запустить OpenCode с временной конфигурацией выбранной модели; ollama launch opencode --config настраивает интеграцию без интерактивной сессии. Запуск не перезаписывает глобальный ~/.config/opencode/opencode.json, а модель, заданная только в этом файле, не обязана появиться в списке выбора самой команды ollama launch. Выберите локальный тег, а не Cloud, и проверьте фактические настройки до разрешения действий. s1
Для контролируемого учебного проекта используйте официальный ручной вариант: в корне проекта задайте opencode.json с custom provider ollama, пакетом @ai-sdk/openai-compatible, options.baseURL равным http://localhost:11434/v1 и models с тем же ID, что выбранный локальный тег. Пример документации использует qwen3.5; если у вас установлен другой тег, замените ID в обоих местах, не считайте пример гарантией совместимости любого варианта. Конфигурация OpenCode сливается из нескольких мест: проектный файл не отменяет остальные непересекающиеся глобальные/управляемые настройки, поэтому проверьте их и не открывайте секретный рабочий репозиторий для этого теста. s1 s2 s7
В тот же учебный opencode.json добавьте разрешения permission: "*": "ask", "bash": "ask", "edit": "ask", "external_directory": "deny", "webfetch": "deny", "websearch": "deny" и "task": "deny". Для применения вставьте эти пары в JSON-объект permission рядом с объектом provider из официального примера настройки OpenCode. Это настройка разрешений самого клиента, не сетевая песочница ОС: команды, которым вы дадите право запуска, тоже могут обращаться к сети. По умолчанию у OpenCode большинство прав — allow; не запускайте --auto в первом тесте, так как этот режим подтверждает запросы, для которых установлен ask. s2 s5
При ручном варианте откройте проект в терминале, проверьте opencode models ollama, затем запустите opencode -m ollama/<тег>; путь модели для -m — provider/model, а в интерактивном клиенте модель выбирается через /models. Не вводите в провайдере адрес облачного API и не полагайтесь на незаметное переключение в Cloud. Если в списке нет тега, сначала перепроверьте локальный ollama list и JSON-конфигурацию — одна только запись модели в конфиге не создаёт веса. s6 s1 s2
Как доказать правку, не доверяя ответу агента?
В новом учебном Git-проекте создайте smoke.txt со строкой hello, добавьте и закоммитьте только его, затем убедитесь, что git status --short пуст. Не переносите процедуру в чужой репозиторий с незакоммиченными файлами. Попросите OpenCode: «Замени hello на hello world только в smoke.txt; не выполняй другие команды и не меняй остальные файлы». Разрешите лишь ожидаемое редактирование одного файла; запрос на bash, работу вне проекта или сетевые обращения отклоните. Такое разрешение — условие вашей проверки, а не результат, уже полученный Modelium. s5 s1
После выхода из клиента запустите git status --short, git diff --check и git diff -- smoke.txt. Успех — diff изменяет ровно разрешённый файл без посторонних правок, а его содержимое показывает hello world; если агент только написал это в чате, тест не пройден. Просмотрите все неожиданные файлы до повторного запуска. Чтобы откатить лишь подтверждённую учебную правку, выполните git restore -- smoke.txt, потом проверьте git status --short; не используйте массовый сброс реального проекта. Это редакционный протокол проверяемого результата, а не сообщение о собственном эксперименте. s5 s6
Что делать, если правки нет или запрос ушёл не туда?
Проверьте по порядку: верен ли локальный baseURL с /v1, совпадает ли тег модели в ollama list и opencode models ollama, есть ли права на edit, достаточен ли фактически выделенный контекст в ollama ps, не выбран ли Cloud вместо Local. Ответ локального Ollama API с поддержкой tool calls — лишь часть цепочки: выбранная модель должна предложить нужный вызов, клиент — запросить разрешение, а Git diff — подтвердить изменение. Сведения об агентном tool calling и контексте Ollama полезны для отдельной диагностики. s1 s2 s3 s4 s5
Если нужна работа без внешней сети, не считайте localhost и запрет только webfetch доказательством изоляции: другие действия клиента, плагины и разрешённые shell-команды нужно проверить отдельно сетевым тестом, описанным в проверке офлайн-контура. Ollama отдельно документирует отключение своих облачных функций через OLLAMA_NO_CLOUD=1 с перезапуском сервера; этот флаг сам по себе не изолирует OpenCode и не заменяет настройки ОС. s8 s5
Следующий шаг: после успешного diff откройте проверку контекста и размещения модели и повторите опыт на тестовом проекте вашего размера. Modelium не запускал модель, не проверял реальный tool call, не измерял качество правки, скорость или память. s3 s4
Источники
- Ollama — OpenCode integration: запуск, локальные модели и config precedence — revision d9075caf1ae19447716325d1094f50edea4b036d. Получено 03.10.2026.
- OpenCode — Ollama provider и локальный baseURL — revision bbe4c952d707bcb5436646de30a1ed8f0cc64b74. Получено 03.10.2026.
- Ollama — Context length, allocation and ollama ps — revision f0078ae4766d0d570e196158f20dde309bd96124. Получено 03.10.2026.
- Ollama — Tool calling capability and model-dependent calls — revision cc9555aff0f220748dc761a4302cfaea7c62c9fe. Получено 03.10.2026.
- OpenCode — Permissions, defaults, ask/deny and auto mode — revision 0a5bed2bc2549d988ba969765ec6722615c56e01. Получено 03.10.2026.
- OpenCode — CLI model selection, run and models — revision fd9bd448a2e68990e7aed3495e5590cecb934bfb. Получено 03.10.2026.
- OpenCode — Config locations and merge order — revision b04697366f05419e9bd7a92f841813dd976161c9. Получено 03.10.2026.
- Ollama — FAQ: local server, context and cloud features — revision 948f69330acf96a2310f1b53fdfc211731a386d8. Получено 03.10.2026.