---
title: "Просмотрщик файлов и запуск скриптов"
id: "588"
type: "page"
slug: "file-script"
published_at: "2026-06-03T14:29:23+00:00"
modified_at: "2026-06-13T00:52:52+00:00"
url: "https://pastukhov.com/code/docs/validation/file-script"
markdown_url: "https://pastukhov.com/code/docs/validation/file-script.md"
excerpt: "Просмотрщик файлов и запуск скриптов обеспечивают возможности ручной валидации наряду с автоматическими. Пока AutoFix обрабатывает…"
---

# Просмотрщик файлов и запуск скриптов

[https://pastukhov.com/code/docs/validation/file-script.md](https://pastukhov.com/code/docs/validation/file-script.md)

Просмотрщик файлов и запуск скриптов обеспечивают возможности ручной валидации наряду с автоматическими. Пока [AutoFix](/code/docs/autofix)
 обрабатывает автоматическое исправление ошибок, а [система сборки](/code/docs/validation/automated-build)
 запускает качественные ворота при каждом изменении файла, просмотрщик файлов позволяет вам вручную проверять код, а запуск скриптов позволяет выполнять произвольные команды с выводом в реальном времени — и то, и другое без выхода из чата.

![File viewer dialog](https://pastukhov.com/wp-content/uploads/2026/06/file-viewer-dialog.png)## Встроенный просмотрщик файлов

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

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

Просмотрщик файлов — это не замена полноценной IDE — он предназначен для быстрого просмотра и быстрых однострочных исправлений. Для более серьезного редактирования используйте предпочитаемый редактор кода и позвольте ИИ обрабатывать остальное.

Просмотрщик файлов особенно полезен после того, как ИИ закончил работу. Откройте файлы, которые он изменил, чтобы проверить, что изменения правильны, соответствуют соглашениям вашего проекта и не содержат непреднамеренных изменений. Это дополняет [валидацию изменений git](/code/docs/validation/git-change)
 — пока панель git показывает, что изменилось на высоком уровне, просмотрщик файлов показывает полный контекст вокруг каждого изменения.

Просмотрщик файлов работает с обоими репозиториями: **Project** (ваше основное рабочее пространство) и **Skills** (каталог `.claude/skills`). Переключайтесь между ними с помощью вкладок репозитория.

## Выполнение скриптов

Скрипты оболочки (файлы `.sh`) в вашем репозитории показывают кнопку запуска в редакторе файлов. При выполнении вывод передается в реальном времени в диалог Script Output через SignalR. Скрипты отличаются от [сборок](/code/docs/build-deploy)
 — сборки автоматизируются наблюдателями файлов и настраиваются в `build.yml`, а скрипты запускаются вручную и могут быть любым исполняемым файлом в вашем репозитории. Лучшее использование скриптов — в навыках — вы можете автоматизировать сборки или производственные развертывания с небольшими скриптами, позволяя быстро вызывать и управлять ими прямо в чате, открывая соответствующий навык.

### Поток выполнения

1. Путь скрипта разрешается в выбранном репозитории (project или skills)
2. Файл делается исполняемым (`chmod +x`) в Unix-системах
3. Процесс bash запускается с `/bin/bash scriptPath` в корневом каталоге проекта
4. Переменные окружения `PYTHONIOENCODING=utf-8` и `LANG=en_US.UTF-8` устанавливаются автоматически
5. Вывод захватывается асинхронно, буферизируется для предотвращения наводнения и передается в браузер через SignalR каждые 100 мс
6. Когда процесс завершается, отправляется сообщение о завершении и таймер выполнения останавливается

### Диалог вывода скрипта

Когда скрипт выполняется, диалог Script Output открывается автоматически с:

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

### Остановка скриптов

Щелкните вращающийся значок остановки, чтобы убить работающий скрипт. Сервер убивает все дерево процессов (включая дочерние процессы), сбрасывает любой буферизованный вывод и отправляет сообщение “Script stopped by user”. Закрытие диалога также автоматически останавливает скрипт, предотвращая продолжение фоновых процессов, если вы уйдете.

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

Скрипты воспроизводят глобальный звук **complete**, когда заканчиваются — как при успехе, так и при неудаче. В отличие от сборок, скрипты не имеют конфигурации звука для каждой задачи. Чтобы изменить звук, замените встроенный `complete.mp3`, поместив пользовательский MP3 с тем же именем в `.pastukhov/sounds/`. Вы также можете настроить громкость в **Settings → Sound Settings** или отключить все звуки значком динамика в заголовке чата. Полный справочник по пользовательским звукам см. в [Валидация звуковой обратной связи](/code/docs/validation/sound-feedback)
.

## Парсинг вывода скрипта

Вывод скрипта автоматически парсится с помощью `.pastukhov/output.parser`, который использует тот же формат блоков `[ERROR]`/`[/ERROR]`, что и парсеры сборки и развертывания. Встроенные паттерны обнаружения покрывают общие форматы ошибок без какой-либо конфигурации:

- **Ошибки оболочки** — “command not found”, “Permission denied”, “No such file or directory”, “Segmentation fault”
- **Ошибки Python** — Tracebacks, SyntaxError, ModuleNotFoundError, ImportError
- **Ошибки Node.js** — Error: со стеками, TypeError, npm ERR!
- **Ошибки .NET** — Ошибки сборки, исключения, фатальные ошибки
- **Ошибки HTTP/сети** — Connection refused, ECONNREFUSED, тайм-ауты, коды состояния 4xx/5xx

### Формат парсера

⚠️ Не пытайтесь редактировать файлы парсера вручную — попросите модель ИИ сделать это за вас. Используйте `.pastukhov/README.md` как справочник — он содержит подробную информацию о синтаксисе файлов парсера, а также обширную документацию о структуре и назначении всех других файлов и папок в каталоге `.pastukhov/`.

- **Строки комментариев**, начинающиеся с `#`, игнорируются
- **Паттерны одной строки** — Regex, который должен точно соответствовать одной строке вывода
- **Многострочные паттерны** — Обернуты в `{{...}}`, соответствуют нулю или более последовательным строкам, которые следуют за внутренним regex

```
# Python tracebacks with context
[ERROR]
Traceback \(most recent call last\):
{{^\s+.*}}
[^\s]+: [^\n]+
[/ERROR]

# npm ERR! blocks
[ERROR]
npm ERR!.*
{{npm ERR!.*}}
[/ERROR]

# Warnings
[WARNING]
warning:.*
{{^\s+.*}}
[/WARNING]
```

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

Пользовательские паттерны могут быть добавлены в `output.parser` для конкретного формата ошибок вашего приложения, или попросите модель ИИ обновить его. Парсер перезагружается автоматически при изменении файла.

## Эффективные паттерны валидации

Хорошее эмпирическое правило: используйте [сборки](/code/docs/validation/automated-build)
 для повторяющихся валидаций, которые происходят несколько раз в день или даже несколько раз за чат — компиляции, линтеры, проверки типов и тесты. Скрипты лучше, когда валидация выполняется нерегулярно или требует много ожидания и ручного управления — одноразовые развертывания, диагностика, интерактивные инструменты.

- **Быстрые ручные проверки после изменений ИИ** — Запустите тестовый скрипт или проверьте файл журнала из диалога Files без переключения на терминал. Это быстрее, чем просить модель запустить команду
- **Используйте скрипты для произвольной валидации** — Когда сборки не настроены для конкретной проверки, создайте быстрый скрипт для валидации того, что вам нужно. Скрипты запускаются немедленно без задержек наблюдателей файлов
- **Объединяйте скрипты с чатом** — Если скрипт выявляет ошибку, отправьте вывод в чат и попросите ИИ исправить его. Модель может прочитать вывод скрипта и внести целевые исправления
- **Проверяйте состояние файлов вручную** — После сложных редактирований откройте измененные файлы в просмотрщике, чтобы убедиться, что изменения выглядят правильно. Это ловит тонкие проблемы, которые могут не выявляться diffs

Полный справочник по скриптам см. в [Скрипты](/code/docs/scripts)
. Для функций файловой системы см. [Файлы](/code/docs/files)
. Для автоматической валидации, которая работает без ручного вмешательства, см. [Валидация автоматической сборки](/code/docs/validation/automated-build)
.

**[← Аналитика и наблюдаемость](/code/docs/validation/analytics-observability)**

**[Промпт-сборки →](/code/docs/validation/prompt-builds)**
