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 вообще на всё. Пусть про каждое движение спрашивает. Максимальная защита же!
— Стоп, — Лёха осаживает. — Вот это и есть ловушка. Называется усталость от подтверждений. Если агент дёргает на каждый пустяк — открыл файл? спроси. прочитал строчку? спроси — ты через двадцать минут начнёшь жать «да» не глядя, на автомате. И тут подтверждение умрёт как защита: оно работает, только пока ты его читаешь. А читать ты перестанешь, потому что задолбался.
Тёма примеряет на себя — и узнаёт собственную ночную привычку жать «да» на всё подряд. Теперь видно, откуда она растёт: не от глупости, а от усталости.
— То есть спрашивать про всё — это то же, что не спрашивать ни про что, — медленно говорит он. — Я просто перестану вчитываться.
— Именно. Поэтому наоборот: «спросить» оставляешь только там, где реально надо подумать. Безопасное пропускай свободно, опасное запрещай наглухо — чтоб и вопроса не было. Под вопрос — ровно пограничное, где цена ошибки велика и решать должен человек. Тогда каждое «спросить» ты читаешь всерьёз, потому что их мало.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