PurpleSchool — курсы программирования онлайн
  • Пути
    • Frontend React разработчик
    • Frontend Vue разработчик
    • Backend разработчик Node.js
    • Fullstack разработчик React / Node.js
    • Mobile разработчик React Native
    • Backend разработчик Golang
    • Devops инженер
    • Backend разработчик Python
  • AI для кодаНовое
  • О нас
    • Отзывы
    • Реферальная программа
    • О компании
    • Контакты
  • Иконка открытия меню
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
PurpleSchool — платформа бесплатных roadmap и курсов для разработчиков
ютуб иконка
Telegram иконка
VK иконка
VK иконка
Курсы
ГлавнаяКаталог курсовFrontendBackendFullstack
Практика
КарьераПроектыPurpleПлюс
Материалы
БлогБаза знаний
Документы
Договор офертаПолитика конфиденциальностиПроверка сертификатаМиграция курсовРеферальная программа
Реквизиты
ИП Ларичев Антон АндреевичИНН 773373765379contact@purpleschool.ru

PurpleSchool © 2020 -2026 Все права защищены

  • Курсы
    • FrontendИконка стрелки
    • AI разработкаИконка стрелки
    • BackendИконка стрелки
    • DevOpsИконка стрелки
    • MobileИконка стрелки
    • ТестированиеИконка стрелки
    • Soft-skillsИконка стрелки
    • ДизайнИконка стрелки
    Иконка слояПерейти в каталог курсов
  • Бесплатно
    • Курсы
    • JavaScript Основы разработкиPython Основы PythonCSS CSS FlexboxКарта развитияВопросы для собеседований
    • База знанийИконка стрелки
    • Новостные рассылкиИконка стрелки
  • PurpleSchool — курсы программирования онлайн
    • AI для кодаНовое
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
    Главная
    Сообщество
    Агенты в OpenCode: как создать своего агента

    Агенты в OpenCode: как создать своего агента

    Аватар автора Агенты в OpenCode: как создать своего агента

    Антон Ларичев

    Иконка календаря10 октября 2026
    AI-инструментыClaude CodeDevOpsразработкаapimiddleИконка уровня middle

    Агент в OpenCode — это именованный профиль работы: своя модель, свой системный промпт и свой список разрешённых инструментов. Чтобы создать своего агента, нужно описать его отдельным markdown-файлом в папке .opencode/agent/ внутри проекта (или в ~/.config/opencode/agent/, если агент нужен во всех проектах) либо объявить его в блоке agent файла opencode.json. После этого агент появляется в списке доступных, и его можно вызвать прямо в сессии.

    Дальше — чем агент отличается от обычного режима, какие у него поля, как подключить к агенту модель Claude, работающую из России, и как собрать агента-ревьюера, который не имеет права править код.

    Одна оговорка перед началом: OpenCode развивается быстро, и набор полей у агента со временем пополняется. Конкретные поля сверяйте с документацией той версии, которая стоит у вас — особенно если какое-то из них не подхватилось.

    Что такое агент в OpenCode

    Обычно диалог с OpenCode идёт в одном режиме: модель видит весь проект, может читать и писать файлы, запускать команды. Агент позволяет зафиксировать более узкую конфигурацию и переключаться между ними, не переписывая конфиг.

    У агента есть два режима работы, и разница между ними принципиальная:

    • primary — агент ведёт диалог. Вы выбираете его в начале или переключаетесь на него во время сессии, и дальше он отвечает на ваши сообщения.
    • subagent — агент не ведёт диалог, а вызывается на отдельную подзадачу. Основной агент передаёт ему задание, тот работает в своём контексте и возвращает результат.

    Второй режим — это то, зачем агенты нужны чаще всего. Подзадача выполняется в отдельном контексте, и её промежуточные шаги не забивают основную сессию. Поиск по большому репозиторию, разбор логов, прогон тестов — всё это удобно отдавать subagent-у: в основной диалог вернётся вывод, а не сотня шагов, которые к нему привели.

    Не путайте агентов с файлом AGENTS.md. AGENTS.md — это инструкции по проекту, общие для всех агентов: как собирать, как запускать тесты, какие соглашения в коде. Агент — это профиль исполнителя. Про сам файл инструкций мы писали отдельно: AGENTS.md: как написать инструкции для Codex и OpenCode.

    Встроенные агенты: build, plan и general

    Из коробки в OpenCode есть несколько агентов, и до создания своих полезно понять, что уже закрыто:

    • build — основной рабочий агент. Полный доступ: читает, пишет файлы, запускает команды. Режим по умолчанию для обычной разработки.
    • plan — агент для обсуждения без последствий. Ему запрещено менять файлы, поэтому его удобно использовать, когда нужно разобраться в незнакомом коде или обсудить подход, не рискуя, что модель начнёт переписывать проект по ходу разговора.
    • general — subagent общего назначения для исследовательских подзадач: найти что-то в репозитории, собрать информацию по нескольким файлам.

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

    Как создать своего агента

    Самый короткий путь — markdown-файл. YAML-фронтматтер описывает параметры агента, тело файла становится его системным промптом.

    Положите файл .opencode/agent/reviewer.md в корень проекта:

    ---
    description: Ревьюит изменения в текущей ветке и никогда не правит код
    mode: subagent
    model: purpleschool-anthropic/claude-sonnet-5
    temperature: 0.1
    tools:
      write: false
      edit: false
    ---
    
    Ты ревьюер кода. Твоя задача — находить проблемы в изменениях, а не исправлять их.
    
    Порядок работы:
    
    1. Получи список изменений командой `git diff`.
    2. Разбери изменения по файлам.
    3. Для каждой найденной проблемы укажи файл, строку и причину.
    
    Правила: не предлагай готовых патчей, не меняй файлы. Если в diff нет проблем — скажи
    об этом прямо, не придумывай замечания ради объёма.
    

    Что здесь происходит по полям:

    • description — для чего агент. Для subagent-а это поле делает двойную работу: по нему основной агент решает, стоит ли передавать ему задачу. Описание вида «ревью кода» работает хуже, чем описание с явной границей ответственности.
    • mode — subagent, то есть агент не ведёт диалог сам, а вызывается на подзадачу.
    • model — модель в формате провайдер/модель. Здесь это провайдер purpleschool-anthropic, который мы настроим в следующем разделе.
    • temperature — низкое значение для задач, где нужна предсказуемость, а не вариативность формулировок.
    • tools — карта инструментов. Отключив write и edit, вы получаете агента, который физически не может изменить файлы, — это надёжнее, чем просьба «ничего не меняй» в промпте.

    Тело файла после фронтматтера — системный промпт агента. Это обычный markdown, и писать его стоит как инструкцию сотруднику: что делать, в каком порядке, чего не делать.

    То же самое можно объявить в opencode.json, если не хочется разводить отдельные файлы:

    {
      "$schema": "https://opencode.ai/config.json",
      "agent": {
        "reviewer": {
          "description": "Ревьюит изменения в текущей ветке и никогда не правит код",
          "mode": "subagent",
          "model": "purpleschool-anthropic/claude-sonnet-5",
          "tools": {
            "write": false,
            "edit": false
          }
        }
      }
    }
    

    Разница только в удобстве: markdown-файл лучше, когда промпт длинный, JSON — когда агент описывается тремя строками. Файлы в .opencode/agent/ коммитятся вместе с проектом, так что агент приезжает всей команде вместе с репозиторием.

    Какую модель Claude подключить к агенту

    Поле model ссылается на провайдера, а провайдера нужно объявить. Напрямую из России API Anthropic не отвечает, поэтому модель подключается через шлюз. У PurpleSchool для этого есть сервис AI для кода: он даёт ключ и адрес, совместимый с Anthropic API, с оплатой в рублях.

    Сначала положите ключ в переменную окружения — так он не попадёт в конфиг и не уедет в репозиторий:

    export PURPLESCHOOL_API_KEY="ваш ключ"
    

    Строку стоит добавить в ~/.zshrc или ~/.bashrc, иначе переменная исчезнет вместе с текущей сессией терминала. Если механика переменных окружения в шелле для вас не очевидна, у нас есть разбор: переменные окружения в Bash и команда export.

    Теперь провайдер в opencode.json:

    {
      "$schema": "https://opencode.ai/config.json",
      "provider": {
        "purpleschool-anthropic": {
          "npm": "@ai-sdk/anthropic",
          "name": "PurpleSchool Anthropic Proxy",
          "options": {
            "baseURL": "https://app.purpleschool.ru/api-v2/public/ai-proxy/anthropic/v1",
            "apiKey": "{env:PURPLESCHOOL_API_KEY}"
          },
          "models": {
            "claude-sonnet-5": { "name": "Claude Sonnet 5" },
            "claude-haiku-5-5": { "name": "Claude Haiku 5.5" },
            "claude-opus-5": { "name": "Claude Opus 5" }
          }
        }
      }
    }
    

    Конструкция {env:PURPLESCHOOL_API_KEY} — это подстановка переменной окружения: сам ключ в файле не хранится. Ключ models перечисляет модели, которые будут видны в OpenCode; актуальный список id есть в инструкции на странице сервиса, там же лежат модели семейств Sonnet, Haiku, Opus и Fable разных версий.

    После этого purpleschool-anthropic/claude-sonnet-5 в поле model агента становится валидной ссылкой. Проверить, что провайдер подхватился, можно командой /models в запущенном OpenCode — модели появятся в списке под именем провайдера.

    Если OpenCode у вас ещё не установлен, начните с базовой настройки — она описана отдельно: OpenCode в России: установка и настройка без VPN. Сам OpenCode ставится через npm:

    npm install -g opencode-ai
    

    Как вызвать агента в диалоге

    Способ вызова зависит от режима агента.

    primary-агент выбирается как режим сессии: вы переключаетесь на него, и дальше он отвечает на все ваши сообщения. Переключение доступно внутри запущенного OpenCode, так что менять агента можно по ходу разговора — например, разобраться в коде на plan, а потом переключиться на build и внести правки.

    subagent вызывается упоминанием по имени — @reviewer в тексте сообщения. Агент получает задачу, выполняет её в своём контексте и возвращает результат в основной диалог.

    Второй путь для subagent-а — автоматический. Основной агент сам решает делегировать часть работы, опираясь на поле description. Поэтому описание агента стоит писать не для себя, а для модели: что агент делает и, главное, в каких случаях его нужно звать.

    Пример: агент-ревьюер кода

    Соберём агента из предыдущих разделов целиком и посмотрим, что получится на практике. Файл .opencode/agent/reviewer.md уже описан выше: mode: subagent, write и edit отключены, промпт требует указывать файл и строку.

    Вызов выглядит так:

    @reviewer посмотри изменения в текущей ветке перед пушем
    

    Что происходит дальше: агент запускает git diff, читает изменённые файлы, возвращает список замечаний. Поправить он ничего не может — write и edit выключены на уровне конфигурации, и промпт тут вторичен. Это важное свойство: ревьюер, которому технически запрещено писать в файлы, не «починит» заодно пару мест по своему усмотрению.

    Обратите внимание на bash в наборе инструментов. Ревьюеру он нужен, чтобы получить diff, но вместе с ним агент получает возможность запускать произвольные команды. Если это не устраивает, можно не давать агенту shell вовсе, а передавать diff в тексте задачи — агент разберёт то, что ему дали, и ничего не запустит.

    Тот же приём работает для других узких задач: агент, который только пишет тесты; агент, который только переводит строки интерфейса; агент, который читает логи и ничего больше. Общий принцип — чем уже права и конкретнее промпт, тем предсказуемее результат.

    Как настроить агента, чтобы экономить токены

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

    • Модель под задачу. Переименовать переменные, собрать коммит-месседж, причесать markdown — это работа для быстрой и дешёвой модели. Тяжёлую модель оставьте основному агенту, который разбирается в архитектуре. Поле model задаётся у каждого агента отдельно, так что одна сессия может пользоваться обеими.
    • Вынос подзадач в subagent. Шумная работа вроде поиска по репозиторию проходит в контексте агента, а в основную сессию попадает только результат. Основной диалог остаётся короче, а каждый следующий запрос в нём дешевле.
    • Короткий набор инструментов. Описания доступных инструментов занимают место в каждом запросе. Агенту, которому не нужен веб-поиск и правка файлов, их лучше отключить.
    • Промпт вместо повторяющихся объяснений. Требования, которые вы раз за разом дописываете в чат руками, надёжнее положить в тело файла агента — один раз в конфиг вместо каждого сообщения.

    Частые ошибки при настройке агента

    Агент не появился в списке. Проверьте расположение файла: проектные агенты лежат в .opencode/agent/ относительно корня проекта, и OpenCode должен быть запущен именно из этого корня. Запуск из подпапки — самая частая причина. Глобальные агенты живут в ~/.config/opencode/agent/.

    Агент есть, но не вызывается по @. Убедитесь, что у него mode: subagent. primary-агент по упоминанию не вызывается — он выбирается как режим сессии.

    Модель недоступна или ответ приходит с ошибкой доступа. Строка в model должна точно совпадать с парой «id провайдера / id модели» из блока provider. Если провайдер задан верно, проверьте, что переменная PURPLESCHOOL_API_KEY действительно видна процессу: echo $PURPLESCHOOL_API_KEY в том же терминале, из которого запускаете OpenCode. Переменная, добавленная в ~/.zshrc, не появится в уже открытых сессиях — их нужно перезапустить.

    Агент всё равно правит файлы. Значит, ограничение задано только в промпте. Текстовая просьба — это не запрет; отключайте write и edit в tools.

    Невалидный YAML во фронтматтере. Поле tools — это вложенная карта, отступы в ней значимы. Если агент не читается, а путь верный, начните с проверки отступов и двоеточий.

    Что дальше

    Агенты закрывают одну часть настройки OpenCode, инструменты — другую: агенту можно выдать доступ к внешним системам через MCP-серверы, и тогда он будет работать не только с файлами проекта. Про это у нас есть отдельный разбор: MCP в Codex CLI и OpenCode: как подключить сервер.

    Если нужно решить, на чём держать ключ и что выгоднее по деньгам, посмотрите сравнение вариантов: OpenCode Zen или свой API-ключ: что выгоднее в России. А ключ для моделей Claude с оплатой в рублях — в сервисе AI для кода.

    Иконка глаза14

    Комментарии

    0

    Постройте личный план изучения HTML и CSS - полный курс по вёрстке с нуля до уровня Middle — бесплатно!

    HTML и CSS - полный курс по вёрстке с нуля — часть карты развития Frontend, Mobile

    • step100+ шагов развития
    • lessons30 бесплатных лекций
    • lessons300 бонусных рублей на счет

    Бесплатные лекции

    Лучшие курсы по теме

    изображение курса

    CSS Flexbox

    Антон Ларичев
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.9
    бесплатно
    Подробнее
    изображение курса

    Основы JavaScript

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    Продвинутый JavaScript

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее

    Похожие статьи

    Иконка аватараАнтон
    Иконка календаря07 октября 2026
    Claude CodeAI-инструментыDevOps+ 2middleИконка уровня middle

    Roo Code в VS Code: подключение Claude из России

    Roo Code начинает работать из России после одной правки в настройках: провайдер — Anthropic, в поле ключа — ваш API-ключ, в поле адреса — прокси, который отвечает без VPN и берёт оплату рублями. Само расширение ставится из Marketplace обычным порядком и остаётся нетронутым: ни форка, ни патча, ни туннеля. Ключ и адрес выдаёт [AI для кода](https://purpleschool.ru/ai-for-code). Ниже — установка, настройка провайдера, режимы Roo Code и ошибки, на которых спотыкается первое подключение.

    Иконка чипа0
    Иконка глаза141
    Иконка комментариев0
    Иконка аватараАнтон
    Иконка календаря06 октября 2026
    Claude CodeAI-инструментыDevOps+ 2middleИконка уровня middle

    Claude Code или Cursor: что выбрать в 2026 году

    Короткий ответ: Claude Code берут, когда агент должен работать сам — в терминале, по инструкциям из репозитория, без открытого редактора; Cursor — когда нужен редактор, в котором ассистент всегда под

    Иконка чипа0
    Иконка глаза221
    Иконка комментариев0
    Иконка аватараАнтон
    Иконка календаря29 сентября 2026
    AI-инструментыClaude CodeDevOps+ 2middleИконка уровня middle

    Бесплатный аналог Cursor и Claude Code в России

    Короткий ответ: бесплатных аналогов много, и почти все они ставятся в России без ухищрений — Cline, Kilo Code, OpenCode, Qwen Code, Codex CLI распространяются с открытым исходным кодом, и за сам инструмент никто денег не берёт. Проблема в другом: своей модели у них нет. Платите вы не за агента, а за модель, к которой он ходит, и блокируется из России именно доступ к модели. Поэтому вопрос «чем заменить Cursor и Claude Code» почти всегда оказывается другим вопросом — где взять доступ к сильной модели без зарубежной карты. Ниже разберём, что из бесплатного реально работает, где оно упирается в потолок, и во сколько обходится не искать замену вообще.

    Иконка чипа0
    Иконка глаза780
    Иконка комментариев1
    Иконка чипа0