Перейти к содержимому
Темы

AI-разработка: создаём приложения и код

Разрабатывайте эффективнее с ИИ. Генерация кода, создание приложений, отладка и автоматизация.

124 статей

Сортируйте статьи, чтобы найти нужное

Статьи в категории AI-разработка

API Error: The response stopped arriving — что это значит и что делать, когда данные ответа Claude Code останавливаются на полпути

API Error: The response stopped arriving — что это значит и что делать, когда данные ответа Claude Code останавливаются на полпути

Если посреди ответа Claude Code показывает «API Error: The response stopped arriving. The response above may be incomplete.», значит, соединение оставалось открытым, но данные перестали приходить, и сторожевой таймер Claude Code его оборвал. Завершённый вывод сохраняется: проверьте состояние работы и ответьте continue, чтобы продолжить с места остановки. Это сообщение — переименованная версия того, что до v2.1.227 показывалось как «Response stalled mid-stream». По официальному справочнику ошибок и документации по сетевой настройке разбираем, чем оно отличается от Connection lost mid-response, The response stalled before a response was produced и Streaming response ended before any complete data was received, почему запрос не повторяется, как ведут себя -p и субагенты, как проверить версию, сетевой путь и сторожевые таймеры и что сохранить для баг-репорта. Пять отчётов на GitHub, которые мы открыли, рассматриваются отдельно от официального объяснения как неподтверждённые случаи.

Login expired · Please run /login: что это значит и что делать, если Claude Code не может продлить сохранённый вход

Login expired · Please run /login: что это значит и что делать, если Claude Code не может продлить сохранённый вход

Если Claude Code показывает «Login expired · Please run /login», автоматическое продление сохранённого входа было отклонено, и Claude Code удалил учётные данные. Дальнейшие запросы не доходят до API и останавливаются на компьютере, поэтому не повторяйте их, а войдите заново через /login. По официальному справочнику ошибок разбираем отличия от Not logged in, OAuth token has expired и Your account is on hold, как сообщение изменилось в v2.1.206, шаги от проверки в /status до повторного входа, что делать с -p и в CI, а также что проверить при повторах: версию, связку ключей, часы и CLAUDE_CONFIG_DIR. Шесть отчётов с GitHub вынесены отдельно как случаи, причина которых не установлена.

Codex «thread not found»: что делать, если история читается, а отправка не работает

Codex «thread not found»: что делать, если история читается, а отправка не работает

Если в Codex история открывается, но сообщение не отправляется с ошибкой «thread not found», беседа может быть цела. Мы показываем разницу между сохранённой историей и беседой, которая принимает новые инструкции, и пример, где отправка заработала после повторной загрузки. Далее — порядок действий: переоткрыть задачу, перезапустить приложение, отправить короткую проверку, а также передача работы, если проблема остаётся.

Что такое Jev? ИИ TypeSafe, который не генерирует текст, а выносит суждения: применение, цены и ограничения

Что такое Jev? ИИ TypeSafe, который не генерирует текст, а выносит суждения: применение, цены и ограничения

Jev — модель TypeSafe, которая вместо текста возвращает выбранный вариант, оценку по шкале или вероятность «Да/Нет» для задач вроде распределения обращений. Статья объясняет различия Choice, Score и Noul, смысл confidence и устройство API-запроса. Здесь также собраны официально описанные слабости, цены, лимиты входных данных и способы проверки перед использованием на русском языке.

Что такое opusplan в Claude Code? План на Opus, реализация на Sonnet: как настроить и что учесть

Что такое opusplan в Claude Code? План на Opus, реализация на Sonnet: как настроить и что учесть

Хочется, чтобы план составляла умная модель, а реализацию брала на себя модель побыстрее и подешевле. opusplan в Claude Code — это указание модели, которое делает это автоматически. В plan mode работает Opus, всё остальное время — Sonnet; включается он через /model opusplan или через model в settings.json. Но в списке /model его нет, а поскольку модель переключается при каждом входе в plan mode и выходе из него, при каждом переключении весь диалог читается заново без кэша. В статье по официальной документации, журналу изменений и issue на GitHub на 15 сентября 2026 года разобрано, как его настроить (включая закрепление версий и контекст 1M), как проходит работа от plan mode через одобрение к реализации, как в v2.0.0 его убрали из экрана выбора и что об этом сказал сотрудник Anthropic, сколько стоит кэш при переключении и как это сократить, чем он отличается от инструмента advisor и субагентов и для какой работы он подходит, а для какой нет.

