---
title: "Файлы"
id: "343"
type: "page"
slug: "files"
published_at: "2026-05-19T11:30:45+00:00"
modified_at: "2026-07-08T14:49:06+00:00"
url: "https://pastukhov.com/agent/docs/files"
markdown_url: "https://pastukhov.com/agent/docs/files.md"
excerpt: "Диалоговое окно «Файлы» предоставляет комплексный интерфейс для управления файлами проекта прямо в браузере. Просматривайте структуру…"
---

# Файлы

[https://pastukhov.com/agent/docs/files.md](https://pastukhov.com/agent/docs/files.md)

Диалоговое окно «Файлы» предоставляет комплексный интерфейс для управления файлами проекта прямо в браузере. Просматривайте структуру файлов, редактируйте код, создавайте новые файлы и папки, переименовывайте элементы, перемещайте содержимое между папками и удаляйте ненужные файлы — всё в одном удобном интерфейсе.

## Открытие диалогового окна «Файлы»

Откройте диалоговое окно «Файлы», нажав кнопку «Файлы» в области ввода сообщений или на панели Git. Диалог также открывается при нажии на значок редактирования файла на панели Git, кнопки «Редактировать файл» в представлении diff или когда Claude редактирует файл через сообщения инструментов.

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

При открытии с панели Git или из сообщения инструмента диалог автоматически выбирает и отображает соответствующий файл. В противном случае он открывается с последним просмотренным файлом или с выбором по умолчанию.

### Открытие файлов с панели Git:

- **Значок редактирования** — У каждого файла на панели Git есть значок ручки; нажмите его, чтобы открыть этот файл в диалоге «Файлы»
- **Кнопка «Файлы»** — На панели Git есть своя кнопка «Файлы», которая открывает диалог в корне проекта
- **Редактировать файл в diff** — В представлении diff Git есть кнопка «Редактировать файл», которая открывает изменённый файл в редакторе

### Просмотр файлов в диалоге «Навыки»:

Диалог «Навыки» включает собственный просмотрщик файлов для просмотра и редактирования файлов, связанных с навыками (например, `SKILL.md`), отдельно от диалога «Файлы».

## Дерево файлов

Дерево файлов слева от диалогового окна «Файлы» отображает всю структуру проекта в иерархическом сворачиваемом формате. Папки отображаются со значками, указывающими, развернуты они или свёрнуты, а файлы показывают значки в зависимости от их типа.

### Навигация по дереву:

- **Нажмите на папку**, чтобы развернуть или свернуть её содержимое
- **Нажмите на файл**, чтобы открыть его в панели редактора справа
- **Дважды нажмите на папку**, чтобы развернуть её и одновременно просмотреть её свойства

### Клавиатурные сокращения:

- **Клавиши со стрелками** — Перемещение вверх и вниз по файлам и папкам
- **Enter** — Открыть выбранный файл или развернуть/свернуть выбранную папку
- **Delete** — Удалить выбранный файл или папку (с подтверждением)
- **+ (плюс)** — Развернуть выбранную папку
- **— (минус)** — Свернуть выбранную папку
- **F2** — Переименовать выбранный файл или папку

Дерево файлов сохраняет состояние развёртывания, поэтому при закрытии и повторном открытии диалога папки остаются развёрнутыми или свёрнутыми в соответствии с вашим последним взаимодействием. Это позволяет легко сохранить предпочтительный вид структуры проекта.

## Редактор файлов

Редактор файлов справа от диалогового окна «Файлы» предоставляет полный набор функций для редактирования кода прямо в браузере. При выборе файла из дерева его содержимое появляется в редакторе, готовое для просмотра и изменения.

### Функции редактора:

- **Подсветка синтаксиса** — Код цветом кодируется на основе языка программирования, что упрощает чтение и понимание структуры
- **Номера строк** — Отображаются вдоль левого края для удобства ссылки при обсуждении конкретных строк
- **Автосохранение** — Изменения сохраняются автоматически при вводе, предотвращая случайную потерю данных
- **Счётчик токенов** — Счётчик внизу редактора отображает текущее количество токенов для файла, полезно для понимания ограничений использования API
- **Выбор темы** — Выберите из нескольких цветовых тем (светлая, тёмная или высококонтрастная) в соответствии с вашими визуальными предпочтениями

Редактор поддерживает стандартные операции редактирования текста, включая ввод, удаление, выбор текста, копирование, вставку и отмену/повтор. Вы также можете использовать клавиатурное сокращение **Ctrl+S** (или **Cmd+S** на Mac) для ручного сохранения изменений в любое время, даже если включено автосохранение.

Большие файлы загружаются эффективно, и редактор остаётся отзывчивым даже со значительными кодовыми базами. Подсветка синтаксиса адаптируется автоматически на основе расширения файла, поэтому TypeScript, JavaScript, Python, HTML, CSS и другие языки отображаются правильно без ручной настройки.

## Запуск скриптов

При открытии shell-скрипта (файла `.sh`) в редакторе в заголовке редактора появляется кнопка «Запустить». Нажмите её, чтобы выполнить скрипт — вывод отображается в реальном времени в диалоговом окне «Вывод скрипта».

### Диалоговое окно «Вывод скрипта»:

Диалог показывает имя скрипта, репозиторий, к которому он принадлежит, и счётчик прошедшего времени в заголовке. Вывод появляется строка за строкой по мере выполнения скрипта с автоматической прокруткой к последнему выводу. Если вы прокрутите вверх для просмотра предыдущего вывода, автопрокрутка приостанавливается и появляется кнопка прокрутки вниз.

- **Кнопка «Копировать»** — Копирует полный вывод в буфер обмена. Отключена во время выполнения скрипта для предотвращения неполных копий
- **Кнопка «Остановить»** — Анимированная кнопка остановки в заголовке завершает скрипт. Закрытие диалога также останавливает выполнение
- **Звук завершения** — Звук воспроизводится при завершении скрипта, поэтому вы получите уведомление, даже если диалог не сфокусирован

### Подсветка синтаксиса вывода:

Вывод скрипта автоматически анализируется и подсвечивается с использованием правил, определённых в файле `output.parser`, расположенном в каталоге `.pastukhov/` вашего проекта. Строки, соответствующие шаблонам ошибок, подсвечиваются красным, а шаблоны предупреждений — оранжевым. Тот же формат парсера используется для вывода сборки (`build.parser`) и вывода развёртывания (`deploy.parser`).

Файл парсера использует простой формат с блоками `[ERROR]` и `[WARNING]`, каждый из которых содержит регулярные выражения, применяемые к отдельным строкам. Для многострочных шаблонов (например, трассировок Python) заключите регулярное выражение в двойные фигурные скобки: `{{regex}}`. Строки, начинающиеся с `#`, являются комментариями.

```
# Shell command not found
[ERROR]
.*command not found
[/ERROR]

# Python traceback (multi-line)
[ERROR]
^Traceback \(most recent call last\)\:
{{.*}}
[/ERROR]
```

Редактируйте файл `output.parser` в диалоге «Файлы», чтобы настроить подсветку строк. Изменения вступят в силу при следующем выполнении скрипта — перезапуск сервера не требуется.

## Создание файлов и папок

Добавляйте новые элементы в свой проект с помощью панели инструментов в верхней части диалогового окна «Файлы» или контекстного меню при нажатии правой кнопкой мыши. Оба метода предоставляют одинаковые функции, поэтому выберите тот, который более удобен для вашего рабочего процесса.

### Чтобы создать новый файл:

- Нажмите кнопку «Новый файл» на панели инструментов или нажмите правой кнопкой мыши в дереве файлов и выберите «Новый файл»
- Появится диалоговое окно с предложением ввести имя файла
- Введите имя, включая расширение (например: `helper.ts` или `styles.css`)
- Если вы хотите создать файл внутри определённой папки, укажите путь (например: `src/utils/helper.ts`)
- Нажмите Enter или кнопку «Создать» для подтверждения

### Чтобы создать новую папку:

- Нажмите кнопку «Новая папка» на панели инструментов или нажмите правой кнопкой мыши в дереве файлов и выберите «Новая папка»
- Появится диалоговое окно с предложением ввести имя папки
- Введите имя папки (например: `components` или `tests`)
- Для создания вложенных папок используйте прямые слэши (например: `src/components/ui`)
- Нажмите Enter или кнопку «Создать» для подтверждения

При создании нового файла редактор автоматически открывает его, чтобы вы могли начать добавлять содержимое. Новые папки появляются в дереве файлов и могут быть развёрнуты для отображения их содержимого (изначально пустого). Система автоматически проверяет имена файлов, чтобы убедиться, что они не содержат недопустимых символов и не конфликтуют с существующими элементами в том же месте.

## Переименование файлов и папок

Переименовывайте файлы и папки для лучшей организации проекта или исправления ошибок в именах. Операция переименования обновляет имя элемента, сохраняя его содержимое и расположение в иерархии.

### Чтобы переименовать элемент:

1. Выберите файл или папку в дереве файлов, нажав на них один раз
2. Нажмите клавишу **F2** или нажмите правой кнопкой мыши и выберите «Переименовать» в контекстном меню
3. Появится диалоговое окно с текущим именем с выделенным текстом
4. Введите новое имя (для файлов включите расширение)
5. Нажмите Enter или кнопку «Переименовать» для подтверждения изменения

Система проверяет новое имя, чтобы убедиться, что оно не конфликтует с существующими элементами в той же родительской папке. Если вы попытаетесь переименовать файл в имя, которое уже существует, операция не удастся, и вы увидите сообщение об ошибке, объясняющее конфликт.

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

## Перемещение файлов и папок

Перемещайте файлы и папки в другие места вашего проекта для реорганизации структуры. Эта операция перемещает элемент, сохраняя его содержимое и свойства.

### Чтобы переместить элемент:

1. Выберите файл или папку в дереве файлов, нажав на них один раз
2. Нажмите правой кнопкой мыши и выберите «Переместить» в контекстном меню
3. Появится диалоговое окно выбора папки, показывающее структуру вашего проекта
4. Перейдите по дереву, чтобы найти папку назначения
5. Нажмите на папку назначения для её выбора, затем нажмите «Переместить» для подтверждения

При перемещении папки всё её содержимое (файлы и подпапки) перемещается вместе с ней, сохраняя внутреннюю структуру. Операция проверяет, что место назначения не содержит элемента с тем же именем, предотвращая случайную перезапись.

Перемещение файлов и папок автоматически обновляет их внутренние пути. Однако, как и при переименовании, если ваш код содержит относительные пути или операторы импорта, основанные на старом расположении, вам может потребоваться обновить эти ссылки вручную. Например, перемещение служебного файла из `src/utils/` в `src/lib/` требует обновления всех операторов `import`, ссылающихся на старый путь.

## Удаление файлов и папок

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

### Чтобы удалить элемент:

1. Выберите файл или папку в дереве файлов, нажав на них один раз
2. Нажмите клавишу **Delete** или нажмите правой кнопкой мыши и выберите «Удалить» в контекстном меню
3. Появится диалоговое окно подтверждения с просьбой подтвердить удаление
4. Проверьте имя и путь элемента, чтобы убедиться, что вы выбрали правильный
5. Нажмите «Удалить» для окончательного удаления элемента или «Отмена» для прерывания операции

При удалении папки все файлы и подпапки внутри неё также удаляются. Диалог подтверждения показывает общее количество элементов, которые будут удалены, помогая вам понять объём операции перед подтверждением.

**Важно:** Удаление окончательное и не может быть отменено. Нет корзины или папки для удалённых файлов. Если вы случайно удалите важные файлы, вам может потребоваться восстановить их из резервной копии (если она доступна) или воссоздать вручную. Всегда дважды проверяйте диалог подтверждения перед продолжением удалений.

## Путь к файлу

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

Например, если у вас есть файл по пути `src/utils/helper.ts`, панель пути отображается как:

`src › utils › helper.ts`

Каждый сегмент в пути можно нажать. Нажатие на имя папки открывает эту папку в дереве файлов (или открывает расположение папки, если она сейчас не видна), а нажатие на имя файла ничего не делает, так как файл уже открыт. Это особенно полезно при работе с глубоко вложенными файлами — путь обеспечивает быстрый способ вернуться к родительским каталогам без ручной прокрутки по дереву.

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

## Встроенный FTP-сервер

Оба Docker-образа (dev и min) содержат встроенный FTP-сервер **vsftpd**, который позволяет получать прямой доступ к файлам проекта по FTP. Это полезно для работы с файлами проекта через привычные FTP-клиенты — FileZilla, WinSCP или любые другие — без необходимости заходить в веб-интерфейс.

FTP-сервер работает на уровне Docker-контейнера и запускается автоматически при старте, если указаны учётные данные. Корневой каталог сервера — `/project`, то есть вы получаете доступ ко всем файлам вашего проекта.

### Настройка

Для активации FTP-сервера добавьте две переменные окружения в конфигурацию контейнера ([полный список переменных](/agent/docs/environments)
):

- **`AGENT_FTP_USER`** — имя пользователя для FTP-доступа
- **`AGENT_FTP_PASSWORD`** — пароль для FTP-доступа

Пример в `docker-compose.yml`:

```
services:
  pastukhov_agent:
    image: maxpastukhov/agent:dev-latest
    ports:
      - "5001:80"
      - "21:21"          # FTP-порт
      - "30000-30009:30000-30009"  # пассивный режим
    volumes:
      - "./MyProject:/project"
    environment:
      - AGENT_LOGIN=agent
      - AGENT_PASSWORD=...
      - AGENT_FTP_USER=myuser
      - AGENT_FTP_PASSWORD=mypassword
```

### Дополнительные переменные

- **`AGENT_FTP_MIN_PORT`** — минимальный порт пассивного режима (по умолчанию: `30000`)
- **`AGENT_FTP_MAX_PORT`** — максимальный порт пассивного режима (по умолчанию: `30009`)
- **`AGENT_FTP_ADDRESS`** — адрес сервера для пассивного режима (по умолчанию: автоматически определяется из шлюза по умолчанию)

### Порты

FTP-сервер использует два порта:

- **Порт 21** — командный канал (управление соединением)
- **Порты 30000–30009** — пассивный режим передачи данных

Оба диапазона портов необходимо пробросить в `docker-compose.yml` (см. пример выше). Без проброса пассивных портов FTP-клиенты смогут подключиться, но не смогут передавать файлы.

**Если переменные `AGENT_FTP_USER` и `AGENT_FTP_PASSWORD` не заданы**, FTP-сервер не запускается и порты 21 и 30000–30009 не используются.

**[← Чат](/agent/docs/chat)**

**[Сборка и развёртывание →](/agent/docs/build-deploy)**
