Учебник

Cline: AI-агент для команды с контролем расходов

Ваши менеджеры тратят часы на рутину, а разработчики не успевают. Cline - AI-агент, который сам пишет код и работает с вашими данными. Разберём, как подключить его к базе клиентов, настроить бюджет и правила для команды - без найма программиста.

Макс Космов··8 мин чтения

У вас есть база клиентов в PostgreSQL или MongoDB, но чтобы получить оттуда отчёт - нужно просить разработчика. Или ждать неделями. Cline - это AI-агент, который сам подключается к вашей базе, пишет запросы и даже создаёт код. Без найма программиста. Разберём, как это настроить за вечер.

Как AI-агент принимает решения и что он видит

Cline - это расширение для редактора кода VS Code. Он не просто болтает, а реально редактирует файлы и запускает команды. Понимание его логики поможет предсказывать, что он сделает, и не допускать ошибок.

Cline работает по циклу: восприятие, рассуждение, действие, наблюдение.

Восприятие. Агент получает задачу от вас и формирует начальный контекст. В контекст попадают: системные инструкции, содержимое файла правил .clinerules, история разговора, список файлов в папке.

Рассуждение. Модель (Claude, GPT, DeepSeek - что выбрали в настройках) анализирует контекст и решает, какое действие выполнить следующим. Это не алгоритм с гарантией - это вывод языковой модели. Поэтому одна и та же задача может дать разные результаты.

Действие. Cline выполняет одно из 12 действий: прочитать файл, записать файл, применить изменение, запустить команду в терминале, поискать файлы, показать список файлов, управлять браузером, и ещё несколько для работы с MCP и API.

Наблюдение. Cline видит результат действия (содержимое файла, вывод команды, ошибку) и возвращается к шагу рассуждения для следующего действия.

Каждый шаг действия показывается в панели Cline до выполнения. Это ключевой момент безопасности: вы всегда знаете, что агент собирается сделать.

Практическое следствие: если агент делает что-то неожиданное, смотрите на шаг рассуждения в логах. Часто неточная формулировка задачи приводит к неверному выводу модели.

Подключение к вашей базе данных: PostgreSQL, Supabase, MongoDB за 15 минут

Для большинства баз данных уже есть готовые решения - писать с нуля не нужно. Просто скопируйте настройку.

Разберём на примере стройфирмы. У вас есть база PostgreSQL с заказами и клиентами. Вы хотите, чтобы агент мог посмотреть, какие объекты в работе, и сформировать отчёт. Вот как это настроить.

PostgreSQL:

{
 "postgres": {
 "command": "npx",
 "args": [
 "@modelcontextprotocol/server-postgres",
 "postgresql://user:password@localhost:5432/mydb"
 ]
 }
}

После подключения Cline может:

  • Выполнять SQL-запросы
  • Смотреть схему таблиц
  • Генерировать модели по существующей схеме

Пример задачи:

посмотри схему таблицы orders и создай Prisma-модель со всеми индексами

Supabase:

{
 "supabase": {
 "command": "npx",
 "args": ["@supabase/mcp-server-supabase"],
 "env": {
 "SUPABASE_URL": "https://project.supabase.co",
 "SUPABASE_SERVICE_ROLE_KEY": "eyJ..."
 }
 }
}

Supabase MCP даёт доступ не только к БД, но и к Auth, Storage и Edge Functions.

MongoDB:

{
 "mongodb": {
 "command": "npx",
 "args": ["@mongodb-js/mcp-server-mongodb"],
 "env": {
 "MDB_MCP_CONNECTION_STRING": "mongodb://localhost:27017"
 }
 }
}

Безопасность. Используйте только пользователей с правами на чтение для боевых баз. Создайте отдельного пользователя с правами только на чтение и подключайте Cline через него.

Написание своего инструмента за 30 минут

Свой инструмент нужен, когда стандартных недостаточно: хотите подключить Cline к внутреннему API компании, корпоративной базе данных или специфическому сервису.

Разберём на примере турагентства. У вас есть внутренняя система бронирования с API. Вы хотите, чтобы агент мог по ID клиента получать его данные и предлагать подходящие туры. Вот минимальный инструмент на TypeScript.

Сначала создаём папку проекта и устанавливаем SDK.

mkdir my-mcp-server && cd my-mcp-server
npm init -y
npm install @modelcontextprotocol/sdk

Это основной файл сервера. Он регистрирует инструмент и обрабатывает вызовы от Cline.

// src/index.ts
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { ListToolsRequestSchema, CallToolRequestSchema } from "@modelcontextprotocol/sdk/types.js";

const server = new Server(
 { name: "my-company-api", version: "1.0.0" },
 { capabilities: { tools: {} } }
);

// Регистрируем инструмент
server.setRequestHandler(ListToolsRequestSchema, async () => ({
 tools: [{
 name: "get_user_info",
 description: "Получить информацию о пользователе по ID",
 inputSchema: {
 type: "object",
 properties: {
 user_id: { type: "string", description: "ID пользователя" }
 },
 required: ["user_id"]
 }
 }]
}));

