Архив рубрики ~Лента новостей~

Дешевое локальное агентное программирование: Claude Code + Ollama + Gemma4

Дешевое локальное агентное программирование: Claude Code + Ollama + Gemma4

В этой статье описывается создание полноценного локального стека агентного программирования с использованием Ollama, Gemma 4 и Claude Code.

Дешевое локальное агентное программирование: Claude Code + Ollama + Gemma4

# Введение

Представьте себе: многоагентный рабочий процесс, который читает файлы, пишет патчи, запускает тесты и итерирует по четырем сервисам, совершая 400 вызовов API за один день. Приходит уведомление. Вы снова превысили лимит. Каждый токен стоит денег, каждый запрос отправляет ваш собственный код на сторонний сервер, а ограничения скорости прерывают длительные сессии — единственное решение — платить больше.

Модель Gemma 4 26B MoE активирует всего 3,8 миллиарда из своих 26 миллиардов параметров за один прямой проход. Она набирает 77,1% в тесте LiveCodeBench v6 и 86,4% в тесте τ2-bench на использование агентных инструментов — бенчмарке, который специально проверяет, что происходит, когда модели приходится вызывать инструменты, выполнять шаги и обрабатывать ошибки в многоэтапном рабочем процессе. Предыдущее поколение, Gemma 3 27B, набрало 6,6% в том же тесте. Это не просто небольшое улучшение. Это разница между моделью, которая не может надежно вызывать инструменты, и моделью, которая может запускать агентный цикл Клода без постоянного искажения параметров вызова функций.

В этой статье рассматривается полный стек технологий: Ollama, обслуживающая Gemma 4 локально, файл Modelfile, предотвращающий сбои контекстного окна в агентных сессиях, файл settings.json, связывающий Claude Code с локальной конечной точкой, скрипт проверки, подтверждающий работоспособность всего перед использованием в реальном коде, а также честный обзор того, что ломается и как это исправить. Статья предназначена для инженеров, уже понимающих, что такое большие языковые модели (LLM) и каковы затраты на агентные циклы. Никаких пояснений по основам.

# Почему Джемма 4?

Выпущенная 2 апреля 2026 года под Apache 2.0, Gemma 4 — это самая мощная на сегодняшний день модель семейства с открытыми весами от Google DeepMind. В неё входят четыре варианта: E2B (2 млрд эффективных), E4B (4 млрд эффективных), 26B MoE и 31B Dense. В варианте 26B MoE используется 128 небольших экспертов, активируется всего 8 экспертов на токен плюс один общий эксперт, что обеспечивает качество, близкое к 31B, при значительно меньших вычислительных затратах.

В предыдущих версиях Gemma использовалась собственная лицензия Google с достаточно неоднозначными ограничениями на коммерческое использование, из-за чего юридические отделы компаний регулярно отмечали это как препятствие. Gemma 4 — это Apache 2.0, первая версия для семейства Gemma. Если ваша команда хочет внедрить это во внутренние инструменты, выпускать продукты на его основе или запускать его в производственных процессах без дополнительных затрат на юридическую экспертизу, это изменение имеет важное операционное значение.

// Цифры, имеющие значение для программистов

Бенчмарк Джемма 3 27Б Джемма 4 26B MoE Джемма 4 31B Плотный
τ2-стенд (использование агентного инструмента) 6,6% ~79% 86,4%
LiveCodeBench v6 29,1% 77,1% 80,0%
GPQA Diamond 42,4% 82,3% 84,3%
AIME 2026 (математика) 20,8% 88,3% 89,2%
Арена AI ELO 1365 1441 1452

// Требования к оборудованию

Прежде чем брать модель с 18 ГБ памяти, разберитесь, с чем именно вы имеете дело. Семейство Gemma 4 было разработано для использования как на периферийных устройствах, так и на рабочих станциях, и четыре варианта отражают этот диапазон.

