· 1 мин

Cursor Agent SDK или cron-обёртки Claude Code: что выбрать для ИИ-агентов

Cursor Agent SDK (октябрь 2026) описывает ИИ-агента папкой с кодом, проверяет его evals и запускает по событиям GitHub, Slack, вебхукам и cron. Переносить на него cron-обёртки вокруг Claude Code стоит, если большинство триггеров агента - GitHub и Slack. Если агент живёт по расписанию, работает с вашим сервером и Telegram, переезд даст в основном переписывание готовой обвязки.

Cursor Agent SDK: агенты как код, evals и триггеры по cron и вебхукам. Сравниваю с 23 своими cron-обёртками вокруг Claude Code и объясняю, когда переезд оправдан.

Cursor Agent SDK или cron-обёртки Claude Code: что выбрать для ИИ-агентов
В статье · 8 разделовразвернуть

Cursor Agent SDK - это набор инструментов от Cursor, в котором ИИ-агент описан папкой с кодом: промпт, типизированные тулы, скиллы, каналы. Агента можно проверить evals и задеплоить в облако Cursor или к себе. Будить его умеют события GitHub, GitLab и Bitbucket, сообщения в Slack, вебхуки и cron. Свои 23 cron-обёртки вокруг Claude Code я на него переносить не стал, и ниже объясню, по какому критерию решал.

Немного контекста. У меня на сервере крутится конвейер статей для этого блога. Темы, черновики, фактчек, обложки, публикация - всё это делают ИИ-агенты, которых bash-скрипты по расписанию дёргают через claude -p. Репо живёт с 10 июля 2026, за это время в нём набралось 535 коммитов, а в папке cron/ лежат 23 скрипта run-*.sh. 20 октября 2026 Cursor выкатил Agent SDK, и по описанию это ровно то, что я руками строил четыре месяца. Пришлось сесть и честно сравнить.

Что такое Cursor Agent SDK

Cursor Agent SDK - это npm-пакет @cursor/agent-sdk и CLI agent-sdk, которые превращают ИИ-агента в обычный проект с кодом. Агента создают командой npx @cursor/agent-sdk init, гоняют локально в плейграунде через agent-sdk dev, проверяют agent-sdk eval и выкатывают agent-sdk deploy. Анонс вышел 20 октября 2026, в changelog SDK назван generally available.

Формулировка из анонса: агент - это проект. Внутри папки:

  • instructions.md - промпт агента;
  • tools/ - каждый файл это одно типизированное действие, которое модель может вызвать;
  • skills/ - процедуры, которые модель подгружает по требованию;
  • mcp-connections/ - тулы из MCP-серверов;
  • channels/ - где агент принимает сообщения и куда отвечает.

Если вы живёте в Claude Code, это выглядит знакомо до смешного. Мой агент-генератор черновиков - это SKILL.md плюс папка references/ с профилем площадки и правилами. По сути тот же instructions.md и skills/, только без типизированных тулов: агент пользуется встроенными Bash, Read и Write, а за базу отвечает CLI-скрипт scripts/bp_db.py.

Ещё в анонсе есть agent-sdk validate (проверка проекта), agent-sdk info (что SDK нашёл в папке) и шаблоны для init --template: ревьюер безопасности, автофиксер PR, триажер задач из Linear или Jira. Все шаблоны про код и тикеты, и это сразу показывает, для кого делали.

Cursor Agent SDK или cron-обёртки вокруг Claude Code: сравнение

Cursor Agent SDK даёт из коробки триггеры, сессии, evals и деплой с URL, а самодельные cron-обёртки вокруг Claude Code дают полный контроль над окружением, модель Anthropic напрямую и любые каналы, включая Telegram. Разница не в возможностях, а в том, кто пишет обвязку: в SDK её написал Cursor, в обёртках - вы.

Сводка по данным changelog Cursor (20.10.2026) и моему репо (проверено 06.11.2026):

