Как найти нужный код в проекте — ищи по тому, что видно на экране

ИИ собрал тебе приложение. Сорок файлов, десяток папок, имена вроде utils, lib, components. Надо поменять текст на одной кнопке — и ты двадцать минут открываешь файлы наугад.
Хитрость в том, что дерево папок — худший вход в проект. Правильный вход другой: ищи по тому, что видишь на экране. Любая надпись из интерфейса — самая короткая дорога к нужной строке, потому что её точно кто-то где-то написал.
Шаг 1. Возьми уникальную надпись с экрана
Открой приложение и выпиши то, что видно рядом с нужным местом: текст кнопки, заголовок, подпись под полем, даже сообщение об ошибке.
Выбирай подлиннее и пореже. «Сохранить» встретится двадцать раз, «Сохранить черновик» — один. Если надписи нет совсем — годится необычный цвет из вёрстки или число, которое видно на экране.
Шаг 2. Ищи по всему проекту, а не по одному файлу
В редакторе это поиск по папке: Cmd+Shift+F на Mac, Ctrl+Shift+F на Windows. В терминале — одна команда:
grep -rn "Сохранить черновик" src/
-r — искать во вложенных папках, -n — показать номер строки. Ищи по src/, а не по корню проекта: иначе поиск уйдёт в node_modules и утонет в тысячах чужих файлов.
На выходе получится ровно то, что нужно: путь к файлу и номер строки. Это уже адрес.
Шаг 3. Если нашёлся не код, а перевод
Часто первый же поиск приводит не в компонент, а в файл переводов — ru.json, locales, messages. Это не тупик, а подсказка.
Рядом с найденной надписью будет её ключ, например draft.saveButton. Повтори поиск уже по ключу:
grep -rn "draft.saveButton" src/
Теперь ты попадёшь в сам компонент. Правило простое: нашёл текст — ищи ключ, нашёл ключ — нашёл код.
Шаг 4. Поднимись вверх по импортам
Файл найден, но его нужно увидеть в контексте: кто его использует и что ломается при правке.
Скопируй имя компонента (обычно совпадает с именем файла) и поищи его по проекту снова. Все совпадения без слова import — это места, где его вставили. В редакторе то же самое делает пункт «Find all references» из контекстного меню.
Если ищешь целую страницу, а не кусочек, работает обратный ход — от адреса. В большинстве современных фреймворков путь в браузере повторяет путь в папках: /settings/profile живёт в app/settings/profile/. Посмотри на URL — половина дела сделана.
Шаг 5. Отдай ИИ путь, а не описание
Вот здесь окупаются четыре предыдущих шага. Сравни два промпта:
Почини кнопку сохранения, она не работает.Первый промпт заставляет модель гадать и лазить по проекту самой — она найдёт похожий файл, поправит не тот и уйдёт в соседние. Второй даёт точку на карте, и правка выходит хирургической.
Это, кстати, главная причина, по которой агент правит не тот файл: не потому что глупый, а потому что ты не сказал, где искать, и он выбрал первое похожее. Точный путь стоит дешевле любых уточнений потом — подробнее про это в разборе как давать ИИ контекст о коде.
Что получится
Пять шагов занимают минуты три. Вместо «где-то в этом проекте есть нужная кнопка» у тебя на руках src/components/DraftEditor.tsx:84 — файл, строка и понимание, кто его зовёт.
Дальше правку делаешь либо сам, либо руками ИИ — но уже адресно, а не наугад. И побочный эффект приятнее самой правки: после десятка таких поисков ты начинаешь ориентироваться в проекте, который писал не ты. Это и есть момент, когда сгенерированный код становится твоим.
А если надписи нет — например, сломалась картинка?
Ищи по любому уникальному куску: имя файла картинки, CSS-класс, необычное число из настроек. Годится всё, что точно встречается в коде один-два раза.
Почему поиск по имени файла почти не помогает?
Потому что имена придумывает ИИ, и придумывает он их по-разному: DraftEditor, draft-form, EditorPanel — три названия для одного экрана в одном проекте. Надписи для пользователя стабильнее имён файлов, поэтому и ищут по ним.
Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.