Вариант Метка ламы Активные параметры Видеопамять в 4 квартале Контекстное окно
Edge 4B gemma4:e4b ~6 ГБ 128K
26B MoE gemma4:26b 3.8Б ~16–18 ГБ 256K
31B Плотный gemma4:31b 31Б ~24–32 ГБ 256K

// Установка Ollama, Gemma 4 и Claude Code

Шаг 1: Установите Ollama

# macOS и Linux — установка в одну строку: curl -fsSL https://ollama.com/install.sh | sh # Проверка версии — для поддержки Anthropic Messages API требуется версия 0.14.0+ # Совместимая с Anthropic конечная точка была добавлена в январе 2026 г. Версия ollama # Ожидается: версия ollama 0.22.x или выше (по состоянию на май 2026 г.) # Windows: загрузите собственный установщик с https://ollama.com # WSL2 рекомендуется, если вы хотите использовать сквозную передачу GPU в Windows

После установки Ollama запускается как фоновая служба на порту 11434. Убедитесь, что она запущена:

curl http://localhost:11434 # Ожидаемый ответ: Ollama запущена

Шаг 2: Вытащите Джемму 4

# 26B MoE — рекомендуется для этой конфигурации (~18 ГБ загрузки) ollama pull gemma4:26b # Пока ждете, подтвердите, что загрузка идет ollama ps # Отображает модели, которые в данный момент загружаются или запускаются # Дополнительно: также загрузите 31B для сравнения на подходящем оборудовании ollama pull gemma4:31b # Подтвердите завершение загрузки ollama list # Должно отобразиться gemma4:26b с указанием размера и даты изменения

Шаг 3: Установите Claude Code

# Предварительные требования: Node.js 18 или более поздняя версия node —version # Убедитесь, что у вас установлена версия 18+ # Установите CLI Claude Code глобально npm install -g @anthropic-ai/claude-code # Проверьте установку claude —version

После запуска Ollama и загрузки Gemma 4, естественным следующим шагом будет экспорт переменных окружения и немедленный запуск Claude Code.

# Файл модели

В Ollama по умолчанию используется контекстное окно размером 4K токенов для Gemma 4. Фактическое контекстное окно Gemma 4 имеет размер 128K–256K . Это значение по умолчанию в 4K не является рекомендацией — Ollama будет использовать его, если вы его не измените. В сеансе агента Claude Code, который читает исходные файлы, хранит историю разговоров и поддерживает результаты вызовов инструментов на протяжении нескольких ходов, 4K токенов исчерпываются за считанные секунды.

Без переопределения контекста Claude Code теряет из виду содержимое файла в процессе редактирования, забывает предыдущие инструкции и вносит фрагментарные изменения. В частности: когда агент пытается рефакторизовать сервисный класс из 200 строк, он просто забывает о существовании второй половины. Агент не выдает ошибку. Он просто молча работает с неполным представлением файла и выдает частично корректный результат, который приводит к сбою в дальнейшем.

Решение заключается в создании файла модели, который автоматически закладывает правильный размер контекста и другие параметры вывода в именованный вариант модели. Создайте следующий файл:

