Как я перестал платить за Cursor и собрал собственного AI-агента в консоли

Когда популярные AI-редакторы в очередной раз подняли цены и урезали лимиты к Claude, разработчик Марк Пфаффенбергер разозлился. И написал свой инструмент. Так появился Code Puppy — консольный AI-агент, заменяющий закрытые IDE вроде Cursor и Windsurf.
У проекта пока около 740 звёзд на GitHub, но фичи там интересные. Это гибкий клиент для терминала с поддержкой ротации API-ключей, сохранением сессий при сбоях и глубокой кастомизацией.
Зачем нужен консольный агент
Если вы работаете в консоли и не хотите держать открытым тяжёлый Electron-редактор, тащить монструозные плагины бывает лень. Code Puppy запускается из любой папки одной командой и сходу понимает структуру проекта.
Вы сами выбираете нейросеть, настраиваете системные промпты и решаете, куда отправлять данные.
Основные возможности
Разберём практичные штуки, ради которых стоит взглянуть на репозиторий.
Обход лимитов через ротацию моделей
Ограничения по запросам в минуту бесят больше всего, когда сидишь над сложной задачей. Code Puppy решает проблему через встроенный алгоритм Round Robin. Вы указываете несколько API-ключей, а утилита по очереди переключает их.
Настройка лежит в файле конфигурации:
{
"qwen1": {
"type": "cerebras",
"name": "qwen-3-coder-480b",
"custom_endpoint": {
"url": "https://api.cerebras.ai/v1",
"api_key": "$CEREBRAS_API_KEY1"
}
},
"qwen2": {
"type": "cerebras",
"name": "qwen-3-coder-480b",
"custom_endpoint": {
"url": "https://api.cerebras.ai/v1",
"api_key": "$CEREBRAS_API_KEY2"
}
},
"cerebras_round_robin": {
"type": "round_robin",
"models": ["qwen1", "qwen2"],
"rotate_every": 5
}
}
Сделали пять запросов к одному ключу, инструмент без паузы переходит к следующему.
Доступ к десяткам провайдеров
Благодаря интеграции с сервисом models.dev не нужно вручную прописывать эндпоинты для редких нейросетей. Команда /add_model открывает интерактивное TUI-меню прямо в консоли. Можно выбрать провайдеров из огромного списка: Groq, Cohere, Mistral, xAI и другие.
Если пропала связь с интернетом, клиент переключится на встроенную офлайн-базу моделей.
Устойчивость к сбоям с DBOS
При длинных сессиях с генерацией кода периодически что-то ломается: отключается сеть или случайно закрывается окно терминала. Плагин DBOS сохраняет контрольные точки каждого шага. В локальную базу данных записываются вызовы функций, ответы моделей и контекст.
После перезапуска сессию получится продолжить ровно с того места, где всё упало.
Собственные агенты в формате JSON
Вы можете создавать профили под конкретные задачи. Например, собрать агента для ревью кода, у которого будет доступ только к чтению файлов и поиску через grep.
Конфигурационный файл кладут в директорию агентов:
{
"name": "code-reviewer",
"display_name": "Code Reviewer",
"description": "Проверяет код на ошибки и безопасность",
"system_prompt": [
"Ты опытный инженер, проводящий ревью кода.",
"Обращай внимание на безопасность и поддерживаемость.",
"Предлагай конкретные исправления."
],
"tools": ["list_files", "read_file", "grep", "agent_share_your_reasoning"]
}
Смена агента происходит прямо в процессе работы через команду /agent code-reviewer.
Нулевой сбор данных
Автор принципиально отказался от аналитики и телеметрии. Никакие промпты, пути к файлам или логи вызовов не уходят на серверы проекта.
При использовании Ollama или vLLM данные вообще не покидают ваш компьютер.
Как попробовать
Для работы нужен Python 3.11 или свежее. Быстрее всего запустить инструмент через uv:
uvx code-puppy
После старта останется ввести ключи к используемым LLM или указать локальный эндпоинт.
Кому это пригодится
Инструмент получился дерзким и своеобразным. По умолчанию агент довольно капризный и принципиально отказывается менять файлы крупнее 600 строк кода, заставляя вовремя проводить рефакторинг.
Проект зайдёт тем, кто любит CLI-инструменты, не хочет платить за ежемесячные подписки и предпочитает сам контролировать расходование API-токенов.