Показываем, как установить safe-agentic-workflow (SAW) на Linux, добавить его в проект вместе с Claude Code и обработать реальную задачу через многоагентный рабочий процесс с Node.js и Git.

Если попросить Claude Code исправить одну ошибку, он обычно справляется хорошо. Но с ростом проекта, когда вы работаете над несколькими ошибками в разных файлах в течение нескольких дней, может возникнуть несогласованность.

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

Что такое SAW на самом деле

SAW (сокращение от SAFe Agentic Workflow) - это структурированный рабочий процесс, работающий с Claude Code. Вместо того чтобы полагаться на одного ИИ-агента для выполнения всех задач, SAW распределяет работу по чётко определённым ролям. Для этого в каталог .claude вашего проекта добавляется набор слеш-команд, определений агентов и хуков.

У каждого агента есть своя конкретная обязанность. Например, BSA (Business Systems Analyst) формирует требования и критерии приёмки, агенты-разработчики реализуют изменения, QAS (Quality Assurance Specialist) проверяет и утверждает работу перед передачей дальше, а RTE (Release Train Engineer) координирует общий процесс и пул-реквест.

Главное преимущество SAW в том, что он не даёт агентам строить догадки. Если в задаче нет чётких критериев приёмки, агент-разработчик не начнёт над ней работать, а отправит её обратно BSA для уточнения требований.

Этот простой механизм согласования помогает всем двигаться к одной цели и снижает количество неожиданных изменений.

Для этого руководства мы протестировали SAW на Ubuntu 26.04 LTS и RHEL 10. Однако, поскольку SAW в основном состоит из сценариев оболочки и файлов Markdown, хранящихся в репозитории проекта, он может работать практически на любом современном дистрибутиве Linux, если установлены Git и Node.js.

Перезагрузка оболочки

Если вы только что обновили конфигурацию оболочки, перезагрузите её, чтобы изменения вступили в силу:

source ~/.bashrc

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

Предварительные требования

Перед установкой SAW убедитесь, что установлены Git, Node.js и Claude Code.

  • Git нужен для клонирования репозитория SAW и управления проектом.
  • Node.js требуется, так как SAW использует инструменты и сценарии на Node.
  • Claude Code - это ИИ-ассистент для написания кода, с которым рассчитан SAW.

Установка Git и инструментов сборки на Ubuntu/Debian

sudo apt update
sudo apt install -y git curl build-essential

Установка Git и инструментов сборки на RHEL/Rocky Linux

sudo dnf install -y git curl gcc make

Команда sudo запускает команду с правами администратора (root). Установка программ записывает файлы в системные каталоги, недоступные для изменения обычному пользователю, поэтому эти команды требуют sudo.

Если при установке возникает ошибка Permission denied, убедитесь, что выполняете команду с sudo.

Установка NVM (Node Version Manager)

SAW указывает ожидаемую версию Node.js в файле .nvmrc. Вместо того чтобы использовать версию Node.js из репозитория вашего дистрибутива, лучше установить NVM (Node Version Manager).

NVM позволяет легко устанавливать и переключаться между разными версиями Node.js.

Установите NVM:

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash

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

source ~/.bashrc

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

Шаг 1: Клонирование репозитория SAW

Первый шаг - склонировать репозиторий SAW. Это создаст локальную копию, из которой вы скопируете нужные файлы в свой проект. Вы не будете разрабатывать непосредственно в этом клонированном каталоге.

Клонируйте репозиторий и перейдите в него:

git clone https://github.com/bybren-llc/safe-agentic-workflow.git
cd safe-agentic-workflow
nvm install
nvm use

Команда nvm install считывает файл .nvmrc в репозитории и устанавливает нужную версию Node.js, если её ещё нет в системе. Затем nvm use переключает текущую сессию оболочки на эту версию, чтобы SAW работал в расчётной среде.

Вот что делает каждая команда:

  • git clone загружает весь репозиторий SAW, включая каталоги конфигураций, такие как .claude/, .gemini/, .codex/ и .cursor/ для поддерживаемых ИИ-провайдеров.
  • cd safe-agentic-workflow меняет текущий каталог на клонированный репозиторий, так что остальные команды выполняются в нужном месте.
  • nvm install проверяет файл .nvmrc и устанавливает требуемую версию Node.js, если она ещё не установлена.
  • nvm use переключает текущую терминальную сессию на использование этой версии Node.js.

Шаг 2: Копирование SAW в проект

SAW не устанавливается как обычный пакет программ. Вместо этого вы копируете его конфигурационные файлы в проект, в котором собираетесь его использовать. Если вы работаете с Claude Code, скопируйте каталог .claude в корневой каталог вашего проекта.

Выполните следующую команду:

cp -r .claude/ /path/to/your-project/.claude/
cd /path/to/your-project

Замените /path/to/your-project/ на фактический путь к вашему проекту. В этом руководстве подстановочные значения в угловых скобках, например, означают значения, которые требуется заменить собственными.

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

Если ваша команда использует другого поддерживаемого ИИ-ассистента для кода, можно скопировать соответствующий каталог конфигурации. Например, для Gemini CLI копируйте .gemini/, а для Cursor - .cursor/ (тем же способом).

Шаг 3: Настройка подстановочных значений проекта

Шаблоны SAW содержат подстановочные значения, такие как {{TICKET_PREFIX}} и {{PROJECT_NAME}}. Перед началом работы замените их на значения, соответствующие вашему проекту.

