JavaRush /Курсы /Claude Code SELF /Дифф как ворота качества

Дифф как ворота качества

Claude Code SELF
15 уровень , 3 лекция
Открыта

1. Дифф — это ворота, а не подсветка

— Окей, три ящика я понял, — говорит Тёма. — А руками-то я их где разбираю? Где этот дифф вообще смотреть?

Лёха открывает терминал.

— Пару дней назад ты уже научился смотреть изменения перед тем, как комитить их. Пролистнуть, кивнуть «вроде ок». Теперь следующий уровень: не пролистнуть, а разобрать каждое изменение по существу. Команда та же:

/diff       # показать все изменения — идём по каждому куску отдельно

— Только теперь глаз не скользит, — продолжает Лёха. — Ты сам сказал: в чужом коде скольжение опасно. Идёшь по диффу медленно, и по каждому куску один вопрос — про задачу или «заодно»? — и раскладываешь по тем трём ящикам:

✓ целевая правка                              → это и просил
✗ переформатировал полфайла «заодно» (лишнее)  → мимо задачи
✗ тронул соседнюю зону вне scope (опасное)     → мимо задачи
? добавил непрошеную анимацию (неожиданное)    → не заказывал; на чужом — мимо

— И вот тут важное, как это работает руками, — Лёха останавливает. — /diff тебе всё показывает, но выковырять из него один кусок и оставить остальное он не даёт — не для того сделан. Это окно осмотра, а не хирургический стол. Поэтому решение у тебя не «принять эту строчку, отклонить ту». Решение крупнее: если в диффе хвост — весь заход кривой. Ты его не берёшь целиком и просишь агента переделать узко, ровно по границе.

— То есть я не куски по одному отсеиваю, — соображает Тёма. — Я по диффу ВИЖУ, что заход расползся, — и заворачиваю весь. А потом ставлю задачу теснее, чтоб хвоста и не было.

— Именно. Дифф — это ворота качества: ты на них вахтёр. Увидел лишнее — заход не проходит, разворачиваешь и переделываешь чище. Не чинишь кривой дубль по кусочку, а не пускаешь его вовсе. И вот это уже не «дифф показал» — это дифф тебя спрашивает, впускать заход или нет. А отвечаешь ты, не агент.

Тёма проговаривает своё:

— Раньше дифф мне показывал «вот тут поменялось». А теперь по нему я решаю: этот заход в проект или назад на переделку.

— Вот. И чем точнее ты потом переформулируешь задачу, тем чище придёт следующий дифф — и заворачивать будет уже нечего.

2. Когда проще откатить весь заход

— А если Саня так широко напортачил, что чистить руками каждый кусок — задолбаешься? — спрашивает Тёма. — Реально же бывает, что он полфайла перелопатил.

— Бывает. Тогда не мучайся, — Лёха показывает. — Не вылавливай сто мелких кусков по одному. Снимаешь весь заход разом:

/rewind     # откатить расползшийся заход целиком и зайти заново аккуратнее

— Твоя самая первая кнопка курса, помнишь? — добавляет Лёха. — Жива и полезна, но теперь это ближняя страховка сессии — убрать один неудачный заход. Не единственная сетка, а верхняя из нескольких: под ней ещё ветка в git, которую ты недавно изучал.

Тёма кивает. Когда-то думал, эта кнопка спасёт от чего угодно. Теперь видит её честное место.

3. Режим доверия под риск

— Слушай, а можно как-то заранее, чтоб он вообще в чужое не лез? — Тёма хочет не ловить хвост каждый раз, а перекрыть на входе. — А то я устал за ним подчищать.

— Можно. Половина успеха — выбрать правильный режим заранее, — Лёха переключается. — Помнишь "руль доверия" на прошлой неделе? Раньше крутил по привычке. Теперь — по цене ошибки. И первое, что делаешь на чужом коде, — НЕ доверяешь вслепую.

— У Claude Code есть 3 режима работы:

  • manual - ИИ спрашивает разрешение на любое действие с файлами на диске
  • acceptEdits - редактирование разрешено.
  • plan mode - вообще на диске ничего менять нельзя. Занимаемся только планированием работы.

