DeepDigest
Analytics Vidhya · · ~10 мин

Claude Code: как эффективно работать с моделью — 3 важных урока

Anthropic изучил 400 тыс. сессий работы с Claude и выявил ключевые факторы успешного взаимодействия. Эффективность зависит не от модели, а от умения пользователя формулировать запросы и проверять результаты. Важны точность указания деталей задачи, использование проверок и грамотное управление контекстом. Исследование показало разницу в работе новичков и экспертов.

LLM
Claude Code: как эффективно работать с моделью — 3 важных урока

Компания Anthropic провела масштабное исследование работы с Claude, проанализировав около 400 тыс. сессий от более чем 235 тыс. пользователей. Успешность взаимодействия оценивали по нескольким критериям: прохождение тестов, коммиты и подтверждение пользователей, что они получили нужный результат.

Исследователи выяснили, что эффективность взаимодействия с Claude зависит не столько от самой модели, сколько от поведения пользователя. В ходе изучения были выделены три ключевых параметра: точность формулировки указаний, проверка перед тем, как доверить результат, и направление коррекции (кто кого корректирует — пользователь Claude или наоборот).

Важно понимать, что экспертность в работе с Claude определяется конкретной задачей. Например, старший инженер, который задаёт первый вопрос по Rust, будет новичком в этом языке, а бухгалтер, который точно указывает правила сверки и замечает ошибки Claude, — экспертом в своей задаче.

Наблюдения за сессиями показали разницу между новичками и экспертами. В сессиях новичков каждое приглашение инициировало около пяти действий Claude и примерно 600 слов вывода. В экспертных сессиях количество действий достигало около двенадцати, а объём вывода — 3200 слов. При этом разница заключалась не в длине приглашения, а в том, содержит ли оно информацию, которую Claude не может вывести самостоятельно (например, какие файлы и сценарии использовать, что считать выполненным заданием).

Вот несколько примеров улучшенных приглашений:
* вместо «add tests for foo.py» — «write a test for foo.py covering the case where the user is logged out. avoid mocks»;
* вместо «why does ExecutionFactory have such a weird api?» — «look through ExecutionFactory’s git history and summarise how its api came to be»;
* вместо «add a calendar widget» — «look at how existing widgets work on the home page. HotDogWidget.php is a good example. follow that pattern for a calendar widget with month select and year pagination. no new libraries»;
* вместо «fix the login bug» — «users report login fails after session timeout. check src/auth/, especially token refresh. write a failing test that reproduces it, then fix it».

Чтобы повысить эффективность работы, можно использовать следующие подходы:
* напрямую передавать Claude файлы, а не описывать их расположение;
* предоставлять Claude URL для документации API, чтобы он сам извлекал нужные данные;
* использовать /permissions для списка доменов, к которым часто обращаются.

Инструменты, которые доступны Claude, напрямую влияют на точность его действий. Особенно эффективны CLI-инструменты — они дают доступ к внешним сервисам. Например, при работе с GitHub стоит установить gh CLI: тогда Claude сможет с его помощью открывать задачи, создавать pull request и читать комментарии. То же самое касается aws, gcloud и sentry-cli.

Для сервисов, у которых нет хорошего CLI, подойдут MCP-серверы. Руководство connecting MCP servers with Claude описывает настройку Claude Desktop и Claude Code.

При работе над крупными задачами стоит сначала провести «интервью» с Claude. Вместо того чтобы составлять длинную спецификацию, попросите модель извлечь её из вас (```
I want to build [brief description]. Interview me in detail using
the AskUserQuestion tool.

Ask about technical implementation, UI/UX, edge cases, concerns, and
tradeoffs. Don't ask obvious questions, dig into the hard parts I
might not have considered.

Keep interviewing until we've covered everything, then write a
complete spec to SPEC.md.
```). Так вы сможете выявить решения, которые иначе обнаружились бы только в процессе реализации. После составления спецификации начинайте новую сессию для реализации — это обеспечит чистый контекст и письменный документ для работы.