Что сравниваемCursor Agent SDKМои cron-обёртки + Claude Code
Где описан агентпапка проекта: instructions.md, tools/, skills/, channels/SKILL.md + references/ в скилле, bash-скрипт cron/run-*.sh
Триггерысобытия GitHub, GitLab, Bitbucket, Slack, вебхуки, cronтолько cron и кнопка в админке, которая зовёт тот же скрипт
Проверка поведенияagent-sdk eval: фиксированное сообщение и проверка, какие тулы вызваны и с каким входомстрока-контракт ИТОГ: в выводе + 61 файл pytest на скрипты вокруг агента
Память между запускамисессия на тред: ответ в PR или в треде Slack продолжает ту же сессиюнет, каждый claude -p стартует с нуля, состояние в SQLite
Где работаетлокально, в облаке Cursor, на своей инфраструктуресвой VPS
УведомленияSlack из коробкиTelegram через curl к Bot API, свой код
Модельиз каталога Cursorзакреплена в env: BP_CLAUDE_MODEL, по умолчанию claude-opus-5-5

Главное, что бросается в глаза: у Cursor нет Telegram в списке каналов. Его можно прикрутить через вебхуки, но тогда половину моей обвязки придётся написать заново, просто внутри чужого SDK.

Читайте такжеRoutines в Claude Code против моего парка cron-обёрток на VPS: что уехало в облако, а что нетRoutines в Claude Code запускают агентов по расписанию, вебхуку и событию GitHub. Разбираю на парке из 11 cron-обёрток, что реально уехало в облако, а что осталось на VPS и почему.

Как запустить ИИ-агента по cron или вебхуку

Запустить ИИ-агента по расписанию можно двумя путями: отдать триггер платформе (Cursor Agent SDK, Routines в Claude Code) или повесить headless-вызов агента на системный cron. В первом случае расписание, повторы и логи - забота платформы. Во втором вы сами пишете lock, таймауты, алерты и проверку результата, зато агент видит всё ваше окружение.

В Cursor Agent SDK cron стоит в одном списке с GitHub и Slack. Отдельно в анонсе есть приятная деталь: события GitHub идут через аккаунт Cursor, публичный URL под вебхук поднимать не нужно. Для соло-разработчика без белого IP и домена под API это реально снимает кусок возни. Похожая механика есть в Automations от Cursor, и там честно предупреждают: запуск по расписанию может прийти с задержкой, но раньше назначенного времени не стартует.

У меня то же самое сделано руками. Вот ядро обёртки генерации черновиков, дословно из cron/run-generate.sh (выкинул ветки выбора темы):

source "$(dirname "$0")/lib.sh"
bp_init
REQ_ID="${1:-}"
# авто-прогон плавает внутри окна (claude-d7n); кнопка админки идёт сразу
[ -z "$REQ_ID" ] && jitter 40
# кнопка (есть id) ждёт освобождения lock'а; авто-cron молча уступает
exec 9>data/generate.lock
if [ -n "$REQ_ID" ]; then flock 9; else flock -n 9 || exit 0; fi
 
claude --model "$BP_CLAUDE_MODEL" -p "/blog-draft $TOPIC_ID" --permission-mode acceptEdits >"$OUT" 2>&1 \
  || { cat "$OUT"; exit 12; }
grep -q '^ИТОГ: дубль' "$OUT" && exit 102
grep -q '^ИТОГ: черновик #' "$OUT" || exit 13

Что тут происходит по шагам:

  1. bp_init подгружает .env, проверяет, что есть токен Telegram для алертов, и пишет heartbeat-файл "джоб стартовал".
  2. jitter 40 - случайная пауза от 0 до 40 минут. Ровный ритм "каждый час в :23" - часть машинного отпечатка конвейера, поэтому генерация плавает внутри окна.
  3. flock не даёт двум генерациям столкнуться. Cron молча уступает, кнопка из админки ждёт.
  4. Сам агент - одна строка claude -p с явной моделью и режимом прав.
  5. Результат проверяется грепом по последней строке вывода, а коды выхода 12, 13 и 102 разводят ошибки по разным алертам.

Вебхуков у меня нет вообще. "Триггер" от человека - это кнопка в админке, которая вызывает тот же скрипт с id темы. Хотите реакцию на событие - ставьте маленький HTTP-обработчик, который делает ровно это: кладёт задачу и дёргает обёртку. Для большинства соло-задач cron раз в 2 часа хватает с головой.