Запустите скрипт настройки:

bash scripts/setup-template.sh

Скрипт запросит несколько деталей, включая название проекта и префикс тикета. Например, если ваш трекер задач использует идентификаторы вроде TEC-123, введите TEC как префикс тикета.

После завершения скрипта откройте файл .claude/SETUP.md и убедитесь, что все подстановки заменены. Если всё ещё видны значения вроде {{TICKET_PREFIX}} или {{PROJECT_NAME}}, исправьте их, прежде чем продолжать.

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

Шаг 4: Запуск первого тикета

После копирования и настройки SAW вы готовы использовать его с Claude Code.

Запустите Claude Code из корневого каталога проекта:

claude

Когда откроется сессия Claude Code, начните работу над тикетом с помощью слеш-команды, предоставляемой SAW:

/start-work TEC-123

Замените TEC-123 на реальный идентификатор тикета вашего проекта.

При выполнении этой команды первым запускается агент BSA (Business Systems Analyst). Его задача - проверить, содержит ли тикет чёткие критерии приёмки и определённый “Definition of Done”.

Если чего-то не хватает, процесс останавливается и просит вас добавить необходимую информацию, прежде чем начнётся реализация.

Такое поведение запланировано. Вместо того чтобы позволить ИИ догадываться, что нужно сделать, SAW сначала требует чёткого определения задачи. Это помогает уменьшить количество ошибок и удерживать реализацию в русле исходных требований.

После того как тикет получит полные критерии приёмки, соответствующий агент-разработчик приступает к реализации изменений. Закончив, он передаёт работу со статусом “Ready for QAS”.

Затем агент QAS (Quality Assurance Specialist) проверяет реализацию на соответствие тем же критериям приёмки, прежде чем изменения могут перейти к пул-реквесту.

Такой структурированный процесс гарантирует, что каждый этап задачи проверяется, прежде чем она считается завершённой.

Основные команды SAW

Команда Назначение
/start-work TEC-123 Начинает работу над тикетом и проверяет наличие корректных критериев приёмки и Definition of Done до начала реализации.
/pre-pr Запускает необходимые проверки перед созданием или отправкой пул-реквеста.
/end-work Завершает текущую рабочую сессию и очищает состояние рабочего процесса.
/check-workflow Показывает текущий статус тикета и его положение в процессе SAW.

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

Запуск команд агентов на удалённом сервере

Для длительных или более сложных проектов можно запускать команды агентов SAW на удалённом сервере Linux вместо локальной машины. Для этого в SAW предусмотрен каталог dark-factory.

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

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

Распространённая ошибка: пропуск манифеста при обновлении

Распространённая ошибка - обновлять SAW без использования процесса синхронизации на основе манифеста. В старых версиях SAW обычно обновляли, добавляя репозиторий как удалённый Git и вручную сравнивая изменения через git diff.

Хотя этот подход всё ещё работает в SAW v2.10.0, он не отслеживает, какие файлы вы изменили. В результате ваши локальные правки могут быть случайно перезаписаны при обновлении.

Вместо этого инициализируйте и используйте синхронизацию на основе манифеста:

./scripts/sync-claude-harness.sh init
./scripts/sync-claude-harness.sh manifest init --yes
./scripts/sync-claude-harness.sh sync --version v2.10.0 --dry-run

Вот что делает каждая команда:

  • ./scripts/sync-claude-harness.sh init инициализирует среду синхронизации.
  • ./scripts/sync-claude-harness.sh manifest init --yes создаёт манифест, записывающий управляемые файлы в вашем проекте.
  • ./scripts/sync-claude-harness.sh sync --version v2.10.0 --dry-run предварительно показывает изменения, необходимые для обновления до версии v2.10.0, не модифицируя файлы.

Параметр --dry-run особенно важен, так как он показывает, что именно будет обновлено, до внесения изменений. Сначала изучите вывод, а затем выполните команду синхронизации без --dry-run, когда предложенные изменения вас устроят.

Чего SAW не сделает за вас

Хотя SAW привносит структуру в разработку с помощью ИИ, он не является полноценным решением для управления проектами и не заменяет хорошие инженерные практики.

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

Аналогично, SAW поддерживает нескольких ИИ-ассистентов для кода, включая Claude Code, Gemini CLI, Codex CLI и Cursor.

Однако интеграция с Claude Code на данный момент наиболее зрелая и тщательно протестирована. Интеграции с Gemini CLI, Codex CLI и Cursor новее, поэтому вы можете иногда сталкиваться с ограничениями или необходимостью небольших доработок под свой процесс.

Если вы используете SAW с Claude Code для разработки ПО, вы идёте по самому проверенному пути. Если же вы работаете в других областях или с более новыми интеграциями, будьте готовы экспериментировать и дорабатывать настройку под себя.

Заключение

Вы успешно настроили SAW, склонировав репозиторий, скопировав нужные файлы в проект, заменив стандартные подстановки на свои данные и запустив первый тикет через рабочий процесс.

Попутно вы увидели, как проверка stop-the-line в SAW гарантирует, что работа не начнётся без чётких критериев приёмки, и как этап утверждения QAS помогает верифицировать изменения перед их продвижением.

Настоящая сила SAW не просто в использовании нескольких ИИ-агентов, а в том, что каждому агенту дана чёткая роль и требуется пройти структурированные этапы проверки.

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

Чтобы узнать текущий статус работы, выполните:

/check-workflow

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