Ошибки импорта claude-code-sdk после переименования в июне 2026: причина и фикс
ModuleNotFoundError: claude_code_sdk или нет экспорта из @anthropic-ai/claude-code? SDK переехал в claude-agent-sdk. Фикс «до/после» для TS и Python.
Если вы только что обновились и сборка упала с ModuleNotFoundError: No module named 'claude_code_sdk' или с ошибкой TypeScript, что @anthropic-ai/claude-code не имеет экспортируемого члена query, вы всё делаете правильно. Пакет переехал.
Сбивает с толку вот что:
npm install @anthropic-ai/claude-codeпо-прежнему проходит. Просто теперь он ставит другую вещь. Имя, которое вы помните, указывает на CLI-инструмент; SDK собрал вещи и ушёл.
В июне 2026 Anthropic переименовала Claude Code SDK в Claude Agent SDK. TypeScript-пакет стал @anthropic-ai/claude-agent-sdk, а Python-пакет — claude-agent-sdk. Старые имена не отдали честный 404 разом, и именно поэтому ошибки сбивают с толку. Это точечный фикс, а не переписывание. Вот что сломалось, почему и точные «до/после» для обоих языков.
Фикс за 30 секунд: было → стало
Переименование затрагивает имя пакета, путь импорта и (в Python) одно имя класса. Сопоставьте старую строку с новой — и почти весь ваш код продолжит работать.
| Что | Было | Стало |
|---|---|---|
| Пакет TS/JS | @anthropic-ai/claude-code | @anthropic-ai/claude-agent-sdk |
| Импорт TS/JS | import { query, tool } from "@anthropic-ai/claude-code" | import { query, tool } from "@anthropic-ai/claude-agent-sdk" |
| Пакет Python | claude-code-sdk | claude-agent-sdk |
| Модуль импорта Python | claude_code_sdk | claude_agent_sdk |
| Класс опций Python | ClaudeCodeOptions | ClaudeAgentOptions |
| Системный промпт по умолчанию | Пресет Claude Code включён по умолчанию | Выключен; включается через пресет |
Актуальные версии на момент написания: @anthropic-ai/claude-agent-sdk на 0.3.x, claude-agent-sdk на PyPI на 0.2.x. Замороженные старые пакеты застыли на claude-code-sdk 0.0.25 (Python), а @anthropic-ai/claude-code теперь это CLI на 2.1.x. Если хотите разобраться глубже, остальная часть статьи разбирает каждую строку ошибки.
Почему ваш импорт сломался (коллизия имён CLI против SDK)
Коротко: SDK выехал из @anthropic-ai/claude-code, но это имя пакета осталось жить как CLI-инструмент, так что установка проходит, а импорт падает. Это несоответствие — главный источник путаницы во всей миграции, поэтому стоит точно разобраться, кому теперь принадлежит какое имя.
До июня 2026 @anthropic-ai/claude-code поставлял две вещи: бинарник CLI claude и программный SDK (query, tool, createSdkMcpServer). После переименования эти две роли разъехались:
| Пакет | Чем он стал | Текущая мажорная версия |
|---|---|---|
@anthropic-ai/claude-code | CLI-инструмент Claude Code | 2.1.x |
@anthropic-ai/claude-agent-sdk | программный SDK | 0.3.x |
claude-code-sdk (PyPI) | заморожен, последний релиз | 0.0.25 |
claude-agent-sdk (PyPI) | активный SDK | 0.2.x |
Так что npm install @anthropic-ai/claude-code не падает. Он ставит CLI. А потом ваш import { query } from "@anthropic-ai/claude-code" падает, потому что этот пакет больше не экспортирует символы SDK. Сообщение об ошибке указывает на импорт, но настоящая проблема — в том, какой пакет вы поставили.
Само переименование отражает охват. SDK начинался как помощник для кода и вырос в общий фреймворк для построения агентов (саппорт-боты, ревью-агенты, финансовые ассистенты), так что «Agent SDK» описывает его точнее, чем «Code SDK». Если вы только начинаете строить агентов вокруг него, наш гайд по разработке AI-агентов на Python разбирает цикл и паттерны подключения инструментов, которые ложатся поверх этого SDK.
Таблица «сообщение об ошибке → фикс»
Каждая строка ошибки ниже сводится к одной корневой причине: вы указываете на старое имя. Найдите своё точное сообщение, примените фикс.
| Что вы видите | Язык | Корневая причина | Фикс |
|---|---|---|---|
ModuleNotFoundError: No module named 'claude_code_sdk' | Python | Импорт старого имени модуля | pip install claude-agent-sdk, импортируйте claude_agent_sdk |
ImportError: cannot import name 'ClaudeCodeOptions' | Python | Класс переименован | Используйте ClaudeAgentOptions из claude_agent_sdk |
Module '"@anthropic-ai/claude-code"' has no exported member 'query' | TS | Установлен пакет CLI, а не SDK | Установите @anthropic-ai/claude-agent-sdk, обновите импорт |
Cannot find module '@anthropic-ai/claude-agent-sdk' | TS | Новый пакет ещё не установлен | npm install @anthropic-ai/claude-agent-sdk |
ModuleNotFoundError: No module named 'claude_agent_sdk' | Python | Установлен, но не тот Python или venv | Используйте Python 3.10+, ставьте в активный venv |
| Агент игнорирует поведение Claude Code после апгрейда | Оба | Системный промпт по умолчанию убран в v0.1.0 | Включите пресет claude_code (см. ниже) |
Фикс для TypeScript / JavaScript
Удалите старый пакет, поставьте новый и перепишите строку импорта. Имена символов (query, tool, createSdkMcpServer) не изменились, так что в большинстве файлов импорт — единственная правка.
npm uninstall @anthropic-ai/claude-code
npm install @anthropic-ai/claude-agent-sdk
Затем обновите каждый импорт:
// Before
import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-code";
// After
import { query, tool, createSdkMcpServer } from "@anthropic-ai/claude-agent-sdk";
Если вы закрепили зависимость в package.json, обновите и ключ. Оставленная старая запись — это как раз способ получить оба пакета установленными и сбитый с толку редактор, который резолвит query из неправильного:
{
"dependencies": {
"@anthropic-ai/claude-agent-sdk": "^0.3.0"
}
}
Один нюанс, ради которого стоит сделать grep: если вы также используете CLI в скриптах (команда claude), оставьте @anthropic-ai/claude-code установленным для этого, но никогда не импортируйте из него символы SDK. Держите CLI и SDK как две отдельные зависимости с двумя отдельными задачами.
Фикс для Python
Удалите claude-code-sdk, поставьте claude-agent-sdk, затем поменяйте модуль импорта и имя класса опций. Аргументы конструктора идентичны, так что model, permission_mode и компания переносятся без изменений.
pip uninstall claude-code-sdk
pip install claude-agent-sdk
Перепишите импорт и класс:
# Before
from claude_code_sdk import query, ClaudeCodeOptions
options = ClaudeCodeOptions(model="claude-opus-4-7", permission_mode="acceptEdits")
# After
from claude_agent_sdk import query, ClaudeAgentOptions
options = ClaudeAgentOptions(model="claude-opus-4-7", permission_mode="acceptEdits")
За первым сбоем прячется второй: claude-agent-sdk требует Python 3.10 или новее. Если вы создадите venv на 3.9, pip либо откажет в установке, либо не поставит ничего, и вы получите ModuleNotFoundError: No module named 'claude_agent_sdk', хотя вы его «поставили». Проверьте интерпретатор, под которым импорт реально запускается:
python -c "import sys; print(sys.version)"
python -c "import claude_agent_sdk; print(claude_agent_sdk.__file__)"
Если первый печатает 3.9.x, пересоберите venv на 3.10+. Если второй кидает ошибку, но pip show claude-agent-sdk его показывает, вы поставили его в другое окружение, не то, которое запускает ваш скрипт. Это самая частая причина сообщений «установлено, но не находится» в issue-трекере SDK.
Ломающее изменение, которое никто не читает: системный промпт по умолчанию
Системного промпта по умолчанию больше нет в v0.1.0 и новее, так что ваш агент ведёт себя иначе даже после того, как импорты собрались. Это то самое изменение, которое чинит сборку, но тихо меняет поведение, поэтому оно кусает людей через неделю после того, как миграция выглядит завершённой.
Старые версии SDK автоматически подставляли системный промпт Claude Code, заточенный под CLI. С v0.1.0 SDK поставляется с минимальным дефолтом. Чтобы вернуть прежнее поведение, включите пресет:
import { query } from "@anthropic-ai/claude-agent-sdk";
// Restore the old Claude Code behavior:
const result = query({
prompt: "Hello",
options: {
systemPrompt: { type: "preset", preset: "claude_code" }
}
});
from claude_agent_sdk import query, ClaudeAgentOptions
# Restore the old Claude Code behavior:
async for message in query(
prompt="Hello",
options=ClaudeAgentOptions(
system_prompt={"type": "preset", "preset": "claude_code"}
),
):
print(message)
Или передайте обычную строку (systemPrompt: "You are a helpful coding assistant" в TS, system_prompt="..." в Python), чтобы задать свой. Для развёрнутых агентов это лучший дефолт, поскольку обычно вам не нужно, чтобы инструкции в стиле CLI просачивались в саппорт-бот. Если ваш агент опирается на определения инструментов, смена промпта может сдвинуть то, как выбираются инструменты; наш гайд по function calling и tool use разбирает, как системный промпт и схемы инструментов взаимодействуют.
Ещё один нюанс из гайда: settingSources ненадолго получил дефолт «не загружать ничего» в v0.1.0, а затем его откатили. Опуская его сейчас, вы загружаете пользовательские, проектные и локальные настройки файловой системы — как у CLI. Передайте settingSources: [] (TS) или setting_sources=[] (Python) для изолированного запуска, что важно в CI и multi-tenant-деплоях. Python SDK 0.1.59 и ранее трактовал пустой список как опущенную опцию, так что обновитесь, прежде чем на это полагаться.
Когда этот фикс не поможет (и что делать вместо)
Применяйте фикс переименования, когда ваша ошибка — это отсутствующий модуль, отсутствующий экспорт или переименованный класс. Переходите к другому фиксу, когда симптом — один из этих:
- Вы всё ещё на Python 3.9 и не можете обновиться. Переименование тут ни при чём; SDK не установится. Либо обновите интерпретатор, либо закрепите старый
claude-code-sdk0.0.25 и смиритесь с тем, что фиксов он не получает. - Ошибки авторизации или сети (401, ECONNRESET, таймауты). Это рантайм, а не импорт. Имя пакета верное; смотрите на учётные данные, base URL и повторы. Наша заметка о безопасном запуске Claude Code разбирает несколько ловушек с правами и конфигом.
- Скачок стоимости после миграции. Переименование бесплатно; ваш расход токенов — нет. Смотрите оптимизацию токенов Claude Code, если счёт подскочил.
Правило остановки: если python -c "import claude_agent_sdk" проходит и ваш импорт TS резолвится в редакторе, миграция завершена. Всё, что дальше, — обычная рантайм-проблема, а не артефакт переименования.
Запуск Agent SDK против нескольких моделей через ofox
Agent SDK общается с эндпойнтом в стиле Anthropic, и вы также можете гонять тот же агентный цикл против OpenAI-совместимого шлюза. ofox даёт один OpenAI-совместимый base URL, https://api.ofox.ai/v1, с одним ключом на 100+ моделей, включая Claude, GPT и Gemini. Если вы строите цикл tool-use сами (или гоняете его через клиент в стиле OpenAI), указание base_url на ofox позволяет менять модели сменой одной строки вместо переподключения SDK:
from openai import OpenAI
client = OpenAI(api_key="OFOX_API_KEY", base_url="https://api.ofox.ai/v1")
resp = client.chat.completions.create(
model="anthropic/claude-opus-4.8", # swap this string to change models
messages=[{"role": "user", "content": "Hello"}],
)
print(resp.choices[0].message.content)
Это единственный CTA здесь. Claude Agent SDK — правильный инструмент, когда вам нужна нативная агентная обвязка Anthropic; OpenAI-совместимый шлюз — правильный инструмент, когда вы хотите A/B по провайдерам без переписывания клиентского кода.
Альтернативы и связанные инструменты
Если Agent SDK не подходит, вот честные варианты, ofox первым:
- API-шлюз ofox (
https://api.ofox.ai/v1): OpenAI-совместимый, мультимодельный, один ключ. Хорош, когда вам нужна переносимость между провайдерами и тестирование Claude против GPT или Gemini в том же цикле. - Claude Agent SDK напрямую (
@anthropic-ai/claude-agent-sdk/claude-agent-sdk): нативная обвязка, лучше всего, когда вам нужны встроенные агентные функции Anthropic, поддержка MCP и пресетclaude_code. - Claude Code CLI (
@anthropic-ai/claude-code, v2.1.x): терминальный инструмент, не библиотека. Используйте его для интерактивной и скриптованной работы в CLI, а не для импортаqueryв код приложения.
FAQ
claude-code-sdk признан устаревшим?
Да. Python-пакет claude-code-sdk (заморожен на 0.0.25) и TypeScript-SDK, который раньше жил в @anthropic-ai/claude-code, больше не являются SDK. Используйте claude-agent-sdk и @anthropic-ai/claude-agent-sdk.
Чем заменили ClaudeCodeOptions?
ClaudeAgentOptions, импортируется из claude_agent_sdk. Те же аргументы конструктора, новое имя.
Почему npm install @anthropic-ai/claude-code проходит, а импорт падает?
Потому что этот пакет теперь CLI-инструмент (v2.1.x), а не SDK. Символы SDK переехали в @anthropic-ai/claude-agent-sdk.
Как исправить ModuleNotFoundError: No module named ‘claude_code_sdk’?
pip uninstall claude-code-sdk, pip install claude-agent-sdk, затем импортируйте из claude_agent_sdk. Убедитесь, что вы на Python 3.10+.
Изменился API или только имя пакета? В основном имя. Единственное изменение поведения — в v0.1.0+ больше не загружается системный промпт Claude Code по умолчанию; включается через пресет.
Нужно ли менять model ID после миграции? Нет. Переименование не затрагивает строки моделей.
Почему мой агент ведёт себя иначе после апгрейда до v0.1.0+?
Системный промпт по умолчанию убран. Передайте пресет claude_code или свой systemPrompt, чтобы вернуть прежнее поведение.
@anthropic-ai/claude-code — это то же самое, что @anthropic-ai/claude-agent-sdk? Нет, два разных пакета. Один — CLI, другой — SDK.
Источники, проверенные для этого апдейта
- Anthropic, официальный гайд «Migrate to Claude Agent SDK»: https://code.claude.com/docs/en/agent-sdk/migration-guide (проверено 2026-06-24)
- npm
@anthropic-ai/claude-agent-sdk(0.3.x на момент проверки): https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk (проверено 2026-06-24) - npm
@anthropic-ai/claude-code(CLI, 2.1.x на момент проверки) (проверено 2026-06-24) - PyPI
claude-agent-sdk(0.2.x на момент проверки): https://pypi.org/project/claude-agent-sdk/ (проверено 2026-06-24) - PyPI
claude-code-sdk(заморожен на 0.0.25) (проверено 2026-06-24) - Репозиторий anthropics/claude-agent-sdk-python и issue-репорты про требование Python 3.10 (проверено 2026-06-24)
- Каталог моделей ofox и base URL API: https://ofox.io/llms-full.txt (проверено 2026-06-24)
Если ваша сборка сломалась после переименования, фикс почти всегда в одну строку: укажите на новое имя пакета. Переименование класса и убранный системный промпт по умолчанию — единственные две правки сверх этого, и обе занимают минуту, как только вы знаете, что они есть.