Как запускать субагентов Claude Code на другой модели: отдаём работу Sonnet и Haiku — настройка и замеры

Как запускать субагентов Claude Code на другой модели: отдаём работу Sonnet и Haiku — настройка и замеры

Можно ли оставить основную сессию Claude Code на Opus 5 и отдавать субагентам на Sonnet или Haiku только такую работу, как переводы или массовые проверки? Можно. Модель субагента определяется в таком порядке: указание при вызове, model в файле определения, переменная окружения CLAUDE_CODE_SUBAGENT_MODEL и, наконец, модель основной сессии; effort тоже можно задать для каждого субагента отдельно. В статье по официальной документации на 15 сентября 2026 года разобрано, чем этот порядок отличается в разных версиях, как CLAUDE_CODE_SUBAGENT_MODEL_FORCE закрепляет одну модель за всеми субагентами, куда ведут псевдонимы у разных провайдеров и то, что встроенный Explore с v2.1.198 наследует модель основной сессии. Затем — результаты, которые я получил, запустив субагентов на других моделях и проверив логи диалогов: они работали на указанных моделях, каждый только на запуск читал десятки тысяч токенов, кэш субагентов даже по подписке живёт 5 минут, а один и тот же перевод, порученный Opus 5, Sonnet 5 и Haiku 4.5 по два раза, различался по времени, стоимости и качеству. В конце — как это сказывается на стоимости и лимитах и что учитывать, решая, какую работу отдать модели попроще.

Claude Code: расход по сессиям — как узнать, какая сессия съедает ваш тариф

Claude Code: расход по сессиям — как узнать, какая сессия съедает ваш тариф

Когда несколько сессий работают параллельно, хочется понять, какая из них съедает недельный лимит. Однако /usage в Claude Code показывает только цифры текущей сессии и расход по всему тарифу в разбивке по навыкам, субагентам, плагинам и серверам MCP, а долю каждой сессии не видно ни в кольце расхода десктопного приложения, ни на странице настроек claude.ai (по состоянию на сентябрь 2026 года). Ответ лежит в логах диалогов на вашем компьютере (файлы JSONL в ~/.claude/projects), но если сложить их как есть, результат выйдет неверным: один ответ записывается в несколько строк, по одной на каждый блок содержимого, а записи субагентов хранятся в отдельных файлах. По замерам на моём компьютере простая сумма оказалась примерно вдвое больше правильного значения, а поскольку величина ошибки в каждой сессии была своей, поменялся даже порядок мест. В статье разобрано, что официальные экраны показывают и чего не показывают, как правильно подсчитать логи скриптом примерно на 50 строк, результат замеров, в котором одна сессия взяла почти треть всего расхода, пределы того, что могут сказать эти цифры, и как настроить OpenTelemetry, если нужно следить за расходом постоянно.

Claude Code: что на самом деле съедает ваш контекст — как это измерить и что урезать первым

Claude Code: что на самом деле съедает ваш контекст — как это измерить и что урезать первым

Поставите слишком много навыков — они съедят контекст: наполовину это верно, наполовину нет. Согласно документации Claude Code, список навыков расходует фиксированный бюджет в 1% контекстного окна модели, и сколько навыков вы ни добавьте, дальше он не растёт. Вместо того чтобы раздуваться, список начинает убирать описания, начиная с самых редко вызываемых навыков, и оставляет только имена. Навык, потерявший описание, больше не связывается с тем, о чём вы просите, но при этом не появляется ни ошибки, ни замедления. В статье разобраны разные роли трёх инструментов измерения (/context, /usage и /skill-doctor), определение промаха кэша как 5% и 2000 токенов, падение времени жизни кэша с одного часа до пяти минут в зависимости от формы подписки, причина, по которой CLI по-прежнему легче MCP теперь, когда определения инструментов грузятся лениво по умолчанию, обоснование правила держать CLAUDE.md в пределах 200 строк, а также то, что урезать первым после измерения, — и всё это в пределах того, что удалось подтвердить по официальной документации.

The model returned no content — причины и решение: смысл ошибки Claude зависит от того, кто её написал

The model returned no content — причины и решение: смысл ошибки Claude зависит от того, кто её написал

