WorkAI

Инструмент: Поиск по коду

Как агент WorkAI ищет по коду через ripgrep-подобный grep_search, file_search и семантический vector_search, и что при этом происходит с вашими данными.

Чтобы отвечать на вопросы о вашем коде и вносить правки в нужных местах, агенту нужно быстро находить код. Для этого у него есть три нативных инструмента поиска.

grep_search — это ripgrep-подобный инструмент: агент вызывает его сам, когда вы упоминаете конкретную функцию, переменную, текст ошибки или паттерн, и ему нужно найти все места, где это встречается в проекте.

У инструмента есть несколько режимов:

  • content — вернуть сами совпадающие строки;
  • files_with_matches — вернуть только список файлов, где есть совпадение, без содержимого;
  • count — вернуть количество совпадений.

Агент сам выбирает подходящий режим: если ему важно место и контекст — берёт content с контекстными строками вокруг совпадения; если нужно только понять масштаб (сколько файлов затронуто) — files_with_matches или count, чтобы не тратить контекст на лишний текст.

Как и в терминале, поиск — это read-only операция: grep_search не требует подтверждения и может выполняться параллельно с другими такими же безопасными вызовами, не блокируя диалог.

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

Третий инструмент, vector_search, ищет не по точному тексту, а по смыслу: агент формулирует запрос на естественном языке («где реализован интерфейс MyInterface на фронтенде») и получает фрагменты кода, релевантные по смыслу, даже если в них нет ни одного слова из запроса.

Это пригодится, когда вы не знаете точное имя функции или файла, а описываете задачу или незнакомую часть кодовой базы своими словами — там, где grep_search бессилен, потому что не за что зацепиться текстовым паттерном. Агент прибегает к нему, в частности, при первом знакомстве с проектом и при работе с большими файлами, чтобы не читать их целиком.

Технически vector_search устроен иначе, чем grep_search и file_search: он ищет не по файлам на диске напрямую, а по индексу эмбеддингов кода, который WorkAI строит и хранит на бэкенде. Инструмент входит в стандартный набор агента, включая бесплатный тариф.

Как агент выбирает инструмент

Обычно вы не вызываете поиск напрямую — агент сам решает, когда и что искать, разбирая вашу задачу. Если вы называете точный идентификатор (имя функции, класс, текст ошибки) — скорее всего, он пойдёт через grep_search; если говорите про файл по имени — через file_search; если описываете задачу или незнакомую область кода своими словами, без точных названий, — через vector_search. Явно управлять выбором инструмента не нужно, но вы всегда можете подсказать в промпте, что и где искать, если знаете область поиска лучше агента.

Приватность

grep_search и file_search — это обычные текстовые инструменты, которые ищут по файлам в вашей рабочей копии на диске, а не по отдельному облачному индексу кода. vector_search устроен иначе: он опирается на индекс эмбеддингов вашего кода, который строится и хранится на бэкенде WorkAI, а не только локально. Содержимое, которое агент решает включить в контекст по результатам любого из трёх инструментов поиска, передаётся модели как часть диалога — как и любой другой код, который агент читает для работы над задачей. Общие принципы обработки данных в WorkAI (хранение в РФ и т.д.) — вне рамок этой страницы.