Скрипты

Скрипты — это маленькие программы (исполняемые файлы) в репозитории проекта, которые можно запустить в один клик прямо из Pastukhov Agent. Файлы с расширением .sh при открытии в редакторе показывают кнопку Запустить скрипт. Вывод приходит в реальном времени, его удобно копировать, а работу скрипта можно остановить в любой момент.

Run button appears in the file editor when a shell script is opened

Запускать скрипты можно из двух мест — из окна «Файлы» (скрипты проекта) и из окна «Навыки» (скрипты навыков); оба используют один и тот же редактор и процесс выполнения. Отличие от сборок и развёртываний простое: сборки запускаются сами при изменении файлов по настройкам в build.yml, а скрипт запускаете вы вручную, и это может быть любой исполняемый файл проекта.


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

При запуске скрипта автоматически открывается окно вывода, где видно:

Script Output dialog showing real-time streamed output
  • Заголовок — путь к скрипту, его имя и пометка, из какого репозитория он запущен (проект или навыки)
  • Таймер — показывает, сколько времени скрипт уже работает; после завершения — итоговое время
  • Индикатор состояния — крутящийся значок во время выполнения (клик по нему останавливает скрипт), зелёная галочка при успехе или отметка об ошибке
  • Область вывода — прокручиваемый текст, в котором вывод появляется в реальном времени
  • Кнопка копирования — копирует весь вывод в буфер обмена (пока скрипт работает, она отключена)

Строки вывода подсвечиваются цветом:

  • Красный — строки ошибок (определяются правилами из .pastukhov/output.parser или встроенными шаблонами)
  • Оранжевый — строки предупреждений
  • Обычный цвет — обычный вывод

Как выполняются скрипты

Скрипт запускается так:

  1. Путь к скрипту превращается в полный путь к файлу в репозитории (проекта или навыков)
  2. Файлу выдаётся право на запуск — chmod +x на системах Unix
  3. Запускается bash с этим файлом: /bin/bash путь/к/скрипту
  4. Вывод (обычный и сообщения об ошибках) собирается по мере поступления и буферизуется, чтобы не перегружать соединение
  5. Накопленный вывод передаётся в браузер через SignalR — канал связи в реальном времени — каждые 100 миллисекунд
  6. Когда процесс завершается, приходит сообщение об окончании и таймер останавливается

Скрипты работают в корне проекта. Переменные окружения PYTHONIOENCODING=utf-8 и LANG=en_US.UTF-8 устанавливаются автоматически — они нужны, чтобы текст на разных языках передавался без искажений.


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

Чтобы остановить работающий скрипт, нажмите крутящийся значок в заголовке окна. Сервер завершит процесс целиком (вместе со всеми порождёнными им подпроцессами), сбросит накопленный вывод и покажет сообщение «Скрипт остановлен пользователем».

Stop button in the Script Output dialog header to terminate a running script

Закрытие окна вывода тоже останавливает скрипт — так он не останется работать в фоне, если окно закрыли случайно.


Парсинг вывода

Вывод автоматически разбирается, чтобы подсветить ошибки и предупреждения. Правила лежат в .pastukhov/output.parser — править их вручную обычно не нужно. Проще всего выделить необработанный текст в выводе и нажать плавающую кнопку Fix parser — выделенное отправится ИИ, и он поправит правила. Справку по формату файла смотрите в .pastukhov/README.md.

[ERROR]
Error:\s+(.*)
[/ERROR]

[WARNING]
Warning:\s+(.*)
[/WARNING]

Встроенные шаблоны распознают распространённые ошибки без какой-либо настройки:

  • Ошибки оболочки: «command not found», «Permission denied», «Segmentation fault»
  • Python: Traceback, SyntaxError, ModuleNotFoundError, ImportError
  • Node.js: Error:, TypeError, npm ERR!
  • .NET: ошибки сборки, исключения
  • HTTP: коды 4xx/5xx, «connection refused», тайм-ауты

Поддерживаемые репозитории

Запускать скрипты можно из двух репозиториев:

  • Проект — основной репозиторий рабочего пространства
  • Навыки — каталог навыков Claude (.claude/skills)

Репозиторий виден как пометка в заголовке окна — всегда понятно, откуда запущен скрипт.


Скрипты против сборок

Скрипты и сборки решают разные задачи:

  • Скрипты — запускаются вручную, в один клик; это любой исполняемый файл; вывод идёт в реальном времени, работу можно прервать; файл настроек не нужен.
  • Сборки — запускаются автоматически при изменении файлов; настраиваются в .pastukhov/build.yml; вывод копится в файлы; по готовности могут запускать развёртывание. Подробнее — на странице Build & Deploy.

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