Что такое evals для ИИ-агента и чем они лучше грепа по логу

Eval для ИИ-агента - это автотест поведения: агенту отправляют фиксированное сообщение и проверяют, что он сделал, какие тулы вызвал, с какими аргументами и в какой форме ответил. В Cursor Agent SDK evals запускаются командой agent-sdk eval локально или в CI, а живые события GitHub можно сохранить фикстурами через agent-sdk github replay.

Вот тут мне стало немного стыдно :) Мой "eval" - это строка grep -q '^ИТОГ: черновик #'. Агент обязан закончить ответ ровно такой строкой, иначе обёртка считает прогон упавшим и возвращает тему в беклог. Это контракт на форму ответа, но не на поведение. Если агент написал черновик без единой внутренней ссылки или выдумал цифру, греп этого не увидит.

Ловит такое отдельная стадия - второй агент blog-check со скоркартой на 100 баллов и фактчеком каждого URL из факт-листа. Но это проверка результата на проде, а не тест перед выкаткой. Поменял я промпт скилла - узнаю, что сломал, только на следующем живом прогоне. А 61 файл pytest в репо проверяет скрипты вокруг агента: базу, публикацию, нарезку сообщений. Самого агента там нет.

Идея evals из Cursor переносится без всякого SDK, и это главное, что я из анонса забираю:

  • взять 5-10 реальных тем из базы как фикстуры;
  • прогонять на них claude -p в песочнице с копией базы;
  • проверять не текст, а действия: вызван ли draft-create, есть ли в теле 2+ ссылок на sunm8.ru/blog/, не превышен ли title в 75 символов;
  • запускать на каждое изменение SKILL.md, а не по крону.

Звучит как неделя работы? Скорее вечер. Просто раньше не было готовой формы, как это назвать и разложить.

Как я держу 23 агентские обёртки без SDK

Самодельный парк cron-обёрток вокруг Claude Code держится на четырёх вещах, которые SDK обещает дать из коробки: lock от двойного запуска, сторож молчащих джобов, надёжные алерты и деградация при сбоях сети. Каждую из них я дописал после конкретного инцидента, и почти все инциденты были тихими, без единой ошибки в логах.

Немного хронологии по cron/lib.sh и scripts/health_check.py:

  • 01-09.08.2026 сбор SEO-метрик стоял девять дней. Джоб падал до первой строчки лога, почта на сервере не настроена, а понедельничный дайджест исправно приходил со старыми цифрами. После этого появился health_check.py: каждый джоб при старте пишет heartbeat, сторож раз в сутки сверяет возраст с порогом. Сейчас в его таблице 26 джобов, 4 из них на паузе.
  • 01.09.2026 дайджест подбора ключей на 12,5 КБ пропал молча: Telegram не принимает сообщения длиннее 4096 символов и отвечает 400, а ответ уходил в /dev/null. Теперь алерт режется на куски, а отказ API пишется в лог.
  • В тот же день сторож дал ложный алерт по тому же джобу: он ходит 1-го и 15-го, и разрыв с 15-го по 1-е в 31-дневном месяце - 408 часов. Порог подняли до 420.
  • 29.09.2026 сервер потерял доступ к GitHub, и каждый запуск висел минуты на git pull. Теперь pull с таймаутом 60 секунд и работой на текущем коде, если не прошёл.

И любимая деталь, которую без опыта не придумаешь. Обёртки шлют в алерт хвост лога через tail -c 1200. tail -c режет по байтам, а кириллица в UTF-8 - по два байта на букву. Разрезанная пополам буква делает сообщение невалидным, Telegram отвечает 400, и алерт о падении... тоже падает. Молча. Лечится одной строкой с iconv -c в общей функции alert(), но найти это - отдельное удовольствие.

Вот это и есть цена самодельного решения. Не код обёртки (он короткий), а вот эти 4 инцидента, каждый из которых я заметил по отсутствию сообщения, а не по сообщению. Как я встраиваю человека в такой конвейер, писал отдельно - про апрув контента кнопками в Telegram.

Стоит ли переносить агентские обёртки на Cursor Agent SDK