# ~/.ollama/Modelfiles/gemma4-claude # Вариант Gemma 4 26B MoE, оптимизированный для агентных сессий Claude Code. # Встраивает контекстное окно, температуру и системную подсказку в модель, # чтобы каждая сессия Claude Code начиналась с правильной конфигурации. # # Сборка с помощью: # mkdir -p ~/.ollama/Modelfiles # ollama create gemma4-claude -f ~/.ollama/Modelfiles/gemma4-claude FROM gemma4:26b # Контекстное окно — 65536 токенов (64K) — это проверенный безопасный минимум для реальных # кодовых баз без запуска подкачки на системах с 16-18 ГБ видеопамяти. # Увеличьте до 131072 (128K), если у вас есть запас на системах с 24 ГБ+. # Не превышайте значение 131072, если вы не провели профилирование использования памяти # под нагрузкой — Ollama предварительно выделяет весь кэш ключ-значение заранее. ПАРАМЕТР num_ctx 65536 # Температура — 0,2 намеренно низкое значение для агентного кодирования. # Более высокая температура вносит вариативность в форматирование параметров вызова инструмента, # что приводит к тому, что валидатор инструмента Claude Code отклоняет вызовы. # Для творческих задач следует установить это значение выше. Для агентных циклов: низкое. ПАРАМЕТР temperature 0,2 # top_p — порог выборки ядра. 0,9 обеспечивает сфокусированность генерации, # избегая при этом циклов повторения, которые top_p=1,0 может создавать в # длительных агентных сессиях. ПАРАМЕТР top_p 0,9 # repeat_penalty — штрафует модель за повторяющиеся токены. # 1,15 помогает предотвратить циклы вызова инструмента, когда Gemma 4 бесконечно повторяет один и тот же # неудачный вызов инструмента с почти идентичными параметрами. ПАРАМЕТР repeat_penalty 1.15 # num_predict — максимальное количество токенов на ответ. 4096 достаточно для # большинства исправлений кода. Увеличьте до 8192, если вы регулярно генерируете # большие файлы за одно поколение. ПАРАМЕТР num_predict 4096 # Системная подсказка — усиливает поведение агента кодирования и явную # дисциплину использования инструментов. Gemma 4 выигрывает от напоминания о # фиксации вызовов инструментов, а не от описания того, что они будут делать. СИСТЕМА «Вы — старший инженер-программист, работающий в роли агента по кодированию. При работе с кодом: — Читайте файлы перед их редактированием. Никогда не предполагайте содержимое файлов. — Вносите по одному целенаправленному изменению за раз и проверяйте его перед продолжением. — Если вызов инструмента завершается неудачей, внимательно изучите ошибку, прежде чем повторять попытку. Не повторяйте попытку с идентичными параметрами. Сначала проведите диагностику. — Предпочитайте точечное редактирование полной переработке файлов. — Запускайте тесты после каждого значимого изменения, а не после пакета изменений. — Если вы не уверены в структуре кодовой базы, читайте больше файлов, а не гадайте. Будьте точны и методичны. Избегайте объяснений того, что вы собираетесь сделать, когда вы могли бы просто сделать это».

Создайте вариант:

# Создайте каталог Modelfiles, если он не существует: mkdir -p ~/.ollama/Modelfiles # Сохраните содержимое Modelfiles, указанное выше, в этот путь, затем выполните сборку: ollama create gemma4-claude -f ~/.ollama/Modelfiles/gemma4-claude # Убедитесь, что вариант создан: ollama list # Должно отобразиться gemma4-claude рядом с gemma4:26b # Быстрый тест — проверьте, загружается ли и отвечает ли: ollama run gemma4-claude «Какова временная сложность бинарного поиска и почему?» # Ожидайте четкий и краткий технический ответ в течение нескольких секунд

# Подключение кода Клода к локальной модели

После создания варианта модели, слой конфигурации связывает Claude Code с Ollama. В основе этого лежат две переменные среды, но три дополнительные переменные предотвращают наиболее распространенные сбои.

Совместимая с Anthropic конечная точка Ollama находится по адресу http://localhost:11434, а не http://localhost:11434/v1. Путь /v1 — это совместимый с OpenAI слой Ollama. Claude Code использует протокол Anthropic Messages API, который соответствует корневой конечной точке. Использование пути /v1 приведет к ошибкам аутентификации или непредвиденному поведению.

// Глобальные настройки — ~/.claude/settings.json

Эта конфигурация применяется ко всем сессиям Claude Code во всех проектах. Это правильный выбор, если вы не часто переключаетесь между локальной и облачной моделями в рамках одного проекта.

