Локальный ИИ-агент: о чём вообще речь?
Коротко: локальный ИИ-агент - это агент, запущенный у тебя на компьютере и работающий с твоими файлами. Слово «локальный» в русском IT занято другими смыслами: по запросу «локальный агент» без слова «ИИ» выдача уходит к служебной программе антивируса, а в Битриксе агентом называют фоновую задачу по расписанию. Здесь речь только про ИИ. Ниже развожу два смысла, которые путают чаще всего.
Слово «агент» в русском IT перегружено. Прежде чем разбирать устройство, уберу с дороги три чужих значения, которые забирают часть выдачи:
- Агент администрирования - служебная программа антивируса, которая ходит на сервер управления.
- Агент в Битриксе - функция, которую система запускает по расписанию.
- Mail.ru Агент - мессенджер.
Ни к чему из этого статья отношения не имеет.
Дальше под словами «локальный ИИ-агент» я имею в виду ровно одно: программу, которая получила доступ к твоим файлам и терминалу, умеет сама читать, править и запускать, и делает это на твоей машине. Что такое агент вообще и чем он отличается от чата - разобрано в словаре: что такое ИИ-агент.
Ищут это по-разному: «локальный ии агент», «ии агент локально», «нейросеть на своём компьютере». Запросы разные, а путаница у всех одна и та же.
Локальный ИИ-агент и локальная модель - это разные вещи?
Коротко: разные, и это главная развилка темы. Локальная модель - одна деталь конструкции, локальный ИИ-агент - вся конструкция целиком. В связке «агент плюс модель» локальными могут быть обе части, одна или ни одной: программа выполняется у тебя, а думать может на чужом сервере. Разбираю обе оси по очереди.
В словаре агент разобран формулой: модель плюс инструменты плюс цикл. Модель думает, инструменты дают ей руки, цикл заставляет проверить результат и зайти на второй круг. Убери любой из трёх элементов - получится чат.
Скачанная модель сама по себе не делает ничего. Она отвечает текстом на текст. Человек ставит Ollama, разговаривает с моделью в окне - у него появилась локальная модель, но агента ещё нет. Агентом её делает обвязка: инструменты, которыми она читает файлы и запускает команды, и цикл вокруг них.
Отсюда две независимые оси. Первая: где выполняется программа и где лежат твои файлы. Вторая: где считается модель.
| Модель в облаке | Модель на твоём железе | |
|---|---|---|
| Агент выполняется у тебя | Claude Code и Codex в терминале: файлы твои, мышление чужое | движок вроде Ollama или LM Studio плюс агент поверх него |
| Агент выполняется в облаке | облачный режим агента: и выполнение, и файлы на стороне поставщика | облачный режим движка: модель открытая, железо чужое |
Документация Claude Code описывает верхний левый угол одной фразой, и в ней сразу обе половины:
Claude Code runs locally. To interact with the LLM, Claude Code sends data over the network. This data includes all user prompts and model outputs, encrypted in transit via TLS 1.2+.
«Claude Code работает локально. Чтобы обратиться к языковой модели, Claude Code отправляет данные по сети. Эти данные включают все пользовательские запросы и ответы модели, зашифрованные при передаче по TLS 1.2+.»
- Anthropic, Data usage, документация Claude Code
Codex CLI говорит о себе так же коротко: «Codex CLI is a coding agent from OpenAI that runs locally on your computer» - агент, который работает локально на твоём компьютере (README репозитория openai/codex).
Правильный вопрос звучит иначе, чем «локальный ли он». Спрашивать надо: что именно локально - программа, модель или обе сразу.
Что уходит наружу, пока модель в облаке?
Коротко: уходит содержимое того, что агент положил в контекст. Документация Anthropic называет это прямо: по сети отправляются все запросы пользователя и ответы модели. Значит, куски прочитанных файлов тоже. Телеметрия устроена иначе и кода не содержит - разница важная, разбираю обе части по отдельности.
Это главный страх, из-за которого вообще начинают искать локальный ИИ-агент. Разбираю механику по частям.
Что уходит. Всё, что попало в контекст запроса: сам запрос, куски прочитанных файлов, ответы модели. Это цена облачной модели, по-другому она не работает: думать нечем, пока текст не отправлен на сервер.
Что не уходит. Метрики использования. В документации сказано отдельно, что метрики никогда не содержат кода, запросов и путей к файлам, а отчёты об ошибках проходят вычистку известных шаблонов секретов и персональных данных до отправки с машины. Телеметрия отключается переменной DISABLE_TELEMETRY=1, отчёты об ошибках - DISABLE_ERROR_REPORTING=1.
Сколько хранится. Для потребительских тарифов, где пользователь сам разрешил обучение на своих данных, срок - пять лет. Без такого разрешения и на коммерческих условиях - тридцать дней. Режим нулевого хранения существует отдельно и, как сказано в документации, в стандартный корпоративный тариф не входит.
Где ты отдаёшь код сам. Команда обратной связи отправляет копию переписки вместе с кодом, а согласие на разбор качества сессии выгружает транскрипт и файлы как есть. Без явного «да» не уходит ничего, но нажать это «да» легко, не подумав.
Мелочь, которая ломает иллюзию офлайна. Перед загрузкой страницы инструмент веб-доступа отправляет имя хоста на проверку по списку небезопасных адресов. Уходит только имя хоста, без пути и содержимого страницы, но сам запрос в сеть идёт.
Где проходит граница платного у того же Claude Code - разобрано отдельно: что в нём бесплатно.
Что на самом деле даёт локальная модель?
Коротко: она убирает ровно одну вещь - передачу твоих текстов поставщику модели. Всё остальное проверяется руками: офлайн сам собой не наступает, потому что у движков есть облачные режимы, а часть инструментов агента ходит в сеть по своей работе. «Локально» и «без интернета» - близкие, но не равные слова.
Локальная модель отвечает на вопрос «кто видит мой текст». Ответ: никто, кроме твоей машины, пока ты сам не включил облачный режим.
Дальше идут три оговорки, и их стоит знать заранее.
Первая: движок бывает облачным. В документации Ollama на главной странице написано Run models locally or use larger models in Ollama's cloud - запускай модели локально или бери более крупные в облаке Ollama. Под облачные модели там отведён отдельный раздел.
У LM Studio облачные сервисы тоже описаны на главной, с оговоркой про нулевое хранение данных: «Privacy is key to the LM Studio ethos. Our cloud services are Zero Data Retention (ZDR) across the board» - приватность лежит в основе подхода LM Studio, а облачные сервисы компании работают с нулевым хранением данных. Отдельно стоит заметить, к чему относится знаменитая формулировка «никогда не покидает твоё устройство»: на той странице она сказана про голос и аудио, то есть охватывает часть трафика, но не продукт целиком.
Вторая: локальный ИИ-агент ходит в сеть не только за моделью. Поиск по интернету, подключённые внешние сервисы, установка пакетов - всё это сетевые действия, и локальная модель их не отменяет.
Третья: приватность снаружи не равна приватности внутри машины. Транскрипты сессий Claude Code лежат у тебя же на диске открытым текстом в папке ~/.claude/projects/ и по умолчанию хранятся тридцать дней. Человек, который боится облака, обычно про это не думает.
Что локальная модель правда снимает - так это лимиты окна и зависимость от чужого тарифа. Упираешься ты теперь в своё железо.
Можно ли направить Claude Code на локальную модель?
Коротко: да, и это перестало быть самоделкой. Ollama начиная с версии v0.14.0 совместима с Anthropic Messages API, поэтому Claude Code переключается на открытую модель двумя переменными окружения. У Codex CLI для того же есть флаги
--ossи--local-provider. Обе связки я описываю по страницам проектов и по справке самого Codex.
Это та самая точка, где обе оси сходятся на твоей машине: программа остаётся привычной, а думает она теперь на твоём железе. Здесь и получается локальный ИИ-агент, у которого локальны обе половины.
Claude Code плюс Ollama. В блоге Ollama от 16 января 2026 года сказано дословно: «Ollama v0.14.0 and later are now compatible with the Anthropic Messages API, making it possible to use tools like Claude Code with open-source models». По-русски: версии начиная с v0.14.0 совместимы с Anthropic Messages API, и это позволяет работать инструментами вроде Claude Code на открытых моделях. Документация Ollama подтверждает саму совместимость на отдельной странице, но номера версии там нет.
Включается перенаправление двумя переменными окружения, которые задают адрес и токен:
ANTHROPIC_AUTH_TOKEN=ollama ANTHROPIC_BASE_URL=http://localhost:11434 claude --model qwen3-coder
Токен здесь фиктивный: в документации на его месте стоит слово ollama, настоящий ключ локальному движку не нужен. На той же странице указан короткий путь - команда ollama launch claude.
Важная оговорка, которую стоит прочитать до эксперимента. Совместимость неполная: документация Ollama перечисляет то, что пока не поддерживается, и в списке есть подсчёт токенов /v1/messages/count_tokens, принудительный выбор инструмента tool_choice, кеширование промптов и пакетный режим. Кеширование промптов - как раз то, на чём в облаке экономится время и деньги при длинных сессиях.
Codex CLI. У него переключение сделано флагами. В справке --oss описан как «Use open-source provider» - использовать открытого поставщика, а соседний --local-provider как «Specify which local provider to use (lmstudio or ollama)» - указать, какого локального поставщика брать, LM Studio или Ollama. Без явного указания Codex берёт значение из конфига или показывает экран выбора. Для Ollama моделью по умолчанию задана gpt-oss:20b.
Здесь важно не приписать источнику лишнего. Формулировки флагов я снял со строк справки в исходниках Codex; страницу документации для этого не открывал. README репозитория сейчас отсылает на сайт, и в самом README этих строк нет. В русских гайдах эти флаги нередко описывают как запуск через Ollama; по коду поддерживаются два поставщика, и жёсткой привязки к Ollama в нём нет.
Сравнение двух агентов целиком - в отдельном разборе: Codex или Claude Code.
Какое железо нужно локальному ИИ-агенту?
Коротко: память нужна под модель, а локальный ИИ-агент рядом с ней почти ничего не весит. Единственная цифра, подтверждённая первоисточником: карточка открытой модели gpt-oss-20b заявляет работу в пределах 16 ГБ памяти. Это уровень обычного ноутбука. Остальные цифры, которые ходят по сети таблицами, - оценки сообщества, и ниже они помечены именно так.
Карточка модели openai/gpt-oss-20b на Hugging Face описывает себя несколькими проверяемыми фразами: модель рассчитана на работу «within 16GB of memory», у неё «21B parameters with 3.6B active parameters», веса MoE-слоёв выложены в квантовании MXFP4, лицензия Apache 2.0.
Расшифрую: из этих трёх фраз складывается ответ на вопрос «потянет ли мой компьютер».
Двадцать один миллиард параметров - размер модели. Активны из них 3,6 миллиарда: на каждом шаге считается не вся модель целиком, поэтому такая конструкция дешевле по вычислениям, чем звучит по размеру. Квантование - это сжатие весов: модель ужимают, чтобы она влезла в память, и платят за это точностью.
Дальше - таблица ориентиров. Подчёркиваю: это оценки сообщества из сторонних блогов, а не официальные требования разработчиков. Официальных таблиц «столько памяти под такую-то модель» у Ollama и LM Studio на их страницах я не нашёл.
| Что хочешь запустить | Сколько памяти называют | Статус цифры |
|---|---|---|
| небольшую модель для проб | от 8 ГБ оперативной памяти | оценка сообщества |
| модель на 7-8 миллиардов параметров в сжатии | 6-8 ГБ | оценка сообщества |
| модель уровня gpt-oss-20b | 16 ГБ | заявлено карточкой модели |
| модель на 70 миллиардов параметров и выше | от 48 ГБ видеопамяти | оценка сообщества |
Обрыв скорости случается в другой момент - когда модель не поместилась в видеопамять целиком. Тогда часть слоёв уезжает в обычную оперативную память, и скорость падает в разы. Показательный случай из обсуждения на Hacker News: пользователь petya415 описывает модель на 51 ГБ, которая не поместилась в 32 ГБ видеопамяти топовой потребительской карты и считалась в режиме «53% процессор, 47% видеокарта».
Сколько памяти у тебя - смотри в свойствах системы. Модели и сборки обновляются часто, поэтому таблица выше годится как порядок величин и быстро стареет как справочник.
Почему локальный ИИ-агент отказывается вызывать инструменты?
Коротко: потому что вызов инструментов - отдельный навык модели, и ломается он независимо от её размера и от твоего железа. Причин три: сломанный шаблон в файле модели, потеря навыка после сжатия и провал на многошаговых цепочках. Это самая частая причина, по которой локальный ИИ-агент не справляется с задачей.
Сама способность - не выдумка. Карточка gpt-oss-20b заявляет «native capabilities for function calling, web browsing, Python code execution, and Structured Outputs» - встроенные возможности вызова функций, работы с веб-страницами, выполнения кода на Python и структурированного вывода.
А ломается это тремя способами.
- Сломанный шаблон. Модель общается с программой по шаблону, который лежит в файле сборки. Практик с Hacker News под ником markussss пишет: «some models have borked templates bundled with the model file, some models are not trained on tool calling». То есть у части моделей шаблоны в файле собраны криво, а часть вообще не обучали вызову инструментов. Новичок в этот момент думает, что дело в нём.
- Сжатие забрало навык. Тот же автор: «some quantizations ruin the models’ abilities to call tools» - некоторые варианты сжатия ломают у моделей способность вызывать инструменты. Развилка неприятная: сжатие нужно, чтобы модель влезла в память, и оно же лишает её ровно того навыка, ради которого ты её ставил.
- Многошаговость. Пользователь dnaranjo формулирует так: «most local models below 70B struggle with multi-turn tool use even when their raw code generation is decent». Перевод: большинство локальных моделей меньше 70 миллиардов параметров плохо справляются с многошаговым использованием инструментов, даже когда сам код они пишут прилично. Цепочка «прочитай файл, поправь, запусти, почини» разваливается обычно на третьем шаге.
Отдельная засада при подключении локальной модели к готовому агенту - совместимость интерфейсов. Разработчик под ником DouweM описывает её как «having to deal with supposedly OpenAI Chat Completions-compatible APIs that aren’t really» - приходится иметь дело с якобы совместимыми интерфейсами, которые на деле совместимы не полностью. Список того, что Ollama пока не поддерживает в совместимости с Anthropic Messages API, - ровно про это.
Почему на локальной модели один шаг занимает минуты?
Коротко: потому что за одну правку локальный ИИ-агент обращается к модели десятки раз подряд. В чате ты ждёшь один ответ и считаешь скорость приемлемой. Агент на той же скорости читает файл, думает, правит, запускает, читает вывод - и время умножается на число шагов. Замеры «токенов в секунду» из обзоров меряют совсем не то, что ты почувствуешь.
Все обзоры локальных моделей меряют одно и то же: сколько токенов в секунду выдаёт модель на один ответ. Токен - это примерно слово или его кусок, так что «токенов в секунду» дальше читается как «слов в секунду». Для чата эта метрика осмысленна.
Для агента она почти бесполезна. Одна правка в проекте - цепочка из нескольких обращений к модели, и в каждом заново передаётся контекст: прочитанные файлы, прошлые шаги, вывод команд. Локальный ИИ-агент платит этой цепочкой за каждое действие. Контекст растёт от шага к шагу, и каждый следующий шаг считается дольше предыдущего.
Тот же пользователь petya415 приводит свой замер: «Generation throughput is a dead-flat 12 tok/s regardless of task complexity. The CPU is the bottleneck» - скорость генерации держится ровно на 12 токенах в секунду независимо от сложности задачи, и упирается всё в процессор.
Двенадцать токенов в секунду в чате терпимы. Те же двенадцать в агентном цикле из двадцати шагов превращаются в ожидание, за время которого ты успеешь забыть, что просил.
Здесь обозначу границу. На машине, где я это писал, стоит Claude Code версии 2.1.211, а локальную модель под агентную нагрузку я в этом прогоне не запускал. Поэтому своих цифр здесь нет. Чужие привожу с именем автора и ссылкой.
Чем локальный ИИ-агент опаснее облачного?
Коротко: тем, что риск смещается с данных на машину. Локальный ИИ-агент убирает утечку текста наружу, но терминал и папка с проектом нужны ему по-прежнему. Опасность создаёт набор разрешений, который ты выдал программе, - поставщик модели тут ни при чём. Ниже вопросы, которые стоит задать любой сборке до первого запуска.
Парадокс темы звучит так: локальный ИИ-агент приватнее для данных и рискованнее для компьютера. Первое очевидно всем, кто пришёл за приватностью. Второе обычно в голову не приходит.
Агент получает право читать файлы, писать в них и выполнять команды. Ошибка модели перестаёт быть ошибкой в тексте: теперь это выполненная команда.
Полезно посмотреть, как вопрос решён у зрелых облачных агентов, и задать те же вопросы своей локальной сборке.
Документация Claude Code описывает несколько рубежей. В ручном режиме программа стартует с правами только на чтение и спрашивает разрешение перед правкой файлов и выполнением команд. Писать она может в папку, из которой запущена, и в её подпапки; на родительские каталоги нужно отдельное разрешение. Есть и режим песочницы для команд оболочки с изоляцией файловой системы и сети.
Там же сформулирована граница ответственности:
Claude Code only has the permissions you grant it. You’re responsible for reviewing proposed code and commands for safety before approval.
«У Claude Code есть только те разрешения, которые ты ему дал. Ты отвечаешь за то, чтобы проверить предложенный код и команды на безопасность до одобрения.»
- Anthropic, Security, документация Claude Code
В той же документации есть отрезвляющая оговорка: защита снижает риск, но полностью неуязвимых систем не бывает.
Три вопроса своей сборке до первого запуска: из какой папки агент стартует и куда ему разрешено писать, спрашивает ли он перед выполнением команды, и что произойдёт, если в прочитанном файле окажется текст, похожий на инструкцию для агента.
Когда локальный ИИ-агент оправдан, а когда нет?
Коротко: он оправдан там, где содержимое файлов важнее скорости и качества. Это работа под соглашением о неразглашении, чувствительные данные, требование держать всё внутри своего контура. Там, где важнее результат за вечер, облачная модель выигрывает по всем осям, кроме приватности. Типовые ситуации свёл в таблицу.
| Ситуация | Что разумнее | Почему |
|---|---|---|
| нельзя выносить содержимое файлов наружу | агент на локальной модели | единственный вариант, где текст не уходит поставщику |
| дорого или нечем платить за подписку | сначала пересчитать | железо под нормальную модель стоит денег, и эту сумму стоит сравнить с годом подписки |
| нестабильный доступ к сервисам | локальная модель как запасной вариант | работает, пока работает твой компьютер |
| нужен результат сегодня вечером | облачная модель | локальная сборка - отдельный проект на выходные |
| задача сложная, много шагов | облачная модель | многошаговые цепочки у небольших моделей разваливаются |
| хочется разобраться, как устроено | локальная модель | лучший учебный стенд, который собирается дома |
Одиннадцать замен Claude Code я разбирал отдельно - чем заменить Claude Code. Там видно, какие из них берут любой ключ, включая локальную модель, и какие приколочены к своему поставщику.
И сразу закрою частый вопрос: «локального Claude» не существует. Открытых весов моделей Anthropic в публичном доступе нет, поэтому скачать саму модель и запустить её у себя не получится. Локальным бывает клиент - сама программа Claude Code, которая работает с твоими файлами у тебя на машине.
Что видишь и что это значит
Коротко: локальный ИИ-агент застревает в нескольких типовых местах, и каждое читается однозначно, если знать, куда смотреть. Ниже - симптом и то, что за ним стоит на самом деле. Половина случаев - нехватка памяти или неполная совместимость интерфейсов, сам агент тут ни при чём.
| Что видишь | Что это значит |
|---|---|
| модель отвечает текстом вместо того, чтобы прочитать файл | вызов инструментов не работает: шаблон модели или её сжатие |
| первые шаги идут бодро, потом всё встаёт | кончилось окно контекста или модель вышла за пределы видеопамяти |
| скорость упала в разы без видимой причины | часть слоёв модели ушла в обычную память, считает процессор |
| агент сообщает, что выполнил команду, но ничего не изменилось | вместо настоящего вызова инструмента модель выдала его имитацию |
| сборка требует ключ, хотя модель локальная | программа обращается к облачному режиму движка |
| интерфейс заявлен совместимым, а агент падает | совместимость частичная, часть функций не поддержана |
С чего начать, если решил попробовать?
Коротко: начинать стоит с двух проверок - сколько у тебя памяти и работает ли на ней вызов инструментов. Сначала цифра памяти, потом выбор модели под неё. Порядок ниже занимает вечер и показывает, стоит ли собирать локальный ИИ-агент дальше, до того как ты потратишь на это выходные.
Это разбор, поэтому ниже порядок проверки, а команды под конкретный движок смотри в его документации.
- Посмотри, сколько памяти реально свободно. Считается та память, что остаётся под модель, когда открыты браузер и рабочие программы. Эта цифра и есть твой потолок.
- Подбирай модель под эту цифру. Ориентир из проверенного: открытая gpt-oss-20b заявлена как работающая в 16 ГБ памяти. Модель, которая не влезла, быстрее от терпения не станет.
- Проверь вызов инструментов на мелкой задаче. Попроси агента прочитать один файл и сказать, что в нём. Если вместо чтения он пересказывает общие знания, дальше идти незачем: чини шаблон или бери другую модель.
- Сравни с облачным на одной и той же задаче. Одна задача, два прогона, свой секундомер. Это единственный замер про твоё железо: все остальные сняты на чужом.
Если ты вообще ещё не запускал ни одного агента, начинать с локальной модели не стоит: слишком много незнакомых деталей сразу. Более пологий вход - с чего начать вайб-кодинг.
Что дальше
Коротко: если после разбора ты понял, что своя модель тебе не нужна, это нормальный результат - большинству подходит локальный ИИ-агент на облачной модели. Ссылки ниже ведут к соседним разборам: чем заменить инструмент, где граница платного, как устроены лимиты и что такое скиллы, которые от поставщика модели не зависят.
- Чем заменить Claude Code - одиннадцать замен и то, какие из них берут локальную модель.
- Claude Code бесплатно - где именно проходит граница платного.
- Что такое ИИ-агент - формула «модель плюс инструменты плюс цикл».
- Что такое скилл - инструкции агенту обычными файлами, от модели они не зависят.
Что до самой обвязки - правил, скиллов, схемы памяти, - она переживает любую смену модели: это текстовые файлы, и к настройкам конкретного поставщика они не привязаны. Собранный комплект лежит в базе знаний ClaudeBase, ставится в проект по инструкции и работает одинаково на облачной модели и на своей.
Источники
- Data usage, документация Claude Code - формулировка «runs locally», состав передаваемых данных, сроки хранения, переменные телеметрии, проверка имени хоста.
- Security, документация Claude Code - режим ручных разрешений, граница рабочей папки, песочница, оговорка про неполную защиту.
- README репозитория openai/codex - самоописание Codex CLI как агента, работающего локально.
- Claude Code with Anthropic API compatibility, блог Ollama - совместимость с Anthropic Messages API начиная с версии v0.14.0, дата поста 16 января 2026 года.
- Anthropic compatibility, документация Ollama - переменные окружения для перенаправления, команда
ollama launch claude, список неподдерживаемых возможностей. - Документация Ollama - «Run models locally or use larger models in Ollama’s cloud» и раздел про облачные модели.
- Главная страница LM Studio - облачные сервисы с нулевым хранением данных, оговорка про голос и аудио.
- Карточка модели gpt-oss-20b, Hugging Face - 16 ГБ памяти, 21 млрд параметров при 3,6 млрд активных, квантование MXFP4, лицензия Apache 2.0, встроенный вызов функций.
- Флаги командной строки Codex CLI, исходники репозитория - строки справки для
--ossи--local-provider. - Комментарий markussss, Hacker News - сломанные шаблоны в файлах моделей и потеря навыка вызова инструментов после сжатия.
- Комментарий dnaranjo, Hacker News - провал многошаговых цепочек у моделей меньше 70B.
- Комментарий petya415, Hacker News - модель на 51 ГБ против 32 ГБ видеопамяти и замер 12 токенов в секунду.
- Комментарий DouweM, Hacker News - частичная совместимость интерфейсов, заявленных как совместимые.