Переносить агентов на Cursor Agent SDK стоит, если они живут вокруг кода и командной переписки: ревью PR, автофикс CI, триаж задач, ответы в Slack. Если агент работает с вашим сервером, локальной базой и Telegram, а модель вы берёте у Anthropic по подписке Claude Code, переезд даст в основном переписывание уже работающей обвязки.

Мой критерий - фраза-граница, которую я себе вывел: если больше половины триггеров агента - события из GitHub или Slack, бери SDK; если больше половины - время и твоя же админка, оставайся на cron. У меня из 23 обёрток к GitHub не привязана ни одна. Решение принялось само.

Второй вопрос - деньги и модель. Про цены в анонсе Agent SDK ничего нет. В документации Cursor SDK для TypeScript сказано, что запуски через SDK тарифицируются так же, как в IDE и Cloud Agents, а по разбору agentpatterns.ai "локальный" запуск означает, где крутится цикл агента и доступ к файлам, а не где работает модель. Оговорюсь: это разные продукты Cursor с похожими названиями, и для Agent SDK это может работать иначе. Но если так, то даже self-hosted агент платит за инференс через план Cursor. Мой конвейер сидит на подписке Claude Code, и как я сравнивал эти тарифы по деньгам, есть в статье Claude Code, Codex или Cursor: что выгоднее.

Третий - зависимость от вендора. Схема "агент - это папка" хороша, пока папку читает один CLI. Мой SKILL.md - это markdown, который я могу скормить любому агенту. tools/ в формате Cursor - уже нет.

Читайте такжеAI-агенты на VM за $0,013 в час: чем machine0 отличается от моего парка cron-обёрток на VPSРазбираю прайсинг machine0 - VM для AI-агентов с MCP из коробки - и сравниваю с cron-обертками, которыми сам держу конвейер статей на VPS: цены, что дает готовая VM, а что пишешь руками.

Когда Cursor Agent SDK не нужен

Cursor Agent SDK не нужен, если агент запускается по расписанию, работает с локальными файлами и базой на вашем сервере и отчитывается в Telegram. В этом случае SDK заменяет только триггер и деплой, а это 10-15 строк bash. Lock, сторож и алерты всё равно придётся писать, просто в другом месте.

Ещё случаи, когда я бы не трогал:

  • агентов меньше пяти, и все они на cron: обвязка займёт вечер, а не квартал;
  • модель жёстко Claude и у вас подписка: смена рантайма - это смена биллинга;
  • нужен кастомный канал, которого нет в SDK (тот же Telegram или почта);
  • агент правит прод-базу: в своей обёртке я точно знаю, какие у него права и через какой CLI он ходит.

А вот evals - нужны всем, и это не про SDK. Я начну с пяти фикстур на генератор черновиков, а SDK оставлю на случай, если когда-нибудь заведу агента на ревью PR. Такие дела.

Частые вопросы

Cursor Agent SDK бесплатный?

В анонсе Agent SDK от 20.10.2026 цен нет. В документации Cursor SDK для TypeScript сказано, что запуски через SDK тарифицируются так же, как в IDE и Cloud Agents, то есть по плану Cursor. Перед переездом стоит проверить актуальную страницу тарифов Cursor.

Можно ли запускать Claude Code по расписанию без SDK?

Да. Claude Code умеет headless-режим через claude -p, и его можно повесить на обычный cron на своём сервере. Придётся самому написать lock от двойного запуска, таймауты, алерты и проверку результата, зато агент видит локальные файлы и базу. Облачная альтернатива у Anthropic - Routines.

Поддерживает ли Cursor Agent SDK Telegram?

Среди встроенных каналов в анонсе 20.10.2026 Telegram нет: там GitHub, GitLab, Bitbucket, Slack, вебхуки и cron. Telegram-бота можно подключить через вебхуки, но обработку сообщений и ответы придётся писать самому.

Как готовился материал: черновик собран моим AI-конвейером по темам и заметкам из практики, факты сверены с первоисточниками, финальный текст я прочитал, поправил и утвердил перед публикацией. Обложку к статье тоже рисует нейросеть. Про сам конвейер — в разделе обо мне.

Влад Новиков
Пишу про AI-разработку без глянца. Новые разборы — сначала в канале.
Подписаться