# Репозитории проекта

> Модель в Buff Code ищет и читает код проекта в Buff без клона на машине: поиск файлов, поиск по содержимому и чтение по любой ветке, только на чтение.

Проект разработки в Buff — это [пул репозиториев](/docs/repositories). Модель в Buff Code видит
их все, даже если на машине разработчика лежит только один из них или вообще другой код:
инструменты сервера **repos** ищут и читают по копии проекта в Buff.

Зачем это нужно: микросервис рядом, общая библиотека, конфигурация в соседнем репозитории —
модель заглядывает туда сама, вместо того чтобы гадать о «соседнем» коде.

## Инструменты

| Инструмент | Что делает |
| --- | --- |
| `repos_glob` | найти файлы по маске в коде проекта: каталог, скрытые файлы, число результатов |
| `repos_grep` | найти строки по регулярному выражению или точному тексту, с маской файлов |
| `repos_read` | прочитать файл или каталог: строки пронумерованы, большой файл — частями |

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

Документы Word, Excel, PowerPoint и PDF из репозитория читаются текстом — как в
[«Спросить»](/docs/ask).

_Иллюстрация: Разработчик спросил, что лежит в репозиториях проекта. Модель прочитала их в Buff — на машине разработчика этого кода нет — и ответила таблицей._

## Свои файлы и файлы проекта

Модель различает два места:

- **своя рабочая папка** — обычные инструменты Buff Code: читает, правит, запускает;
- **проект в Buff** — инструменты `repos_*`: только чтение, пути от корня репозитория.

Правки идут только в рабочую папку. Ничего в репозитории Buff из Buff Code не меняется —
для изменений в проекте есть [задачи](/docs/tasks) и ваш обычный git.

## Что нужно

- **Выбранный проект** в [рабочем контексте](/docs/buff-code/sign-in). Без проекта модель
  получит «Сначала выберите проект в рабочем контексте Buff Code (/project)».
- [Коннектор](/docs/connector) **v0.15.0** или новее.
- Доступ разработчика к этому проекту в Buff.

## Как это считается

Вызовы `repos_*` — чтение, они не стоят токенов и не попадают в журнал аудита, как и чтение
кода в кабинете. Результаты вызовов записываются в [сессии разработки](/docs/buff-code/sessions)
вместе с ответом модели.

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