Если ты пишешь код, то с высокой вероятностью знаком с редактором Cursor. До сих пор взаимодействие с нейросетью внутри среды строилось вокруг интерактивного диалога: ты нажимаешь сочетание клавиш, открываешь панель Composer, формулируешь задачу и сидишь перед монитором, наблюдая, как построчно меняются файлы. Это здорово ускоряет разработку, но имеет принципиальное архитектурное ограничение: человек вынужден оставаться частью цикла (human-in-the-loop) на каждом шаге.
Команда Cursor решила сломать эту парадигму и представила Cursor Agent SDK — специализированный фреймворк и консольный инструментарий (CLI), позволяющий вынести агентную логику за пределы пользовательского редактора. Теперь поведение виртуального инженера формализуется как отдельный репозиторий со строгой структурой инструкций, типизированных инструментов и каналов связи. По сути, разработчики открыли доступ к той самой внутренней инфраструктуре (harness), на которой работают собственные фоновые службы компании — вроде Bugbot и автоматизированных сканеров безопасности.
Я подробно разобрал спецификацию SDK, протестировал локальный запуск через CLI и собрал работающий прототип агента для проверки кода. Давай посмотрим, как устроен этот каркас и как делегировать рутинную проверку пулл-реквестов автономному воркеру в облаке.
Структура проекта: от хаотичных промптов к чистому коду
Главная ценность Agent SDK заключается в стандартизации. Раньше агентные скрипты напоминали спагетти: разработчики мешали в одну кучу системные промпты, ключи API, парсинг регулярных выражений и вызовы команд операционной системы. Поддерживать такие поделки в продакшене было настоящим адом.
В Cursor Agent SDK каждый агент организуется как полноценный инженерный модуль в четкой файловой иерархии:
instructions.md: Базовый системный манифест, описывающий специализацию, архитектурные ограничения и жесткие правила поведения агента;tools/: Каталог со строго типизированными функциями на TypeScript или Python, реализующими прикладные действия во внешнем мире;skills/: Набор модульных динамических инструкций, которые модель подгружает по требованию при переходе к узким подзадачам (например, регламент миграции базы данных или правила оформления API-документации);mcp-connections/: Манифесты подключения серверов по открытому протоколу Model Context Protocol для интеграции с корпоративными базами знаний;channels/: Коннекторы внешних интерфейсов — интеграция со Slack-ботами, вебхуками GitHub Pull Requests или тикетами трекеров Linear и Jira.
Такой подход позволяет хранить агента в обычном Git-репозитории, версионировать правила поведения вместе с кодом проекта и обновлять промпты через стандартный pull request с обязательным код-ревью коллег.
Реализация кастомных инструментов на TypeScript
Давай посмотрим, как выглядит инициализация агента и создание кастомного инструмента. В SDK используется библиотека Zod для строгой валидации входных параметров, что гарантирует защиту от кривых вызовов функций со стороны нейросети:
import { Agent, tool } from '@cursor/agent-sdk';
import { z } from 'zod';
import { execSync } from 'child_process';
// Создание инструмента для запуска тестового сьюта и проверки покрытия
const testRunnerTool = tool({
name: 'run_test_coverage',
description: 'Запускает локальный тестовый сьют в песочнице и возвращает отчет о покрытии кода',
parameters: z.object({
testPath: z.string().describe('Относительный путь к каталогу или файлу тестов'),
coverageThreshold: z.number().min(0).max(100).default(80).describe('Минимально допустимый процент покрытия')
}),
execute: async ({ testPath, coverageThreshold }) => {
try {
const output = execSync(`npm test -- ${testPath} --coverage --json`, { encoding: 'utf-8' });
const report = JSON.parse(output);
const isPassing = report.total.lines.pct >= coverageThreshold;
return { success: isPassing, pct: report.total.lines.pct, details: report.summary };
} catch (error: any) {
return { success: false, error: error.message };
}
}
});
// Конфигурация фонового агента безопасности
export const securityReviewer = new Agent({
name: 'SecurityReviewerBot',
instructionsPath: './instructions.md',
tools: [testRunnerTool],
model: 'claude-3-5-sonnet-20241022',
executionMode: 'isolated_cloud_vm'
});
Обрати особое внимание на параметр executionMode: 'isolated_cloud_vm'. Агент не исполняет непроверенный код на твоей физической рабочей станции: облачная среда Cursor поднимает одноразовую изолированную виртуальную машину в песочнице, клонирует туда нужный коммит, прогоняет тестовые команды и немедленно уничтожает контейнер после формирования отчета. Это полностью снимает риски случайного повреждения локальной файловой системы.
Локальная разработка и деплой через CLI
Процесс создания и отладки виртуального помощника максимально приближен к привычному циклу современной веб-разработки:
# Установка глобального инструментария Cursor Agent CLI
npm install -g @cursor/agent-cli
# Инициализация нового шаблонного проекта агента на TypeScript
cursor-agent init automated-qa-reviewer --template=typescript
# Локальный запуск агента в интерактивном режиме симуляции
cursor-agent run --interactive --repo=./my-target-project
После завершения локального тестирования агент деплоится в инфраструктуру Cursor Cloud одной командой: cursor-agent deploy. При наступлении триггерного события (например, открытие pull request с тегом needs-review в GitHub) агент автоматически просыпается, подтягивает контекст ветки, анализирует изменения и оставляет структурированный отчет с готовыми предложениями правок в комментариях к коду.
Переход от интерактивного чата к фоновым воркерам
Появление Cursor Agent SDK знаменует важнейший тектонический сдвиг во всей индустрии ИИ-разработки. Мы окончательно уходим от наивной модели «программист сидит перед экраном и ждет ответа от чат-бота» к модели «автономный рой специализированных фоновых сотрудников».
Разработчик пишет фичу, пушит коммит в удаленную ветку и спокойно закрывает крышку ноутбука. Агенты на базе Cursor SDK в фоне проводят ревью безопасности, проверяют совместимость зависимостей, находят пограничные случаи в тестах и подготавливают отчет к началу рабочего дня. Это именно то, чем должен быть настоящий практический искусственный интеллект: незаметной, надежной инфраструктурой за кулисами твоего проекта.