Бывают строки, по которым поиск не находит ничего: работа с Claude встала, вы копируете текст ошибки как есть — и тишина. Пять примеров: The model returned no content because the response was blocked by content filtering, The response was blocked by the provider's content filter, Streaming response ended before any complete data was received, Could not locate the Claude CLI on PATH и Connection to Claude's response was lost. Claude may still be working. Общее у них одно: появилось при работе с Claude, но в материалах Claude этого будто бы нет. Причина простая — строку на экране написала не обязательно та программа, о которой вы думаете. Статья не разбирает каждую причину с нуля, а служит входом: определить, кто написал строку, и направить читателя к нужному разбору. Сначала место, где рождается текст ошибки, делится на четыре слоя: бэкенд поставщика модели, сам Claude Code, запускающая программа вроде расширения IDE или обёртки, сторонний клиент. Сверка показала, что две строки из пяти присутствуют пунктами в официальном справочнике ошибок Claude Code. Официальное определение Streaming response ended… — заголовки вернулись, но в теле нет сообщения Claude API, то есть речь не об обрыве на середине. Could not locate the Claude CLI on PATH официальная документация выносит в отдельную главу Wrapper and IDE errors, то есть печатает эту строку запускающая программа. Обе строки про content filter принадлежат сторонней стороне, и issue #35736 в OpenCode сообщает, что три разных сбоя — 404 Vertex, обрыв сокета и настоящий отказ — показываются одной и той же фразой про блокировку фильтром. Верна она лишь в одном случае из трёх. Официальная документация GitHub тоже прямо пишет, что при работе с Claude вход и выход проходят контентные фильтры GitHub Copilot, так что остановить мог и не фильтр Anthropic. Оставшаяся строка не нашлась ни в официальном справочнике, ни в документации Remote Control, поэтому её источник не назван, а вместо этого даны 4 шага, чтобы установить его самому. Подтверждённое и неподтверждённое разделено метками.

API Error: Connection lost mid-response в Claude Code — ошибка обрыва, переименованная в v2.1.227

API Error: Connection lost mid-response в Claude Code — ошибка обрыва, переименованная в v2.1.227