{ «env»: { «ANTHROPIC_BASE_URL»: «http://localhost:11434», «ANTHROPIC_AUTH_TOKEN»: «ollama», «ANTHROPIC_API_KEY»: «», «ANTHROPIC_MODEL»: «gemma4-claude», «ANTHROPIC_DEFAULT_SONNET_MODEL»: «gemma4-claude», «ANTHROPIC_DEFAULT_HAIKU_MODEL»: «gemma4-claude», «ANTHROPIC_DEFAULT_OPUS_MODEL»: «gemma4-claude», «CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS»: «1» } }

Почему важна каждая переменная:

  • Параметр ANTHROPIC_BASE_URL перенаправляет все вызовы API кода Клода с серверов Anthropic на ваш локальный экземпляр Ollama.
  • Параметр ANTHROPIC_AUTH_TOKEN должен быть установлен в любое непустое строковое значение; Ollama игнорирует это значение, но Claude Code требует наличия заголовка.
  • Параметр ANTHROPIC_API_KEY: «» явно очищает ключ, чтобы Claude Code не мог использовать реальный ключ Anthropic API, если таковой установлен в вашей среде оболочки. Без этого неправильно настроенный ANTHROPIC_BASE_URL может незаметно переключиться на платный API.
  • ANTHROPIC_MODEL — это основное имя модели, которое Claude Code отправляет в запросах. Установите его на свой пользовательский вариант Modelfile, gemma4-claude, а не gemma4:26b. Тег raw model не содержит переопределения контекстного окна.
  • ANTHROPIC_DEFAULT_SONNET_MODEL , ANTHROPIC_DEFAULT_HAIKU_MODEL и ANTHROPIC_DEFAULT_OPUS_MODEL : Claude Code внутренне направляет различные типы задач на разные уровни моделей. Установка одной и той же локальной модели для всех трех гарантирует, что каждый запрос будет поступать в ваш экземпляр Ollama независимо от того, какой уровень Claude Code выберет внутренне.
  • CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: «1» удаляет специфические для Anthropic бета-заголовки, которые Claude Code добавляет к запросам. Локальные серверы вывода не распознают эти заголовки и отклоняют запросы, содержащие их. Установка этой переменной предотвращает эту ошибку, не влияя на основные функции Claude Code.

// Конфигурация для каждого проекта — .claude/settings.json

Для проектов, где требуется локальный вывод результатов, изолированный от глобальной конфигурации — частные репозитории, конфиденциальные кодовые базы или проекты со специфическими требованиями к моделям — используйте вместо этого файл настроек на уровне проекта:

# В корне вашего проекта mkdir -p .claude cat > .claude/settings.json bool: «»» Проверка 1: Убедитесь, что Ollama запущена и отвечает. Обращается к корневой конечной точке, которая возвращает «Ollama запущена», когда она работоспособна. «»» print(«nПроверка 1: работоспособность Ollama») try: response = httpx.get(OLLAMA_BASE_URL, timeout=5.0) if «Ollama запущена» in response.text: print(f» [ПРОЙДЕНО] Ollama запущена на {OLLAMA_BASE_URL}») return True else: print(f» [НЕУДАЧА] Неожиданный ответ: {response.text[:100]}») return False except httpx.ConnectError: print(f» [НЕУДАЧА] Невозможно подключиться к {OLLAMA_BASE_URL}») print(«Запущена ли Ollama? Попробуйте: ollama serve») return False def check_model_available() -> bool: «»» Проверка 2: Убедитесь, что конкретный вариант модели доступен в Ollama. Использует конечную точку /api/tags, которая перечисляет все загруженные модели. «»» print(«nПроверка 2: Доступность модели») try: response = httpx.get(f»{OLLAMA_BASE_URL}/api/tags», timeout=5.0) data = response.json() models = [m[«name»] for m in data.get(«models», [])] # Нормализация: Ollama может добавить «:latest», если не указано normalized = [m.split(«:»)[0] for m in models] if MODEL_NAME in models or MODEL_NAME in normalized: print(f» [PASS] Модель '{MODEL_NAME}' доступна») return True else: print(f» [FAIL] Модель '{MODEL_NAME}' не найдена») print(f» Доступные модели: {', '.join(models) or 'none'}») print(f» Run: ollama create {MODEL_NAME} -f ~/.ollama/Modelfiles/gemma4-claude») return False except Exception as e: print(f» [FAIL] Error checking model list: {e}») return False def check_messages_api() -> bool: «»» Проверка 3: Отправка базового вызова API Anthropic Messages на локальную конечную точку. Проверяет формат запроса, маршрутизацию моделей и работу базовой генерации. Использует тот же путь /v1/messages и схему запроса, что и Claude Code. Примечание: Claude Code использует http://localhost:11434 (root), а не /v1. Совместимый с Anthropic API находится по адресу /api/chat или root — Ollama маршрутизирует его. «»» print(«nПроверка 3: Вызов API Anthropic Messages») payload = { «model»: MODEL_NAME, «max_tokens»: 100, «messages»: [ { «role»: «user», «content»: «Ответьте точно: VERIFICATION_OK» } ] } headers = { «Content-Type»: «application/json», «x-api-key»: «ollama», # Требуется согласно спецификации API; значение игнорируется локально «anthropic-version»: «2023-06-01″ # Обязательный заголовок версии } try: response = httpx.post( f»{OLLAMA_BASE_URL}/v1/messages», json=payload, headers=headers, timeout=TIMEOUT ) if response.status_code != 200: print(f» [FAIL] HTTP {response.status_code}: {response.text[:200]}») return False data = response.json() # Структура ответа API Anthropic Messages: # { «content»: [{«type»: «text», «text»: «…»}], «stop_reason»: «…» } content_blocks = data.get(«content», []) text_blocks = [b for b in content_blocks if b.get(«type») == «text»] if not text_blocks: print(f» [FAIL] No «Содержимое текста в ответе: {json.dumps(data, indent=2)}») return False response_text = text_blocks[0].get(«text», «») print(f» [PASS] Вызов API Anthropic Messages прошел успешно») print(f» Ответ модели: {response_text[:80]}») return True except Exception as e: print(f» [FAIL] Запрос не выполнен: {e}») return False def check_tool_calling() -> bool: «»» Проверка 4: Убедитесь, что вызов инструмента работает от начала до конца. Это самая важная проверка для агентного использования Claude Code. Claude Code полагается на то, что модель корректно генерирует блоки tool_use для каждой операции с файлами, команды оболочки и выполнения кода. Отправляет простое определение инструмента и приглашение, которое должно его запустить. Проверяет, возвращает ли модель блок tool_use (а не просто текст, описывающий вызов). «»» print(«nПроверка 4: Проверка вызова инструмента») # Минимальное определение инструмента с использованием вызова функции Anthropic schema tools = [ { «name»: «read_file», «description»: «Прочитать содержимое файла по указанному пути.»», «input_schema»: { «type»: «object», «properties»: { «path»: { «type»: «string», «description»: «Абсолютный или относительный путь к файлу для чтения» } }, «required»: [«path»] } } ] payload = { «model»: MODEL_NAME, «max_tokens»: 256, «tools»: tools, # Принудительно заставить модель вызвать инструмент, а не отвечать текстом. # tool_choice: {«type»: «any»} требует использования любого инструмента. # Удалите это, если проверяете, выбирает ли модель инструменты самостоятельно. «tool_choice»: {«type»: «any»}, «messages»: [ { «role»: «user», «content»: «Прочитать файл по адресу /tmp/test.py и показать мне его содержимое.» } ] } headers = { «Content-Type»: «application/json», «x-api-key»: «ollama», «anthropic-version»: «2023-06-01″ } try: response = httpx.post( f»{OLLAMA_BASE_URL}/v1/messages», json=payload, headers=headers, timeout=TIMEOUT ) if response.status_code != 200: print(f» [FAIL] HTTP {response.status_code}: {response.text[:200]}») return False data = response.json() content_blocks = data.get(«content», []) tool_blocks = [b for b in content_blocks if b.get(«type») == «tool_use»] if not tool_blocks: print(» [FAIL] Model did not produce a tool_use block») print(» This means tool calling работает некорректно.») print(«Сессии Agentic Claude Code завершатся с ошибкой при операциях с файлами.») print(f»Полный ответ: {json.dumps(data, indent=2)}») return False tool_call = tool_blocks[0] tool_name = tool_call.get(«name», «») tool_input = tool_call.get(«input», {}) print(f» [ПРОЙДЕНО] Вызов инструмента: модель создала действительный блок tool_use») print(f»Вызван инструмент: {tool_name}») print(f»Параметры: {json.dumps(tool_input)}») # Проверка корректности: был ли вызван правильный инструмент с правильным параметром? if tool_name == «read_file» and «path» in tool_input: print(f»Имя инструмента и параметр верны.») else: print(f»ПРЕДУПРЕЖДЕНИЕ: Неожиданное имя инструмента или отсутствует параметр 'path'.») print(f»Модель вызвала инструмент, но не тот, который ожидался.») return True except Exception as e: print(f»[FAIL] Запрос не выполнен: {e}») return False def main(): print(«=» * 60) print(«Claude Code + Ollama + Gemma 4 Setup Verification») print(«=» * 60) checks = [ check_ollama_health, check_model_available, check_messages_api, check_tool_calling, ] results = [check() for check in checks] print(«n» + «=» * 60) passed = sum(results) total = len(results) if all(results): print(f»Все {total} проверки пройдены.») print(«Код Клода + Ollama + Gemma 4 готов.») print(f»nЗапуск с: claude») sys.exit(0) else: failed_checks = [i + 1 for i, r in enumerate(results) if not r] print(f»{пройдено}/{всего} проверок пройдено. Не пройдено: {failed_checks}») print(«Устраните указанные выше ошибки перед локальным использованием кода Клода.») sys.exit(1) if __name__ == «__main__»: main()

Как бегать:

pip install httpx python verify_local_setup.py

# Пошаговое руководство по выполнению агентической задачи

После успешного прохождения проверки вот как выглядит реальная сессия агента. Задача: взять существующий модуль Python без тестов, проанализировать его, написать набор тестов, запустить тесты и исправить все ошибки.

# Перейдите в каталог проекта cd ~/projects/my-service # Убедитесь, что Claude Code видит локальную конфигурацию claude —version # Убедитесь, что он не запрашивает ключ Anthropic API — если запрашивает, # файл settings.json считывается некорректно # Запустите агентскую сессию claude # Внутри Claude Code дайте агенту конкретную задачу: # > Проанализируйте класс UserService в src/user_service.py. # > Напишите набор тестов pytest, охватывающий все публичные методы. # > Запустите тесты и исправьте все ошибки. # > Цель — чистый запуск pytest без пропусков.

Вот как выглядит трассировка вызовов инструмента Claude Code во время этой сессии:

→ read_file(«src/user_service.py») Чтение 247 строк… → list_files(«src/») Найдено: user_service.py, models.py, db.py, exceptions.py → read_file(«src/models.py») Чтение 89 строк… → write_file(«tests/test_user_service.py», [содержимое теста]) Записано: 312 строк → bash(«python -m pytest tests/test_user_service.py -v 2>&1») Выполнение 14 тестов… НЕУДАЧНО tests/test_user_service.py::test_update_email_invalid AssertionError: Ожидалась ошибка проверки данных, получена ошибка None → read_file(«src/user_service.py») [целевое повторное чтение метода update_email] … → write_file(«tests/test_user_service.py», [исправленный тест]) Исправлена ошибка утверждения test_update_email_invalid → bash(«python -m pytest tests/test_user_service.py -v 2>&1») 14 тестов пройдено за 1,23 с

Gemma 4 надежно обрабатывает этот шаблон — считывает файлы перед редактированием, запускает тесты после внесения изменений и диагностирует сбои по сообщениям об ошибках, а не пытается повторить попытку вслепую. Однако именно в обработке сложных архитектурных решений, затрагивающих множество файлов, облачные модели по-прежнему имеют преимущество. Для описанной выше задачи (анализ, генерация тестов и целевые исправления) локальная конфигурация вполне подходит.

На что следует обратить внимание: если агент выдает ошибки «Неверные параметры инструмента», а затем многократно повторяет попытку с теми же параметрами, значит, температура слишком высока или модель не использует вариант Modelfile gemma4-claude. И температура, и переопределение контекстного окна заложены в этот вариант; в исходном теге gemma4:26b они отсутствуют.

// Что ломается и как это починить

  1. Ошибки форматирования параметров инструмента
    • Симптом : Код Клода неоднократно сообщает о недопустимых параметрах инструмента. Агент приносит извинения и повторяет попытку с идентичными или почти идентичными параметрами, после чего процесс зацикливается.
    • Причина : Это описано в разделе проблем Ollama на GitHub . Модель генерирует JSON-запросы инструментов, которые не соответствуют схеме, ожидаемой Claude Code. Чаще всего: неправильные имена полей, отсутствие обязательных полей или вложенные объекты там, где ожидаются скалярные значения.
    • Решение : Убедитесь, что вы используете gemma4-claude (вариант Modelfile), а не gemma4:26b напрямую. Значение temperature: 0.2 и системная подсказка в Modelfile значительно снижают это значение. Если проблема сохраняется, уменьшите значение temperature до 0.1 в Modelfile и пересоберите проект.
  2. Переключение контекстного окна на диск
    • Симптом : После нескольких ходов генерация замедляется до минимума. Команда ollama ps показывает падение загрузки графического процессора. Операционная система выгружает данные из кэша ключ-значение на диск.
    • Исправление : # Вариант 1: Уменьшить контекстное окно в файле модели # Отредактируйте ~/.ollama/Modelfiles/gemma4-claude # Измените: PARAMETER num_ctx 65536 # На: PARAMETER num_ctx 32768 # Затем пересоберите: ollama create gemma4-claude -f ~/.ollama/Modelfiles/gemma4-claude # Вариант 2: Включить квантование KV-кэша для уменьшения объема используемой памяти export OLLAMA_KV_CACHE_TYPE=q8_0 # Это квантует сам KV-кэш, уменьшая объем памяти за счет небольшого снижения качества # Перезапустите Ollama после установки этого параметра: pkill ollama && ollama serve
  3. Выгрузка модели между сменами агентов
    • Симптом : Заметная задержка холодного запуска в начале каждого сообщения кода Клода. Ollama выгружает модель после истечения таймаута неактивности и загружает её заново для каждого запроса.
    • Исправление : # Сохраняйте модель загруженной неограниченно во время вашей рабочей сессии export OLLAMA_KEEP_ALIVE=-1 # Или установите это значение в вашем профиле оболочки для постоянного эффекта echo 'export OLLAMA_KEEP_ALIVE=-1' >> ~/.zshrc # В качестве альтернативы используйте API Ollama для закрепления модели curl http://localhost:11434/api/generate -d '{«model»: «gemma4-claude», «keep_alive»: -1}' # Это закрепит модель до тех пор, пока вы явно не выгрузите ее или не перезапустите Ollama
  4. Ошибки отклонения заголовка бета-версии
    • Симптом : Код Claude выдает ошибки «Неожиданное значение(я)» для заголовка anthropic-beta при запуске или в середине сессии.
    • Исправление : Убедитесь, что CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: «1» присутствует в вашем файле settings.json. Если вы устанавливаете его через экспорт оболочки вместо settings.json, убедитесь, что он экспортируется в той же сессии оболочки, где запущен Claude: echo $CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS # Необходимо вывести: 1

# Завершение

Описанная в этой статье конфигурация не является экспериментальным образцом. Это рабочая производственная конфигурация, которую инженеры используют ежедневно с тех пор, как Ollama добавила поддержку API антропоморфных сообщений в январе 2026 года. Файл Modelfile не является необязательным; именно он отличает работающий инструмент от инструмента, который незаметно выдает неполные результаты при выполнении задач с несколькими файлами. Скрипт проверки выявляет проблемы с конфигурацией до того, как они проявятся в середине сессии в виде непонятных сбоев агента.

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

Данная конфигурация не заменяет облачный анализ сложных архитектурных решений в больших кодовых базах или задачи класса SWE-bench, требующие глубокого понимания репозитория в масштабе.

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

Источник: www.kdnuggets.com

Оцените материал:

Читайте также
Архив рубрики ~Коротко из Telegram~ 🚨 На конференции AgentCon спикеры призвали разработчиков перестать использовать ИИ… Архив рубрики ~Коротко из Telegram~ Скидываем рутину на ИИ как профи — появился сайт с… Архив рубрики ~Обо всем~ На Лондонской неделе технологий Великобритания представила план развития инфраструктуры искусственного интеллекта – каковы его результаты? Архив рубрики ~Обо всем~ [Перевод] Эксперименты с водородом поставили под сомнение гипотезу о квантовых червоточинах Архив рубрики ~Обо всем~ Модули памяти DDR5 продолжают дорожать, но с нюансом Архив рубрики ~Обо всем~ Компания Commodore выпустила телефон-раскладушку, позволяющий отказаться от социальных сетей. Новости робототехники Репортаж с ICRA 2026 из Вены Архив рубрики ~Обо всем~ Компания SpaceX покупает стартап Cursor, занимающийся разработкой программного обеспечения для искусственного интеллекта, за 60 миллиардов долларов. Новости робототехники Интернет Архив рубрики ~Обо всем~ Китайские материаловеды разработали санскрин для перовскитных солнечных элементов. Больше всего от излучения страдал тонкий транспортный слой Архив рубрики ~Обо всем~ Формула-1 в Испании: Стратегическая борьба в старом стиле по-прежнему может быть захватывающей. Новости робототехники Морские хищники: новейшие российские БЭКи и подводные дроны представили в Кронштадте Архив рубрики ~Обо всем~ Прошивка AMD AGESA 1.3.0.1b прилично снижает напряжение оперативной памяти Новости робототехники Компания Mobileye, поставщик технологий для беспилотных автомобилей, хочет снова стать частью революции роботакси. Архив рубрики ~Коротко из Telegram~ 🚨 На конференции AgentCon спикеры призвали разработчиков перестать использовать ИИ… Архив рубрики ~Коротко из Telegram~ Скидываем рутину на ИИ как профи — появился сайт с… Архив рубрики ~Обо всем~ На Лондонской неделе технологий Великобритания представила план развития инфраструктуры искусственного интеллекта – каковы его результаты? Архив рубрики ~Обо всем~ [Перевод] Эксперименты с водородом поставили под сомнение гипотезу о квантовых червоточинах Архив рубрики ~Обо всем~ Модули памяти DDR5 продолжают дорожать, но с нюансом Архив рубрики ~Обо всем~ Компания Commodore выпустила телефон-раскладушку, позволяющий отказаться от социальных сетей. Новости робототехники Репортаж с ICRA 2026 из Вены Архив рубрики ~Обо всем~ Компания SpaceX покупает стартап Cursor, занимающийся разработкой программного обеспечения для искусственного интеллекта, за 60 миллиардов долларов. Новости робототехники Интернет Архив рубрики ~Обо всем~ Китайские материаловеды разработали санскрин для перовскитных солнечных элементов. Больше всего от излучения страдал тонкий транспортный слой Архив рубрики ~Обо всем~ Формула-1 в Испании: Стратегическая борьба в старом стиле по-прежнему может быть захватывающей. Новости робототехники Морские хищники: новейшие российские БЭКи и подводные дроны представили в Кронштадте Архив рубрики ~Обо всем~ Прошивка AMD AGESA 1.3.0.1b прилично снижает напряжение оперативной памяти Новости робототехники Компания Mobileye, поставщик технологий для беспилотных автомобилей, хочет снова стать частью революции роботакси.

Оставить комментарий