Обновить

Как я перестал бояться Claude Code и научил его не ломать мои проекты

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели13K
Всего голосов 28: ↑25 и ↓3+29
Комментарии26

Комментарии 26

Благодарю за шаблоны, как раз сегодня начал разбираться с cli-инструменами.

При таком воркфлоу удаётся делать самостоятельное ревью каждой строки сгенерированного кода? И насколько это целесообразно? Или вы управляете качеством кода только через агентов, не заглядывая в код?

Хороший вопрос. Нет, каждую строку я не просматриваю — это убило бы весь смысл автоматизации.

Мой подход трёхуровневый:

Автоматический уровень — хуки и тесты. Если тесты проходят и code-reviewer агент не нашёл критических проблем — код скорее всего рабочий. Это фильтрует примерно 80% потенциальных багов без моего участия.

Выборочный ручной ревью — я смотрю diff перед коммитом (git diff), но не построчно, а на уровне «что изменилось, в каких файлах, соответствует ли это плану». Если вижу что Claude тронул файл, который не должен был трогать — откатываю. Это занимает пару минут.

Глубокий ревью — только для критичных мест: авторизация, работа с деньгами, миграции БД. Тут да, читаю каждую строку. Но таких изменений — 5-10% от общего объёма.

На практике: чем лучше написан CLAUDE.md и чем точнее план от planner-агента — тем меньше сюрпризов в коде и тем меньше нужно ручного ревью. Основные проблемы возникают не от плохого кода, а от того что Claude делает не то что нужно — удаляет тесты, рефакторит то, о чём не просили. CRITICAL RULES в CLAUDE.md решают именно это.

globs: ["**/*.py"]

Python Backend Rules

...

Интересно. Не в курсе - это грузится для каждого файла каждый раз или тоже подвержено компрессии?

Rules-файлы из .claude/rules/ ведут себя так же как CLAUDE.md — переживают compaction. После /compact Claude перечитывает их с диска заново.

Но есть нюанс с загрузкой. Они грузятся не «для каждого файла каждый раз», а по другой логике:

Файлы без globs (просто .md в .claude/rules/) загружаются в контекст при старте каждой сессии, как и CLAUDE.md.

Файлы с globs загружаются когда Claude начинает работать с файлами, соответствующими маске. То есть globs: ["**/*.py"] подтянется когда Claude откроет или отредактирует .py-файл, а не раньше.

В этом и смысл разделения: правила для Python не занимают контекст пока вы работаете с фронтендом, и наоборот. С 1M окном Opus 4.6 это менее критично, но при работе с Sonnet (200K) — ощутимая экономия.

Источник: официальная документация https://code.claude.com/docs/en/memory

То есть globs: ["**/*.py"] подтянется когда Claude откроет или отредактирует .py-файл, а не раньше.

Это понятно. Но вот перешли к другому .py-файлу, что происходит? Правило опять перечитывается?

Нет, правило не перечитывается при каждом переходе между .py-файлами. Оно загружается в контекст один раз — когда Claude впервые касается файла, подходящего под маску. После этого правило остаётся в контексте до конца сессии или до compaction. При compaction — перечитывается с диска заново, как и CLAUDE.md. То есть цикл такой: первый .py-файл в сессии — правило загрузилось — работаете с любыми .py — правило в контексте — compaction — правило перечитано — работаете дальше

Кажется — вам — надо — поставить — хук — или — что — там — этой — вундервафле — надо — чтобы — оно — перестало — спамить — тире — и — писало — по-русски — нормально.

Смотрю на это все, и накатывает тоска. Во что превращается любимая профессия. Если выбора не останется, то придется сменить род деятельности. Заниматься вот таким др***ом нет никакого желания.

Я, наверное, не тот автор от которого ожидается эмпатия к этой позиции — потому что я сам пришёл в программирование чуть больше пары лет назад и почти сразу с нейросетями. До этого 13 лет работал геологом (и сейчас продолжаю ездить в экспедиции). Код руками в классическом понимании не писал — начинал с сайтов на конструкторах, далее в low-code с написания кастомных функций в FlutterFlow и Google Cloud Functions, и почти с первого дня использовал AI как основной инструмент.

И знаете что — за этот год я отшипил больше продуктов чем многие «классические» разработчики за пять. Не потому что я умнее, а потому что инструменты позволяют.

Нейросети не отбирают работу у программистов. Они отбирают работу у тех, кто решил что учиться больше не нужно. IT-отрасль растёт в геометрической прогрессии — работы становится больше, а не меньше. Просто она другая. Кто адаптируется — тот в порядке. Это обычная эволюция, ничего нового.

Я согласен с вами почти во всем. Вот только описанный в статье процесс очень далек от программирования в классическом его понимании.

Работу у программиста все же отбирают. На его место придет оператор БЯМ. Это сейчас еще переходный период, но чем дальше, тем заметнее будет разница между этими двумя профессиями.

Попробую привести аналогию. Вы - страстный автолюбитель. Обожаете крутить баранку. Переключать скорость. Чувствовать руками весь процесс.

В один момент к вам приходят и говорят, что теперь вы будете ездить на заднем сидении, а повезет вас автопилот. Но расслабиться вы не можете, нужно постоянно контролировать автопилота, так как он в любой момент может намотать вас на столб. Будьте готовы вмешаться в любую секунду. В этот момент любимый процесс(вождение) превращается в ад(оператор автопилота).