Переключать их можно с помощью комбинации клавиш "Shift+Tab".

— Давай я объясню каждый из них, — продолжает Лёха. — manual — «показывай каждое изменение файла и спрашивай, прежде чем тронуть». В командах он же default: --permission-mode default. Есть режим побыстрее, acceptEdits: агент правит файлы в проекте сам и не дёргает. В своём коде хорош, не страшно. На чужом — враг: агент кучу всего натворит, а ты и не увидишь. Поэтому в чужой квартире — manual, видим каждый шаг.

— И правило тут одно, — добавляет Лёха, — настрой руль по риску, а не по привычке. Безопасное — чтение файлов, прогон тестов — пусть идёт свободно. Опасное — правки в чужой зоне — строго под контролем. А пограничное пусть спрашивает.

4. Точечные правила прав в settings.json

— А каждый раз читать что ИИ спрашивает и отвечать — не задолбает? — Тёма ищет, как упростить работу.— Чем больше вопросов он задает, тем менее внимательно я их читаю.

— Не задолбает, одно и то же можно прописать один раз, — Лёха открывает настройки. — Чтоб не решать заново на каждом шаге, что под спрос, а что под запрет, можно записать все правила в .claude/settings.json:

{
  "permissions": {
    "ask":  ["Edit(src/partner/**)"],
    "deny": ["Edit(legacy/**)"]
  }
}

— Давай объясню что тут написано, — продолжает Лёха. — Edit — «агент правит файл», в скобках — где. src/partner/** — вся папка src/partner со всем внутри, твоя сегодняшняя рабочая зона, любые правки там — спрашивать. А legacy/ — это старый, давно замороженный кусок портала, который трогать нельзя вообще; ставишь его в deny — и там правки запрещены наглухо, агент даже не предложит. Бьёт точечно по путям, а не «всё разрешаю» или «всё запрещаю».

Тёма смотрит на две строчки и сам, догадавшись, достраивает третью корзину:

— То есть мы можем заранее пометить папки? Опасное — в deny. Пограничное — в ask. А безопасное нигде не пишу — оно проходит свободно, как allow по умолчанию. Три корзины: запретить, спросить, разрешить.

— Именно так. Только держи в голове, — добавляет Лёха, — это пока руль плюс несколько правил под конкретные пути. Полноценная система прав, где вся политика проекта расписана заранее как закон, — отдельная взрослая тема будет потом. И синтаксис со временем меняется — держись не за скобки, а за логику: запретить / спросить / разрешить.

5. Почему «спрашивать про всё» убивает защиту

Тёму осеняет, как ему кажется, гениальное:

— О! Так давай я тогда поставлю ask вообще на всё. Пусть про каждое движение спрашивает. Максимальная защита же!

— Стоп, — Лёха осаживает. — Вот это и есть ловушка. Называется усталость от подтверждений. Если агент дёргает на каждый пустяк — открыл файл? спроси. прочитал строчку? спроси — ты через двадцать минут начнёшь жать «да» не глядя, на автомате. И тут подтверждение умрёт как защита: оно работает, только пока ты его читаешь. А читать ты перестанешь, потому что задолбался.

Тёма примеряет на себя — и узнаёт собственную ночную привычку жать «да» на всё подряд. Теперь видно, откуда она растёт: не от глупости, а от усталости.

— То есть спрашивать про всё — это то же, что не спрашивать ни про что, — медленно говорит он. — Я просто перестану вчитываться.

— Именно. Поэтому наоборот: «спросить» оставляешь только там, где реально надо подумать. Безопасное пропускай свободно, опасное запрещай наглухо — чтоб и вопроса не было. Под вопрос — ровно пограничное, где цена ошибки велика и решать должен человек. Тогда каждое «спросить» ты читаешь всерьёз, потому что их мало.

1
Задача
Claude code, 15 уровень, 3 лекция
Недоступна
Терминальный выбор orchestration pattern
Терминальный выбор orchestration pattern
1
Задача
Claude code, 15 уровень, 3 лекция
Недоступна
Создание agent pipeline diagram
Создание agent pipeline diagram
Комментарии
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