Свой кодинг-агент на открытых моделях через Bedrock

Что обвязать вокруг открытой модели в Bedrock, чтобы локальный агент читал файлы, вызывал инструменты и не утекал в чужой API.

· 4 мин чтения

Кодинг-агенты обычно требуют одно из трёх: отправить код в чужой API, привязаться к одному провайдеру или платить фиксированную цену за место. В AWS пишут, что открытые веса на Bedrock снимают эти ограничения. Модель запускается внутри аккаунта AWS, переключается одним параметром API, а оплата идёт только за токены.

Но сама модель это ещё не агент. Разберём схему по слоям.

Обвязка, которая превращает модель в агента

Используется OpenCode, открытый терминальный агент на Go. Он читает и редактирует файлы, запускает команды и читает диагностику Language Server Protocol (LSP, протокол для подсказок и ошибок прямо в редакторе). OpenCode умеет работать с более чем 75 провайдерами моделей, включая Bedrock.

Связка выглядит так. OpenCode работает как TUI (терминальный интерфейс) на вашей машине и обращается к Bedrock через Converse API, единый формат вызова моделей в Bedrock. Bedrock размещает модели как управляемые бессерверные (serverless, без своих серверов) эндпоинты. Код и промпты остаются в аккаунте AWS, в регионе, под IAM-политиками (правила доступа в AWS) и с логами в CloudTrail.

Маршрутизация: разные модели под разные задачи

Один из приёмов, на которых строится схема, это назначение разных моделей разным ролям в одной сессии. В opencode.json это описывается как агенты plan и build. План и архитектура идут на Moonshot AI Kimi K3 (она всегда рассуждает и поддерживает контекст в 1 млн токенов). Генерация кода идёт на NVIDIA Nemotron 3 Super 120B, у которой из 120 млрд параметров на каждый токен активируется только 12 млрд (архитектура Mixture-of-Experts, смесь экспертов, когда для каждого токена включается только часть модели), что даёт до 7 раз большую пропускную способность по данным NVIDIA.

Менять модель можно и на лету: команда /models внутри сессии или переключение командой /model.

Инструменты и приватность

В AWS подчёркивают, что Bedrock не использует входы и выходы для обучения фундаментальных моделей. Код остаётся в аккаунте, а при вызове через географический профиль, например us.moonshotai.kimi-k3, обработка не выходит за пределы географии. Глобальный профиль global.moonshotai.kimi-k3 маршрутизирует запрос в любой коммерческий регион AWS и стоит примерно на 10% дешевле географического профиля.

Для авторизации используется стандартная цепочка AWS: IAM Identity Center, IAM-ключи или Bedrock API-ключ. Для продакшена рекомендуют Identity Center или IAM-роли вместо долгоживущих ключей.

Стоимость и где она растёт

По данным Gartner за 2026 год, агентские рабочие процессы умножают потребление токенов в 5–30 раз. Bedrock даёт три ценовых яруса. Priority для production с жёсткими требованиями к задержке, Standard для обычного вызова, Flex примерно на 50% дешевле Standard для задач, которые допускают переменную задержку: пакетный рефакторинг, генерация тестов, документация.

Где оценивать модели

Для сравнения подходит Artificial Analysis Coding Index, композитный бенчмарк (сводный тест качества) по реальным инженерным задачам, среди прочего SWE-Bench, Terminal-Bench и SWE-Atlas. На своих данных можно запустить Amazon Bedrock Evaluations с авто-оценкой, LLM-as-a-judge (когда одну модель просят выступить оценщиком другой) или проверкой человеком.

Как применить

  1. Установите OpenCode через curl -fsSL https://opencode.ai/install | bash, проверьте opencode –version и задайте переменные AWS (AWS_REGION, профиль SSO или ключи). Для продакшена предпочтительны IAM Identity Center или роли вместо долгоживущих ключей.
  2. Включите в консоли Bedrock доступ к моделям Kimi K3, GPT-OSS 120B и Nemotron 3 Super 120B. Откройте /models внутри OpenCode, чтобы убедиться, что провайдер amazon-bedrock их видит.
  3. Положите в корень проекта opencode.json с двумя агентами: plan на amazon-bedrock/global.moonshotai.kimi-k3 для рассуждений, build на amazon-bedrock/us.nvidia.nemotron-super-3-120b для генерации. Верхний model задаёт GPT-OSS 120B как модель по умолчанию для всего остального.
  4. Разнесите роли: план и сложную отладку на Kimi K3 (reasoning_config в high или max), массовую генерацию на Nemotron 3 Super 120B. Переключайтесь командой /model, когда задача меняется.
  5. Для пакетных задач вроде рефакторинга большой кодовой базы, генерации тестов и документации включайте Flex-уровень в Bedrock ради снижения цены примерно наполовину. Интерактивную работу оставляйте на Standard или Priority.
  6. Перед запуском в команде прогоняйте Bedrock Evaluations на своих промптах и репозитории.