Примерно такие у меня ощущения происходящего, моя персональная боль, и я прекрасно понимаю, что полно людей, которым эти изменения в кайф, которые с радостью пересядут на заднее сиденье.

Я бы привел такую аналогию:
- Разработчик - пешком
- Фреймворк - лошадь
- "ИИ" - снегоход.
У человека и лошади есть мозг, у снегохода нет, хотя по скорости он уделает обоих.

Про "продукты" за месяц - это самообман. Тонны нейрослопа - не продукт...

Вот только описанный в статье процесс очень далек от программирования в классическом его понимании.

Любопытно. А можно подробнее про "классическое понимание"? Вот есть, например, Guide to the Software Engineering Body of Knowledge

Содержание
  • Software requirements

  • Software architecture

  • Software design

  • Software construction

  • Software testing

  • Software engineering operations

  • Software maintenance

  • Software configuration management

  • Software engineering management

  • Software engineering process

  • Software engineering models and methods

  • Software quality

  • Software security

  • Software engineering professional practice

  • Software engineering economics

  • Computing foundations

  • Mathematical foundations

  • Engineering foundations

В каждой из этих областей Агенты работают как усилитель. Усиливается, в том числе, и глупость (например, по незнанию). Более близкая мне аналогия - экзоскелет. Если не знаешь, как грамотно колоть дрова - наломаешь дров, на все деньги. А если знаешь - будет быстрее, чем руками топором махать.

И знаете что — за этот год я отшипил больше продуктов чем многие «классические» разработчики за пять.

Это что за продукты такие которые за несколько месяцев можно "отпшпилить", если не секрет?

вы бы лучше промптами поделились. Промпты - это source code нового эпохи, искусство чистого промпта - новые принципы на смену "чистому коду"

спасибо, что вы описали мануал по Клоду, но все что вы описали - второстепенно и к тому же зависит от одной систему

Прежде всего рулят промпты и техники соединения их. Промпт имеет приоритет над любым AGENTS и CLAUDE.md, над любыми скиллами и MCP. Вот где самое интересное

О, Господи... Донни - жги!

Вы правы что промпты — фундамент. Но давайте уточним что такое «промпт» в контексте реальной работы.

Промпт с которым я прихожу в IDE начинать проект — это не раскрученное полотно на тему «хочу приложение как у тех только лучше». Это результат часто нескольких предварительных исследований, систематизации данных, продуманного инженерного архитектурирования. Он содержит ссылки на дополнительные файлы и документы, прикреплённые к проекту — спецификации, результаты ресёрча, архитектурные решения. Каждый такой вводный промпт индивидуален и создаётся отдельно от IDE.

Так вот — claude.md, agents и rules это и есть промпты, только персистентные. claude.md — системный промпт который не нужно повторять каждую сессию. Agent — промпт с изолированным контекстом. Rule — промпт с условием загрузки. Разница между «хорошим промптом в чате» и «промптом в claude.md» в том, что первый исчезнет после compaction, а второй переживёт. На длинных сессиях это критично.

Насчёт «перепечатки мануалов» — мануалы описывают что существует, статья описывает что из этого реально работает вместе и как это собрать в рабочий пайплайн. Это разные задачи.

про хуки хорошо но мало, особено от питон разработчика.

Согласен, хуки заслуживают отдельной статьи. Здесь показал только два базовых, но возможностей больше: PreToolUse для валидации перед любым действием, PostToolUse для автоформатирования, SessionStart для загрузки контекста из внешних источников, TaskCompleted для проверки что задача действительно завершена. Если будет интерес — распишу подробнее в одном из следующих материалов.

я думаю будет полезно если есть опыт. я не разработчик, но прописал в хуки "железные" правила которые ограничивают модель. Перехватывает каждое действие claude перед выполнением и блокирует нарушения правил из CLAUDE.md: запись в запрещеные каталоги, удаление файлов, em dashes в тексте, фейковые credentials. По сути механический enforcement того что модель может "забыть" или проигнорировать из instructions.

Спасибо за статью. Полезный материал.

Я еще прописываю что бы он фиксировал принятые решения и внесенные изменения в RELEASE.md

Отличная практика с release.md — по сути автоматический changelog который ведёт сам агент. Я использую похожий подход через planner-агента с сохранением планов в /plans/, но фиксировать принятые решения и внесённые изменения в отдельный файл — забираю к себе в сетап. Спасибо) 👍

Спасибо за статью.
До Claude пока ещё не добрался, но на Cursor хотелось бы видеть аналогичный подход. Может со временем он появится)

Спасибо вам за интерес! В Cursor часть из этого уже работает — .cursorrules выполняет роль claude.md, а агентный режим поддерживает похожие паттерны. Принципы те же: персистентные правила, план перед кодом, тесты после каждого шага. Инструмент другой — подход универсальный.

Спасибо за статью, очень полезный и своевременный материал.
Автор писши "исчо"! ;)

Спасибо за поддержку! Не остановлюсь — уже опубликовал вторую статью про statusline для Claude Code с мониторингом VPS, и дальше планирую продолжать делиться тем что реально работает в ежедневной практике. К примеру - вчера пока занимался одной задачей, параллельно собрал мощный workflow toolkit для работы с NotebookLM. По принципу - чувствуем где у самого провисание, ресерчим лучшие практики, берем работающий надежный инструмент, и добавляем к нему то что реально улучшит и ускорит работу. Об этом тоже расскажу в ближайших публикациях.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации