Почему ваш Cline работает как пьяный стажёр
Открываете Cline, просите его отрефакторить модуль авторизации, а он вместо этого предлагает переписать всё на Rust. Знакомо? Проблема не в агенте, а в том, что вы кормите его контекстом как придётся.
Cline (как и любой AI-агент) страдает от той же болезни, что и его коллеги из статьи про Claude Code - ограниченного контекста. Он видит только то, что вы ему показываете, и строит предположения на основе этого. Без чёткой карты проекта он начинает галлюцинировать.
Типичная ошибка: дать Cline доступ ко всему проекту и ждать чуда. Вместо этого он утонет в тысячах строк кода и начнёт предлагать абсурдные изменения.
PROJECT_MAP.md - ваш секретный инструмент
Представьте, что вы нанимаете нового разработчика. Вы не бросаете его в open space с криком "разберись сам". Вы даёте ему документацию, объясняете архитектуру, показываете больные места. То же самое нужно делать с Cline.
PROJECT_MAP.md - это не просто файл. Это контракт между вами и агентом. В нём вы чётко определяете границы, правила игры и цели. Как в OpenSpec подходе, но адаптированном под рефакторинг.
1Что должно быть в идеальном PROJECT_MAP.md
Не создавайте очередной README.md с общими фразами. Cline нужны конкретные инструкции, а не философия.
| Раздел | Что писать | Зачем нужно |
|---|---|---|
| Архитектура | Схема слоёв, flow данных | Чтобы Cline понимал границы модулей |
| Технический долг | Список конкретных проблем | Фокус на реальных задачах |
| Критерии качества | Метрики, линтеры, тесты | Объективная оценка изменений |
| Taboo зоны | Что нельзя трогать | Предотвращение катастроф |
2Создаём карту за 15 минут
Не нужно писать роман. Достаточно структурировать то, что уже знаете о проекте.
# PROJECT_MAP.md для рефакторинга
## Архитектура (что есть сейчас)
- Монолит на FastAPI + SQLAlchemy
- 3 основных модуля: auth, payments, analytics
- База: PostgreSQL 15, Redis для кэша
- Слои: controllers → services → repositories
## Технический долг (приоритет высокий → низкий)
1. auth/utils.py - 1200 строк, нарушение SRP
2. payments/legacy.py - устаревшие методы оплаты
3. analytics/queries.py - raw SQL без type hints
4. Общие: нет unit-тестов на 60% кода
## Критерии успешного рефакторинга
- Снижение cognitive complexity (SonarQube) на 30%
- Увеличение coverage тестов до 80%
- Сохранение backward compatibility API
- Улучшение времени ответа на 15%
## Taboo зоны (не трогать!)
- Файлы в папке /legacy/
- Миграции базы данных
- Конфигурация deployment
- Внешние интеграции (SMTP, SMS)
## Стиль кода (обязательно соблюдать)
- Black для форматирования
- isort для импортов
- mypy для типизации
- Максимальная длина строки: 88 символов
## Контекст для Cline
Ты - senior backend разработчик с опытом в Python 3.11+
Твоя задача - рефакторинг, не переписывание с нуля
Все изменения должны проходить через PR с тестами
Если сомневаешься - спроси уточняющий вопрос3Интеграция с Cline: неочевидные настройки
Создали PROJECT_MAP.md? Отлично. Теперь нужно правильно его использовать.
Первая ошибка - просто скопировать файл в промпт. Контекст Cline ограничен, и если ваш файл на 500 строк, он прочитает только начало.
Решение? Используйте технику из статьи про контекст и галлюцинации:
- Разделяйте на чанки: Разбейте PROJECT_MAP.md на логические секции и загружайте только нужные
- Используйте референсы: В промпте ссылайтесь на конкретные пункты из карты
- Обновляйте динамически: После каждого успешного рефакторинга отмечайте это в карте
# Пример промпта для Cline
# В начале сессии:
"""
Используй PROJECT_MAP.md как основной гайд.
Сейчас работаем над секцией 'Технический долг', пункт 1.
Цель: рефакторинг auth/utils.py с focus на SRP.
Не трогай Taboo зоны.
Предлагай изменения поэтапно с тестами.
"""Vibe-разработка: что это и почему работает
Термин звучит как очередной модный buzzword, но за ним стоит простая идея: создание контекстного "пузыря" для AI-агента. Как в статье про Vibe Coding для игр, только для рефакторинга.
Vibe-разработка с PROJECT_MAP.md работает потому что:
- Ограничивает scope: Cline не будет предлагать переписать весь проект
- Даёт измеримые цели: Вместо "сделай лучше" - конкретные метрики
- Сохраняет контекст между сессиями: Не нужно каждый раз объяснять архитектуру
- Предотвращает конфликты: Чёткие правила что можно, а что нельзя
Важно: Vibe-разработка не заменяет ваше понимание проекта. Вы остаётесь архитектором, Cline - исполнителем. Не делегируйте принятие архитектурных решений агенту.
4Реальный кейс: рефакторинг платежного модуля
Давайте посмотрим на примере. У нас есть payments/legacy.py на 800 строк. Cline без PROJECT_MAP.md предлагает:
- Переписать на asyncio (хотя проект синхронный)
- Заменить SQLAlchemy на SQLModel (ломает миграции)
- Добавить GraphQL поверх REST (никому не нужно)
С PROJECT_MAP.md ситуация меняется. В карте мы указали:
## Технический долг
payments/legacy.py:
- Нарушение SRP (класс делает всё)
- Смешивание логики разных провайдеров
- Отсутствие unit-тестов
- Сложные conditionals
## Taboo зоны
- Не менять публичный API
- Не трогать интеграции с банками
- Не добавлять новые зависимости
## Цели
- Разделить на provider-specific модули
- Увеличить test coverage с 0% до 85%
- Упростить добавление новых провайдеровРезультат? Cline предлагает конкретный план: выделить базовый класс PaymentProvider, создать модули для каждого провайдера, написать тесты. Без переписывания всего с нуля.
Ошибки, которые убьют ваш рефакторинг
Даже с идеальной картой можно всё испортить. Вот что делают 90% разработчиков неправильно:
| Ошибка | Почему плохо | Как исправить |
|---|---|---|
| Давать доступ ко всему коду | Cline утонет в контексте | Ограничивать scope в PROJECT_MAP.md |
| Не проверять предложения | Может сломать production | Ревью каждого изменения |
| Игнорировать тесты | Рефакторинг без тестов = техдолг | Требовать тесты в критериях |
| Менять карту на лету | Cline запутается в правилах | Обновлять карту между сессиями |
Самая опасная ошибка - доверять Cline на 100%. Помните историю про пьяного стажёра? AI-агенты ещё не идеальны. Вы - архитектор, они - рабочие.
Интеграция с другими инструментами
PROJECT_MAP.md не существует в вакууме. Его нужно связать с вашим workflow.
Что работает хорошо:
- Git hooks: Автоматически проверять, что изменения соответствуют карте
- CI/CD пайплайны: Запускать тесты из критериев качества
- Мониторинг кода: SonarQube, CodeClimate для объективных метрик
- Документация: Генерация docs из обновлённой карты
# Пример .github/workflows/refactor-check.yml
name: Проверка рефакторинга
on:
pull_request:
paths:
- 'src/**'
jobs:
check-project-map:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Проверка критериев PROJECT_MAP.md
run: |
# Скрипт проверяет, что изменения соответствуют карте
python scripts/validate_refactor.py \
--project-map PROJECT_MAP.md \
--changed-files ${{ github.event.pull_request.changed_files }}Когда это не работает (и что делать)
PROJECT_MAP.md - не серебряная пуля. Есть ситуации, где он бесполезен или даже вреден.
Не работает:
- В проектах с хаотичной архитектурой (нет чётких границ)
- При полном переписывании (карта устаревает слишком быстро)
- В командах без code review (карта не обновляется)
- С очень старыми AI-моделями (не понимают сложные инструкции)
Что делать: Начинайте с малого. Возьмите один модуль, создайте для него микро-карту, протестируйте с Cline. Если работает - масштабируйте. Если нет - ищите причину в модели или подходе.
Что дальше? Эволюция подхода
Методика с PROJECT_MAP.md - только начало. В 2026 году появляются новые инструменты, которые делают этот процесс ещё эффективнее.
Например, подход из статьи про ACDD и атомарное мышление идеально сочетается с нашей картой. Разбивайте рефакторинг на атомарные коммиты, каждый из которых соответствует пункту в карте.
Или возьмите идеи из Claude Code 2.0 - там много про структурирование работы с AI-агентами.
Главное - помнить: инструменты меняются, но принципы остаются. Чёткие границы, измеримые цели, постоянный feedback. Без этого даже самый продвинутый Cline будет галлюцинировать.
Создайте свой PROJECT_MAP.md сегодня. Начните с одного модуля. Увидите разницу уже завтра. Или продолжайте мучиться с рефакторингом вручную - выбор за вами.