Хорошие спецификации должны включать:
* названия задействованных файлов и интерфейсов;
* указание того, что выходит за рамки задачи;
* сквозную проверку, которая подтверждает работоспособность функции.

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

Weak: no way to know when it is done

implement a function that validates email addresses

Strong: the check is in the prompt

write a validateEmail function. test cases: [email protected] is true,
'invalid' is false, '[email protected]' is false. run the tests after
implementing.
```).

Существует четыре уровня строгости проверки работы:
1. В одном запросе: попросите Claude запустить проверку и итерировать в том же сообщении (не требует настройки).
2. В рамках сессии: задайте проверку как условие /goal — оценщик будет перепроверять после каждого хода, а Claude продолжит работу, пока условие не будет выполнено (низкая стоимость настройки).
3. В качестве жёсткого ограничения: Stop hook запускает проверку как скрипт и блокирует завершение хода, пока проверка не будет пройдена (средняя стоимость настройки, требуется один скрипт).
4. Второе мнение: вспомогательный агент проверки или динамический рабочий процесс использует новую модель, чтобы опровергнуть результат (средняя стоимость настройки).

Claude Code завершает ход после 8 последовательных блокировок — таким образом модель не будет зацикливаться, если проверка никогда не будет пройдена.

Чтобы ускорить работу, просите Claude показывать вывод теста, выполненную команду и полученный результат или скриншот результата — это быстрее, чем проверять всё самостоятельно.

Независимая проверка особенно важна, когда Claude работает без вашего участия. Рецензент в контексте вспомогательного агента видит только разницу и заданные вами критерии, а не рассуждения, которые привели к изменению. Поэтому он оценивает результат самостоятельно (
Use a subagent to review the rate limiter diff against PLAN.md.
Check that every requirement is implemented, the listed edge cases
have tests, and nothing outside the task's scope changed.
Report gaps, not style preferences.
).

Поскольку рецензент — субагент, результаты возвращаются в тот же сеанс. Claude может исправить их и перепроверить без копирования текста между окнами. Есть навык /code-review — он проверяет текущий diff на ошибки в новом субагенте. Рецензент, которому поручено найти пробелы, обычно сообщает о них даже при корректной работе. Попросите его отмечать только пробелы, которые влияют на корректность или заявленные требования.

Среди сеансов с реальными проблемами 19 % с оценкой «новичок» были полностью заброшены (без написания строк кода), против 5–7 % у остальных — это разница в восстановлении после проблем.

Для коррекции работы с Claude можно использовать такие команды:
* Esc — остановить Claude в процессе действия (контекст сохраняется);
* Esc Esc или /rewind — открыть меню перемотки, восстановить беседу, код или оба;
* «undo that» — заставить Claude отменить собственные изменения;
* /clear — полностью сбросить контекст между несвязанными задачами.

Существует правило двух коррекций: если вы исправили Claude более двух раз по одной проблеме в одном сеансе, остановитесь. Запустите /clear и начните заново с более точным запросом.

Контекстное окно заполняется быстро, и качество вывода падает по мере заполнения: когда окно заполнено, Claude начинает забывать предыдущие инструкции и совершать больше ошибок. Чтобы управлять контекстом, можно использовать такие команды:
* /clear — между несвязанными задачами;
* /compact <instructions> — когда нужна история, но её нужно сократить (например, /compact Focus on the API changes);
* /context — чтобы увидеть, что фактически загружено и сколько это стоит;
* /btw — побочные вопросы (ответ появится во всплывающем окне и не попадёт в историю);
* Esc Esc затем Summarize — сократить часть беседы от выбранной точки или до неё.

Можно указать Claude, как сокращать информацию: строка «when compacting, always preserve the full list of modified files and any test commands» в CLAUDE.md сохранит нужные детали при суммировании.

Субагенты — мощный инструмент для управления контекстом: они исследуют код в отдельном окне и сообщают резюме, а не сотни файлов.

<<<CODE_Block_14>>>

Работа с Claude состоит из четырёх фаз: explore (исследование), plan (планирование), implement (реализация), commit (фиксация). Важно сохранять их раздельность.

В режиме планирования (plan mode) Claude читает и отвечает, но ничего не меняет. Чтобы внести изменения в план перед тем, как Claude начнёт действовать, нужно нажать Ctrl+G — откроется план в редакторе.

Планирование можно пропустить, если изменение можно описать одним предложением (например, исправление опечаток, строк лога, переименование переменной). Оно оправдано в таких случаях:
* нет уверенности в подходе;
* изменение затрагивает несколько файлов;
* плохо знаком с изменяемым кодом.

Среди распространённых паттернов ошибок в сессиях можно выделить:
* Kitchen sink session (смешение задач) — используйте /clear между несвязанными задачами;
* Correcting in circles (цикличное исправление ошибок) — после двух неудачных исправлений используйте /clear и переформулируйте запрос;
* Over-specified CLAUDE.md (слишком длинный файл с правилами) — удаляйте ненужные правила, обрабатывайте CLAUDE.md как код: регулярно сокращайте и проверяйте изменения;
* Trust-then-verify gap (реализация без учёта крайних случаев) — всегда предоставляйте проверку;
* Infinite exploration (бесконечное исследование без рамок) — чётко определяйте рамки задачи или делегируйте суб агенту.

Для рецензирования кода и написания тестов используйте раздельные сессии: одна сессия — реализация, другая — рецензирование (без знания рассуждений реализации). При масштабных миграциях распределите работу на множество отдельных вызовов, а не выполняйте всё в одной длинной сессии. Сначала протестируйте на 2–3 файлах, скорректируйте запрос по результатам, затем выполните полный набор. Флаг –allowedTools имеет значение, так как никто не следит за каждым вызовом.

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

Источники данных: <<<CODE_Block_19>>>, источники паттернов: <<<CODE_Block_20>>>.

Чтобы повысить эффективность работы с Claude, добавляйте в промпт тестовые случаи, команду сборки или критерии сравнения и просите модель запустить их и выполнить итерации. Так пользователь переходит от цикла проверки к роли рецензента доказательств.

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

Lesson 1: Precision in How You Ask

Lesson 2: Give Claude Something It Can Check

Lesson 3: Who Ends Up Correcting Whom

The Workflow That Ties All Three Together

Five Ways Sessions Go Wrong

Scaling Past One Session

The Part That Stayed With Me

Frequently Asked Questions

# Reference a file inline, Claude reads it before answering
> explain the token refresh logic in @src/auth/session.ts

# Pipe data straight in, works on files outside the project
cat error.log | claude -p "group these errors by root cause"

# Paste or drag an image directly into the prompt
> [screenshot] implement this design
Use 'foo-cli-tool --help' to learn about foo tool, then use it to
solve A, B, C.
Use subagents to investigate how our authentication system handles
token refresh, and whether we have existing OAuth utilities I
should reuse.
claude --permission-mode plan

> read /src/auth and understand how we handle sessions and login.
 also look at how we manage environment variables for secrets.

> I want to add Google OAuth. What files need to change?
 What's the session flow? Create a plan.
> implement the OAuth flow from your plan. write tests for the
 callback handler, run the test suite and fix any failures.

> commit with a descriptive message and open a PR

Claude Skills Explained

# 1. Have Claude generate the task list first
# 2. Then loop, one invocation per file

for file in $(cat files.txt); do
 claude -p "Migrate $file from React to Vue. Return OK or FAIL." \
 --allowedTools "Edit,Bash(git commit *)"
done

Anthropic’s research on agentic coding and returns to expertise

official Claude Code best practices documentation

// оригинал
Analytics Vidhya ↗ Читать оригинал
8 просмотров
// поделиться Telegram VK