Как я использую Copilot-cli: автоматизация контекста и строгие правила игры
ИИ-ассистенты прочно вошли в нашу рутину, но главная проблема при работе с ними — это потеря контекста и склонность ИИ «фантазировать», переписывая половину проекта ради одной мелкой фичи.
За время работы с Copilot-cli я выработал для себя железобебетонный рабочий процесс, который решает эти проблемы. В этой статье я поделюсь двумя инструментами, которые кардинально меняют качество генерации, и правилами (системным промтом), которые удерживают Copilot в строгих рамках.
Шаг 1. Сначала план, потом код: rfc-cli
Самая частая ошибка — сразу просить Copilot написать код. Без четкого плана ИИ быстро уходит в сторону. Поэтому первое, что я делаю перед тем, как вообще открыть чат и сделать промт — создаю RFC (Request for Comments).
Для этого я использую rfc-cli — отличный консольный инструмент для управления архитектурными решениями прямо в репозитории.
Мой воркфлоу с RFC:
- Создание: Я инициализирую новый документ через
rfc-cli new. - Проработка: Набрасываю структуру, цели и изменения.
- Жизненный цикл: Документ строго проходит цепочку статусов:
draft→review→accepted→implemented. Пропускать шаги нельзя. - Валидация: После любых правок я проверяю целостность через
rfc-cli check NNNN.
Когда Copilot подключается к задаче, у него перед глазами уже есть утвержденный accepted RFC. Это исключает споры о том, как именно должна работать фича. Кроме того, все RFC хранятся в проекте и всегда есть возможность понять, как и почему было принято каждое решение.
Шаг 2. Борьба с амнезией: mem-cli
Copilot-cli великолепен, но его контекстное окно не резиновое. Стоит начать новую сессию — и он забывает, что мы решили три часа назад, какие особенности у нашей базы данных или какие локальные соглашения мы используем.
Чтобы не терять данные между сессиями, я подключил mem-cli. Это простой, но чертовски эффективный MCP-сервер (Model Context Protocol), который работает как долговременная память.
Каждый раз, когда в процессе работы всплывает важный нюанс (например, “используем только порт 8080” или “компонент X временно не трогаем, он на рефакторинге”), я просто сохраняю этот факт в mem-cli. Copilot обращается к этой памяти и всегда остается в курсе реального положения дел в проекте.
Шаг 3. Свод правил (System Prompt) для Copilot
И последнее по списку, но не по важности — правила игры. Я скормил Copilot жесткий регламент, нарушать который ему строго запрещено. Мой системный промт разделен на три блока:
🛠 Код
Главная беда больших языковых моделей — оверинжиниринг. Чтобы Copilot не “умничал”, я установил для него жесткие рамки:
- Минимализм: Любое изменение должно быть минимально необходимым для решения конкретной задачи. Никаких побочных правок в соседних файлах.
- Запрет на самодеятельность: Не изменять архитектуру, не плодить дубликаты компонентов (использовать строго существующие) и не тащить в проект новые библиотеки/зависимости без явной и веской причины.
- Качество: Никакого дублирования кода.
🌿 Git Workflow
Здесь всё автоматизировано до предела. Copilot знает, как я веду ветки и делаю релизы (на примере Rust-проекта):
- Никакой работы в main: Все изменения только через ветки. Перед созданием новой ветки от
mainсоздается метка с префиксомpre_. - Дробление задач: Каждая фича — отдельный branch. Каждая подзадача — sub-branch в формате
phase-N/X.Y-description. - Контроль качества: Перед каждым коммитом — обязательный запуск тестов. Перед слиянием в
main— полный цикл:build+test+lint.mainвсегда должен оставаться абсолютно “зеленым”. - Релиз: Слияние происходит строго с флагом
--no-ff. Перед мержем обновляется версия вCargo.toml, пишется CHANGELOG.md на английском, а после успешного слияния вешается тегvX.Y.Z.
🧠 Стиль работы
- Автономия: Я не хочу, чтобы Copilot переспрашивал меня на каждом шаге: “А можно я создам этот файл?”. Он должен работать самостоятельно до полного завершения задачи.
- Осознанность: Перед стартом ИИ обязан прочитать RFC и PLAN (если они есть).
- Порядок: Каждый коммит должен быть с детальным и понятным описанием.
Заключение
Интеграция rfc-cli для планирования, mem-cli для долгосрочной памяти и свода правил для дисциплины превратила Copilot-cli из “продвинутого автодополнения” в полноценного, аккуратного и очень предсказуемого junior-разработчика, который пишет код именно так, как нужно мне.