// Обрабатываем вызов
server.setRequestHandler(CallToolRequestSchema, async (request) => {
 if (request.params.name === "get_user_info") {
 const userId = request.params.arguments?.user_id as string;
 // Ваш API-вызов
 const user = await fetchUserFromInternalAPI(userId);
 return { content: [{ type: "text", text: JSON.stringify(user) }] };
 }
 throw new Error(`Unknown tool: ${request.params.name}`);
});

// Запуск
const transport = new StdioServerTransport();
await server.connect(transport);

Сборка и подключение к Cline. Команда ниже компилирует TypeScript в JavaScript.

npm run build

В настройках Cline (MCP Servers):

{
 "my-company-api": {
 "command": "node",
 "args": ["/path/to/my-mcp-server/dist/index.js"]
 }
}

Транспорт SSE (Server-Sent Events) вместо stdio - когда сервер должен работать как HTTP:

import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js";
// Запускается на localhost:3000, принимает Cline через HTTP

SSE подходит для серверов, которые должны работать постоянно или быть доступны нескольким клиентам одновременно.

Командный режим: общие правила и журнал действий

Когда вся команда использует Cline, важна согласованность: одинаковые правила, одинаковые ограничения, общий аудит.

Общий .clinerules в репозитории. Файл .clinerules в корне репозитория читается всеми разработчиками команды автоматически. Это централизованные правила для агента.

Многоуровневые правила. Пример файла .clinerules для Python-проекта.

# .clinerules

## Технический стек
- Python 3.11, FastAPI, SQLAlchemy 2.0
- Тесты: pytest (coverage > 80%)
- Linting: ruff

## Обязательно
- Новый API конечная точка API = новый тест
- Все DB-запросы через ORM, не raw SQL
- Комментарии только на русском

## Запрещено
- Менять файлы в /migrations/ без явного запроса
- Устанавливать новые пакеты без согласования
- Изменять .env.example без Ticket

Личные настройки остаются у каждого разработчика в ~/.clinerules (глобальный файл) - личные предпочтения, которые не нужны команде.

Журнал действий. Cline записывает историю всех действий агента в файл. Путь: в настройках расширения, раздел «Task History». Можно экспортировать в JSON.

Для корпоративного аудита настройте провайдер через Azure OpenAI или AWS Bedrock - они пишут все запросы в журналы Cloud Audit Logs.

Контроль расходов: бюджет на задачу и сравнение провайдеров

Расходы на Cline легко выходят из-под контроля без явных лимитов.

Бюджет на задачу в настройках Cline: Settings -> Cline -> Max Task Cost -> $2.00

Если задача превышает лимит, Cline остановится и спросит: «Потрачено $2.00. Продолжить?»

Мониторинг в реальном времени. В нижней части панели Cline всегда показан текущий расход на задачу в долларах и токенах.

Сравнение реальной стоимости задачи по провайдерам:

Тестовая задача: «добавь JWT-аутентификацию в FastAPI-приложение (5 файлов, ~200 строк изменений)».

  • Claude Sonnet 4: ~$0.80-1.20
  • GPT-4o: ~$0.60-0.90
  • DeepSeek Coder V3: ~$0.05-0.10
  • Qwen2.5 Coder 32B (Ollama): $0 (только электричество)

Для типичной команды из 5 разработчиков, делающих 5 таких задач в день:

  • Claude Sonnet: $100-150/мес
  • DeepSeek Coder: $6-12/мес

Стратегия распределения. DeepSeek для рутины (тесты, документация, рефакторинг по шаблону), Claude Sonnet для сложной логики и архитектурных задач. В Cline модель переключается одним кликом в панели.

Cline в CI: запуск агента из GitHub Actions

Cline можно запускать без графического интерфейса через CLI без VS Code:

npx cline-cli --task "исправь все TypeScript ошибки" \
 --model claude-sonnet-4 \
 --api-key $ANTHROPIC_API_KEY \
 --auto-approve-reads \
 --budget 5.00

GitHub Actions workflow. Этот файл запускает Cline автоматически при комментарии /ai-fix в Issue.

name: AI Code Fix
on:
 issue_comment:
 types: [created]

jobs:
 fix:
 if: contains(github.event.comment.body, '/ai-fix')
 runs-on: ubuntu-latest
 steps:
 - uses: actions/checkout@v4
 - name: Run Cline
 run: |
 npx cline-cli \
 --task "${{ github.event.comment.body }}" \
 --model deepseek-coder \
 --api-key ${{ secrets.DEEPSEEK_API_KEY }} \
 --auto-approve-reads \
 --budget 2.00
 - name: Create PR
 uses: peter-evans/create-pull-request@v5
 with:
 title: "AI Fix: ${{ github.event.issue.title }}"

Команда /ai-fix переименуй все переменные camelCase в snake_case в комментарии к Issue запустит агента автоматически.