В Claude Code посреди ответа появляется «API Error: Connection lost mid-response. The response above may be incomplete.», и работа останавливается. Материалов по этой строке находится мало, и причина простая: название сравнительно новое. Официальный справочник ошибок прямо пишет, что до v2.1.227 Connection lost mid-response отображалось как Connection closed mid-response, а вместе с этим Response stalled mid-stream заменили на The response stopped arriving и Connection closed while thinking, before producing a response — на Connection lost before a response was produced. То есть явление прежнее, поменялись только слова. Статья отталкивается от переименования и опирается только на официальную документацию и публичные issue. Сначала разобраны официальные определения шести сообщений об обрыве (Server error, Connection lost, computer went to sleep, The response stopped arriving, Part of the response never arrived, The response stream was malformed) и причина, по которой уже выведенный текст сохраняется намеренно: повторная отправка грозит выполнить тот же вызов инструмента дважды, а процедура восстановления сводится к ответу continue. Дальше объясняется, почему повтор не идёт автоматически, через развилку Automatic retries: обрыв до того, как что-либо завершено, повторяется с экспоненциальной задержкой до десяти раз; после размышления, но до вывода — не более двух раз, после чего ход закрывается сообщением Connection lost before a response was produced; а после завершённого блока повтора нет, есть только пометка. Затем идут три слоя, на которых может рваться связь (машина и канал, маршрут с прокси и шлюзами, сторона сервиса и переиспользование соединений), перечитывание материала mTLS при ротации сертификатов начиная с v2.1.232, чек-лист из девяти шагов, умолчания четырёх сторожевых таймеров потока (first-byte 180 секунд, event 300 секунд, byte 180 секунд, body idle 5 минут) и переменные CLAUDE_CODE_MAX_RETRIES, CLAUDE_CODE_RETRY_WATCHDOG, API_TIMEOUT_MS, таблица отличий от восьми похожих сообщений и реальные отчёты, где обычный HTTPS исправен, а по ECONNRESET падает только CLI (#86473 и #85979). В конце всё разделено по достоверности: симптом и процедура восстановления задокументированы официально, официального объяснения причины нет, а упоминания о смене формулировки в CHANGELOG не найдено.

Три ломающих изменения в Claude Fable 5.1 и как мигрировать

Три ломающих изменения в Claude Fable 5.1 и как мигрировать

Миграция на Claude Fable 5.1 не сводится к замене идентификатора модели и отметке о выполнении. Anthropic называет три изменения ломающими, и два из них проявляются далеко от того места, где возникают. Первое падает сразу: передача type any или type tool в tool_choice возвращает 400 invalid_request_error, потому что принудительный вызов пропускает рассуждение, которое эта модель ведёт постоянно, и качество аргументов падает вместе с ним. Второе — тихое. Блоки размышления теперь хранят отметку о породившей их модели и переносятся только в одну сторону, поэтому разговор, переходящий на Fable 5.1, сохраняет рассуждения, а маршрутизатор или откат, возвращающий его на прошлое поколение, теряет этот ход целиком. По умолчанию API отбрасывает нечитаемые блоки ещё до того, как модель их увидит, а поскольку отброшенные токены не попадают ни в input_tokens, ни в счёт, в биллинге не видно ничего. Чтобы это стало заметно, нужен бета-заголовок thinking-binding-controls-2026-08-01. Третье изменение самое широкое: правка чего угодно перед блоком размышления Fable 5.1, включая промпт system, массив tools и любое более раннее сообщение, обнуляет его и все блоки после него. Применяется ли проверка принудительно, зависит от даты создания аккаунта, поэтому свежесозданный тестовый контур может падать там, где продакшен работает. В статье разобрано и то, что не стало хуже: вход остаётся по $10, выход по $50 за миллион токенов, а чтение кэша падает до $0.25, то есть 0.025x базового входа против 0.1x у всех остальных моделей Claude. Anthropic называет экономию примерно 25% на типичных нагрузках и до 45% на задачах с выраженной агентной частью. Семь особенностей поведения меняются без единой правки кода, включая сокращение параллельных вызовов инструментов, меньше рассказа о ходе работы на высоком effort и ответы по памяти на низком, а среди пяти добавлений одно — то самое удешевление чтения кэша, вынесенное в отдельную пятую главу, тогда как среди остальных четырёх есть бета-функции, существующие именно для того, чтобы заменить приёмы, которые ломающие изменения запрещают.

Программирование на локальной LLM: до чего реально доходят Ollama плюс Cline и Continue

Программирование на локальной LLM: до чего реально доходят Ollama плюс Cline и Continue

Заставить модель на собственном ПК писать код можно было и раньше, но возможным было именно автодополнение, то есть дописать продолжение начатой строки. Агентный сценарий, когда модель читает репозиторий, правит несколько файлов и запускает тесты, для локального железа был слишком тяжёлым. С конца 2025 года это сдвинулось. В официальной карточке модели Qwen прямо названы Qwen Code и CLINE, а Mistral AI 9 декабря 2025 года представила Devstral 2 и выпустила младшую Devstral Small 2 (24B) под Apache 2.0. Статья опирается только на первоисточники и разбирает, до чего реально можно дойти сегодня и где вы застрянете. Главный барьер это длина контекста Ollama по умолчанию: она не фиксирована, а выбирается по объёму VRAM, менее 24 GiB даёт 4k, от 24 до 48 GiB даёт 32k, 48 GiB и выше даёт 256k. Обычный игровой ПК попадает в первую строку, агент легко перешагивает 4k из-за системного промпта, содержимого файлов и обмена вызовами инструментов, и начало диалога тихо срезается. Ошибки при этом нет, поэтому кажется, что модель глупая, хотя контекст выбрасывается прямо на входе. Официальная документация Ollama требует не менее 64000 токенов для инструментов программирования и советует после увеличения проверять командой ollama ps, целиком ли модель на GPU. Модели сравниваются только по публикациям разработчиков: Qwen3.6-35B-A3B (активных 3B, контекст 262 144, Apache 2.0, SWE-bench Verified 73.4) и Devstral Small 2 (24B, 256K, Apache 2.0, 68.0%). Разобраны разница между Continue с отдельной моделью на каждую роль и автономным агентом Cline, а также причина, по которой сравнение вида «сколько процентов от облака» больше не держится: в объявлении Anthropic о Claude Opus 5 значения SWE-bench Verified нет вовсе, фронтирная сторона отходит от этой метрики.