Ограничения режима CI: нет доступа к браузеру, нет интерактивного подтверждения. Устанавливайте жёсткий бюджет через --budget и используйте --auto-approve-reads (авто-одобряется только чтение). Для записи файлов всё равно нужно --auto-approve-writes.

Сложные многошаговые задачи: разбиение, контрольные точки, восстановление

Для задач, которые занимают 30+ минут и затрагивают десятки файлов, нужен структурированный подход.

Разбиение задачи в .clinerules:

## Правила для больших задач
Если задача затрагивает более 5 файлов:
1. Сначала спроси пользователя о подтверждении плана
2. Работай по одному логическому блоку за раз
3. После каждого блока - краткая сводка того, что сделано

Явное разбиение задачи на шаги:

Сделай следующее по шагам:
Шаг 1: только прочитай все файлы auth/ и опиши архитектуру
Шаг 2 (после моего ОК): создай план рефакторинга
Шаг 3 (после моего ОК): выполни рефакторинг

Контрольные точки через Git. После каждого крупного шага просите Cline зафиксировать прогресс:

сделай git commit с сообщением "WIP: step 1 complete - auth module analyzed"

Восстановление после сбоя агента. Если задача прервалась (ошибка API, лимит токенов, потеря соединения):

посмотри git log и последние изменения в файлах.
опиши что уже сделано и что осталось.
продолжи с шага [N].

Cline восстанавливает контекст из файловой системы и Git-истории - не из памяти сессии, которой нет.

Безопасность: изоляция агента от боевых данных и секретов

Cline работает в рабочей директории VS Code. Первое правило безопасности: никогда не открывать в VS Code папку с прямым доступом к боевым данным.

Изоляция на уровне .clinerules:

## Запрещено
- Никогда не читать и не изменять файлы: .env, .env.боевая среда, secrets/
- Никогда не запускать команды с флагом --боевая среда
- Никогда не делать прямые запросы к боевой базе

.gitignore как второй уровень защиты. Файлы в .gitignore Cline всё равно может прочитать - он работает с файловой системой, не с Git. Для надёжности создайте .clineignore (аналог .aiderignore) с явным списком исключений.

Отдельное рабочее пространство VS Code для Cline. Открывайте только нужную подпапку проекта, не корень монорепо с секретами: File, Open Folder, packages/api вместо корня.

Отдельные API-ключи для CI. Для GitHub Actions используйте отдельный API-ключ с лимитом расходов в настройках Anthropic Console - не тот же ключ, что в личной работе.

Аудит действий. Перед важными задачами включайте ручное подтверждение - это единственный способ гарантированно видеть каждое действие агента.

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

MCP-сервер - это сложно? Нужно ли знать специальный язык?

Минимальный MCP-сервер на TypeScript - 50-70 строк кода. Нужны базовые знания Node.js или Python (есть SDK для обоих языков). Если не хотите писать с нуля, посмотрите на готовые серверы в реестре modelcontextprotocol.io - для большинства типичных задач там уже что-то есть.

Как ограничить Cline, чтобы он не трогал определённые папки или файлы?

Два механизма: правило в .clinerules («не изменять /legacy/») и файл .clineignore в корне проекта с паттернами исключений. Правило в .clinerules - мягкое ограничение (агент следует инструкции). .clineignore - жёсткое исключение на уровне инструмента.

Cline в CI - насколько это стабильно и как обрабатывать сбои агента?

Cline CLI в CI стабилен при соблюдении условий: явный бюджет, таймаут задачи, детерминированные задачи (не «сделай что-нибудь хорошее»). Сбои случаются при превышении бюджета, ошибках API или слишком размытой задаче. Всегда добавляйте continue-on-error: true и уведомление при сбое.

Как логировать все действия Cline для аудита в корпоративной среде?

Cline записывает историю задач в папку расширения (путь в настройках, раздел Task History). Для централизованного аудита настройте провайдер через Azure OpenAI или AWS Bedrock - эти сервисы пишут все запросы в журналы Cloud Audit Logs. Для дополнительного контроля используйте корпоративный прокси на базе OpenRouter, который пишет все запросы в вашу систему.

Что делать, если агент застрял в цикле и не может решить задачу?

Первый шаг - кнопка Abort в панели Cline. Второй - посмотреть на последние 5-10 шагов и понять, где агент «зациклился». Обычно это признак неточной формулировки задачи или недостатка контекста. Переформулируйте с меньшим объёмом: вместо «исправь проблему» - «прочитай лог ошибки и предложи 3 варианта решения». Решайте по шагам, не одной большой командой.

Что дальше

Попробуйте прямо сейчас: скачайте VS Code, установите расширение Cline, подключите свою базу через готовый MCP-сервер из списка выше. Начните с задачи «посмотри структуру таблицы clients и покажи 5 последних записей». Бюджет на эксперимент - $1.

AI Компас (t.me/kosmoslab_ai) - канал для предпринимателей в РФ и СНГ, которые применяют AI в своём бизнесе без программиста. Разбираем инструменты и схемы - без курсов и теории.