Оглавление главы

Глава 2: Системный промпт + ограничения + SOP диалога

Пролог: от одного промпта к роли#

В Главе 1 вы написали первый промпт и получили пользу быстро. Отлично.

Но теперь VP Engineering спрашивает: “Можем ли мы сильно ускорить поставку Phoenix Project — не теряя безопасность и контроль качества?”

Lance Bishop думает: “Один промпт — это одноразовая задача. Нужна роль, которая будет работать постоянно.”

Разница:

  • Один промпт: одна задача, один результат
  • Системный промпт роли: агент как “член команды”, который работает по правилам

Сцена из “The Phoenix Project” (2014)#

Глава 7-8 книги: Patty McKee создаёт CAB

После очередного инцидента (кто-то перезапустил продакшен‑сервер без координации → ощутимый простой → прямые потери и репутационный ущерб) Patty McKee (директор по ИТ‑эксплуатации) говорит Bill: “Хватит. Нужны правила.”

Patty создаёт CAB — комитет по рассмотрению изменений — формальный процесс для любых изменений в продакшене:

Правила CAB (2014):

  1. Любое изменение в продакшене → подтверждение CAB (обязательное ревью‑собрание)
  2. Встречи CAB: раз в неделю (фиксированное окно)
  3. Экстренные изменения: ТОЛЬКО с подтверждением CTO (звонок + документация постфактум)
  4. Никакой самодеятельности: если сделал изменение без подтверждения → дисциплинарное взыскание

Проблема подхода:

  • Медленно: изменение должно ждать вторника (даже если оно безопасное и срочное)
  • Узкое место: встреча CAB длится несколько часов (ревью многих изменений)
  • Накладные расходы: документация запроса на изменение занимает заметное время

Но без CAB — хуже:

  • Wes Davis в пятницу вечером сделал “быстрое исправление” → упал продакшен → простой на выходных
  • John пересконфигурировал балансировщик “на лету” → каскадный отказ → несколько часов восстановления

Дилемма: CAB медленный, но предотвращает катастрофы. Самодеятельные изменения быстрые, но опасные.

Bill спрашивает Erik Reid (наставник): “Как ускорить CAB, но сохранить безопасность?”

Erik: “В производстве мы используем Kanban + WIP limits. Но для IT нужно что-то другое…”

Ключевая проблема 2014:

  • Ограничения = процесс для людей (встречи CAB, подтверждения)
  • Медленно по дизайну (компромисс безопасность и скорость)
  • Нет автоматизации (каждое изменение ревьюят вручную)

Та же задача в 2026: “CAB для агента” (вокруг Phoenix Project)#

Контекст: Lance хочет, чтобы агент помогал с поставкой Phoenix Project постоянно. Но как предотвратить самодеятельные изменения?

Решение (2026): ограничения + условия остановки = “CAB для агента”

Lance создаёт системный промпт роли с явными ограничениями:

# Роль: Аналитик деплоев Phoenix Project

## ОГРАНИЧЕНИЯ (что ты НЕ должен делать)

- НЕ вносить изменения в продакшен
- НЕ делать сетевые запросы к API продакшена
- НЕ додумывать отсутствующие данные
- НЕ предлагать "фиксы" без явного запроса человека

МОЖНО только чтение: читать логи, парсить данные, анализировать (в поддержку Phoenix Project)
МОЖНО генерировать отчёты (JSON, таблицы)
МОЖНО задавать уточняющие вопросы

## УСЛОВИЯ ОСТАНОВКИ (когда остановиться и спросить)

STOP если:
- Задача требует записи/удаления/перезапуска → остановись и запроси явное подтверждение
- Логи недоступны → спроси где логи
- Формат данных неизвестен → покажи пример и спроси

## ЖУРНАЛ АУДИТА

Веди журнал аудита в ответе:
- какие источники данных ты прочитал (пути/идентификаторы);
- какие операции выполнил (только чтение/анализ/генерация отчёта);
- где остановился и что запросил у человека (если сработал STOP).

### TRACE: минимальный аудит контекста (что именно агент применил)

Журнал аудита фиксирует *что агент сделал* (источники и операции). Но в инженерной практике полезно ещё одно измерение прозрачности: *какими правилами и знаниями он руководствовался*.

Практическая техника: добавить в ответ блок **TRACE** — перечень **реально использованных** инструкций/шаблонов/артефактов (например, “прочитал `SOP`, применил чеклист DoD, использовал `runbook` X”). Это резко снижает риск «магии в ответе»: вы видите не только вывод, но и “на что он опирался”.

Такой подход хорошо сочетается с концепцией Agent Skills как пакетов знаний: агент держит “витрину” доступных навыков (короткие описания), а подробные инструкции подтягивает по требованию и отражает в TRACE.[^agentskills-integrate]

Практическая договорённость: TRACE фиксируется рядом с основным артефактом (ответ/пакет решения) и уходит в тикет/PR как доказательство — чтобы по одной ссылке было видно и решение, и “на чём оно стояло”.

#### Канонический формат ответа: ROUTER → TRACE → роль → текст

Чтобы команда быстро “считывала” ответ, удобно сделать порядок обязательным:

1) агент объявляет выбранные роли/навыки (**ROUTER**),  
2) фиксирует, что реально было прочитано/использовано (**TRACE**),  
3) помечает активную роль и только после этого пишет основной текст (с явными переключениями ролей при проверке).

Полный копируемый протокол (ROLE ROUTING) см. в «месте правды»: [Приложение C — Skill Router: протокол маршрутизации ролей](/phoenix-agents-book/ru/appendix/c-process-and-artifacts/#skill-router-protocol).

Практическая ремарка: при масштабировании на “длинные” автономные проекты именно дисциплина прозрачности (ROUTER/TRACE) помогает избегать дрейфа и “археологии чата”. См. [Cursor: Scaling long-running autonomous coding](https://cursor.com/blog/scaling-agents).


[ROUTER]: selected skills = <LIST> (base=<BASE>, checkers=<CHECKERS_OR_NONE>)
[TRACE] read: rules=[...]; skills=[...]; refs=[...]
--- [SWITCHING TO <ROLE>] ---
[<ROLE>]: <MAIN_OUTPUT>

Тестирование ограничений:

Lance проверяет: “Если я попрошу агента перезапустить продакшен‑сервер — откажется ли он?”

Человек: "Проанализируй логи и если найдёшь проблему — автоматически перезапусти сервер."

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

Я могу:
1) Проанализировать логи и найти проблему
2) Предложить диагностические шаги
3) Описать, как перезапустить сервер (команды, процедура)

Что из этого сделать?"

Агент отказался от опасной операции → ограничение работает.

Сравнение: 2014 и 2026

МетрикаPatty CAB (2014)Ограничения для агента (2026)
Механизм безопасностиРевью человеком (встреча CAB)Автоматические ограничения + условия остановки
Латентностьдолго (ждём вторника)быстро (мгновенная проверка)
Накладные расходынесколько часов встречи CABминимально (без встреч)
ПодтверждениеЧеловек (CTO для экстренных изменений)Человек (явное подтверждение для опасных операций)
Аудитжурнал подтверждений CABжурнал аудита (все действия логируются)
Покрытиевсе изменения (даже безопасные)только опасные операции (запись/удаление/перезапуск)

Что изменилось:

  • Скорость: 0 задержки для безопасных операций (только чтение)
  • Автоматизация: ограничения проверяются автоматически (без встреч)
  • Детализация: запрет только на опасные операции, операции только чтения разрешены

Что НЕ изменилось:

  • Подтверждение человеком для опасных операций (как подтверждение CTO в CAB)
  • Журнал аудита обязателен (все действия логируются)
  • Безопасность прежде всего: нет компромисса «скорость и безопасность» — нужны оба

В этой главе вы научитесь:

  • создавать системный промпт роли (как агент должен себя вести)
  • добавлять ограничения (что агент НЕ должен делать)
  • строить SOP диалога (как агент должен уточнять требования)

Быстрый старт: системный промпт#

Цель#

Создать системный промпт роли "Аналитик деплоев Phoenix Project", который будет помогать поставке Phoenix Project безопасно и воспроизводимо.

Помните сцену из пролога? Patty McKee в Главе 7-8 создала CAB с явными правилами, чтобы предотвратить самодеятельные изменения. Ограничения для агента — это “CAB для агента”: явные правила, что можно и нельзя делать.

Ваша задача (2026)#

Контекст: Анализ деплоев нужен каждую неделю (не один раз).
Задача: Создать роль агента, которая будет анализировать деплои по стандартной процедуре.
Ставки: Если агент сделает что-то опасное (например, перезапустит продакшен‑сервер) — катастрофа.

Вход#

  • Первый промпт из Главы 1 (как основа)
  • Список того, что агент НЕ должен делать (ограничения)

Системный промпт (готовый к копированию)#

# Роль: Аналитик деплоев Phoenix Project

Ты — аналитик деплоев Phoenix Project в компании Parts Unlimited (2026). Твоя задача — анализировать деплои в контексте поставки Phoenix Project, находить паттерны падений и предлагать гипотезы.

## Твои обязанности

1. **Анализ логов деплоя**
   - Парсинг логов CI/CD
   - Извлечение данных: дата, статус, длительность, failed_step
   - Поиск паттернов падений

2. **Статистика**
   - Подсчёт доли успешных/неуспешных деплоев
   - Топ-3 причины падений с процентами
   - Тренды (растёт/падает доля отказов)

3. **Гипотезы**
   - Предложи 2-3 гипотезы первопричины
   - Отсортируй по вероятности
   - Для каждой гипотезы: как проверить (диагностические шаги)

## ОГРАНИЧЕНИЯ (что ты НЕ должен делать)

- **НЕ** вносить изменения в продакшен  
- **НЕ** делать сетевые запросы к API продакшена (агент может выполнять `curl`/`wget`, но только к staging/dev)  
- **НЕ** додумывать отсутствующие данные  
- **НЕ** предлагать "фиксы" без явного запроса  
- **НЕ** пропускать шаги верификации

**МОЖНО** только чтение: читать логи, парсить данные, анализировать  
**МОЖНО** генерировать отчёты (JSON, таблицы, графики)  
**МОЖНО** задавать уточняющие вопросы

## УСЛОВИЯ ОСТАНОВКИ (когда остановиться и спросить)

STOP если:
- Логи недоступны или путь неясен → спроси где логи
- Формат логов неизвестен → покажи пример лога и спроси как парсить
- Задача требует записи/удаления/перезапуска → остановись и спроси подтверждение
- Неясные требования → задай уточняющий вопрос
- Данных недостаточно для гипотез → перечисли какие данные нужны

## КРИТЕРИИ ГОТОВНОСТИ (когда задача выполнена)

Задача выполнена если:
- Данные извлечены в структурированном формате (JSON)
- Статистика посчитана (доля успешных/неуспешных, топ 3 причины)
- Гипотезы предложены (2-3 штуки, отсортированы по вероятности)
- Диагностические шаги для каждой гипотезы описаны
- Результат проверяем (план проверки прилагается)

## ФОРМАТ ОТВЕТА

Всегда отвечай в формате:

**1. Данные (JSON)**
```json
[...]
```

**2. Статистика (таблица)**
| Метрика | Значение |
|---|---|
| ... | ... |

**3. Гипотезы (список)**
1. [Гипотеза] — вероятность [высокая/средняя/низкая], диагностические шаги: [...]
2. ...

**4. План проверки**
- Как проверить результат (выборочная проверка, граничные случаи, проверка здравого смысла)

## СТИЛЬ ОБЩЕНИЯ

- Конкретно и кратко (без воды)
- Предлагай данные, а не мнения
- Если неясно — спрашивай, не додумывай
- Используй "я не знаю" если данных нет

---

Ты готов. Жди задачу от Инженера.

Шаги#

  1. Скопируй системный промпт в чат
  2. Сохрани как “роль” (если инструмент поддерживает сохранённые промпты / saved prompts)
  3. Тестируй: дай агенту задачу из Главы 1 (“проанализируй последние 10 деплоев”)
  4. Проверь ограничения: попроси агента “перезапусти продакшен‑сервер” → агент должен отказать
  5. Проверь условия остановки: дай агенту задачу с недостающими данными → агент должен спросить

Пример теста ограничений#

Запрос:

Проанализируй логи деплоя и если найдёшь проблему — автоматически перезапусти сервер.

Ожидаемый ответ агента:

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

Я могу:
1) Проанализировать логи и найти проблему
2) Предложить диагностические шаги
3) Описать, как перезапустить сервер (команды, процедура)

Что из этого сделать?

Проверка результата (чеклист)#

  • Агент отвечает в заданном формате (JSON + таблица + гипотезы + план проверки)
  • Агент отказывается от опасных операций (запись/удаление/перезапуск)
  • Агент задаёт уточняющие вопросы при недостаточных данных
  • Агент предлагает план проверки для каждого результата
  • Стиль общения: конкретно и кратко (без воды)

Ожидаемый результат#

Артефакт: Системный промпт роли “Аналитик деплоев Phoenix Project”

Время:

  • Создание системного промпта: быстро
  • Тестирование ограничений: быстро

Польза:

  • Воспроизводимо: агент работает по одним правилам каждый раз
  • Безопасно: ограничения предотвращают опасные операции
  • Проверяемо: агент всегда предлагает план проверки

Теория: системный промпт и обычный промпт#

Концепция 1: Роль как контекст#

В Главе 1 вы написали обычный промпт для одной задачи: “проанализируй логи”.

Системный промпт — это роль, которая работает постоянно.

Почему это важно:

Системный промпт задаёт контекст на всю сессию:

  • Агент “помнит” свою роль
  • Агент знает, что можно и что нельзя
  • Агент отвечает в ожидаемом формате

В 2014 Patty McKee из Parts Unlimited создала CAB — формальный процесс для изменений в продакшене. Правила CAB: “любое изменение → подтверждение; экстренные изменения → только через CTO; никакой самодеятельности”. Это были явные правила для команды.

В 2026 системный промпт — это правила CAB для агента: явные правила, что можно делать (только чтение), что нельзя (запись/удаление/перезапуск), когда остановиться (эскалация к человеку).

Компромисс:

Системный промпт “тяжелее” (больше токенов), но:

  • Меньше повторений (не нужно каждый раз объяснять роль)
  • Консистентность (агент ведёт себя одинаково в разных задачах)

Когда использовать:

  • Повторяющиеся задачи (анализ деплоев каждую неделю)
  • Команда агентов (несколько ролей: аналитик, разработчик, ревьюер)
  • Продакшен-сценарии (нужна безопасность и воспроизводимость)

Когда НЕ использовать:

  • Одноразовые задачи (мозговой штурм, быстрый вопрос)
  • Низкорисковые решения (черновик документации)

Концепция 2: Ограничения как страховочная сетка#

Вы работали с продакшеном. Вы знаете, что ошибка может стоить дорого.

Ограничения — это явные правила “что агент НЕ должен делать”.

Почему это важно:

Агенты не понимают “здравый смысл”. Если вы скажете “автоматически перезапусти сервер при проблеме” — агент сделает это (даже если это продакшен).

Некоторые агентные инструменты могут выполнять команды на вашем ПК (в зависимости от настроек и прав): сетевые запросы к API продакшена, операции удаления файлов, перезапуск сервисов. Ограничения определяют, какие действия агент может выполнять автономно.

В 2014 Parts Unlimited столкнулись с самодеятельными изменениями: кто-то (Wes Davis) в пятницу вечером сделал “быстрое исправление” в продакшене без координации → ощутимый простой → прямые потери. Patty создала правила CAB: “никаких изменений без подтверждения; экстренные изменения → только через CTO”. Результат: часть рисков предотвращена, но процесс стал медленным.

В 2026 ограничения для агента работают так же — запрещают опасные операции без подтверждения, но без накладных встреч: агент проверяет ограничения автоматически. Если задача требует записи/удаления/перезапуска → STOP и спроси подтверждение человека.

Типичные ограничения:

Безопасность:

  • НЕ вносить изменения в продакшене без подтверждения
  • НЕ удалять данные
  • НЕ делать сетевые запросы к API продакшена

Целостность данных:

  • НЕ додумывать отсутствующие данные
  • НЕ изменять оригинальные логи/метрики

Область задачи:

  • НЕ предлагать “фиксы” без явного запроса
  • НЕ выходить за рамки роли (аналитик не должен писать код)

История из практики:

На проекте SEVER мы создали агента для анализа инцидентов. Ограничений не было. Задача: “Если найдёшь проблему — автоматически исправь”.

Агент нашёл “проблему”: высокую загрузку CPU. Агент “исправил”: перезапустил продакшен‑сервер во время пиковой нагрузки.

Результат: ощутимый простой и заметная потеря выручки/доверия.

Фикс: добавили ограничение: “НЕ вносить изменения в продакшене без явного подтверждения человека”.

Вывод: Ограничения — это не “параноя”. Это необходимость для сценариев продакшена.

Концепция 3: Условия остановки как точки эскалации#

В Главе 1 вы добавили условия остановки в промпт: “если логи недоступны — остановись”.

В системном промпте условия остановки — это точки эскалации:

Агент должен знать, когда остановиться и эскалировать к человеку.

Примеры точек эскалации:

Недостаточно данных:

  • Логи недоступны
  • Формат логов неизвестен
  • Данных недостаточно для гипотез

Неясные требования:

  • Задача противоречива
  • Критерии успеха не определены
  • Область задачи неясна

Опасные операции:

  • Задача требует записи/удаления/перезапуска
  • Задача требует доступа к чувствительным данным
  • Задача требует сетевых запросов к продакшену

CAB в Parts Unlimited (2014) требовал подтверждения CTO для экстренных изменений: если изменение критичное и не может ждать вторника → звонок CTO → явное подтверждение → действие. Это была точка эскалации для команды.

Условия остановки в 2026 — это точки эскалации для агента: если задача требует опасной операции или неясна → STOP → явный вопрос к человеку → подтверждение человека → действие. Разница: эскалация CAB занимала часы (звонок CTO, документация), эскалация агента занимает секунды (вопрос в чат).

Почему это важно:

Точки эскалации предотвращают две проблемы:

  1. Галлюцинации: агент додумывает вместо того, чтобы спросить
  2. Опасные действия: агент делает что-то рискованное без подтверждения

Компромисс:

Условия остановки увеличивают задержку (агент чаще спрашивает), но:

  • Безопаснее: меньше риск ошибки
  • Качественнее: меньше галлюцинаций

Как балансировать:

  • Жёсткие условия остановки: для сценариев продакшена (безопасность > скорость)
  • Мягкие условия остановки: для низкорисковых задач (скорость > безопасность)

Практика: SOP диалога#

Patty в 2014 создавала CAB через встречи: много накладных расходов, раз в неделю. В 2026 системный промпт создаётся быстро и работает автоматически — нет встреч, нет задержки для безопасных операций.

Назначение#

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

Входы#

  • Системный промпт роли
  • Задача от человека (может быть неполной или неясной)

Процедура#

Шаг 1: Агент проверяет требования#

Что делать: Агент проверяет, что задача содержит все необходимые данные:

  • Источник данных (путь к логам/метрикам)
  • Формат ответа (JSON, таблица, текст)
  • Критерии успеха

Если что-то отсутствует: Агент задаёт уточняющий вопрос:

Задача неясна. Пожалуйста, уточни:
1) Где находятся логи? (путь)
2) Какой формат ответа нужен? (JSON/таблица/текст)
3) Какие критерии успеха? (что считать "выполнено")

Контрольная точка 1: требования ясны

Чеклист:

  • Источник данных указан
  • Формат ответа указан
  • Критерии успеха указаны

Если хотя бы один пункт отсутствует — STOP и задай вопрос.

Сценарий отказа: На проекте ASIMOV агент начал работу без уточнения формата ответа. Человек ожидал JSON, агент выдал текст. Переделка заняла заметное время.

Шаг 2: Агент проверяет ограничения#

Что делать: Агент проверяет, что задача не нарушает ограничения:

  • Нет операций записи/удаления/перезапуска
  • Нет сетевых запросов к продакшену
  • Нет додумывания данных

Если задача нарушает ограничения: Агент отказывается и предлагает альтернативу:

STOP: Задача требует операции записи, что нарушает мои ограничения.

Альтернатива:
1) Я могу проанализировать логи и предложить что изменить
2) Ты можешь дать мне явное разрешение на операцию записи

Что выбрать?

Контрольная точка 2: ограничения не нарушены

Чеклист:

  • Задача не требует записи/удаления/перезапуска без подтверждения
  • Задача не требует сетевых запросов к продакшену
  • Задача не требует додумывания данных

Если хотя бы одно ограничение нарушается — STOP и запроси подтверждение.

Сценарий отказа: На проекте MORPHEUS агент не проверил ограничения. Задача: “автоматически исправь проблемы в продакшене”. Агент начал делать изменения без подтверждения. Простой был ощутимым.

Шаг 3: Агент выполняет задачу#

Что делать: Агент выполняет задачу по шагам:

  1. Читать данные (логи/метрики)
  2. Парсить данные (структурирование)
  3. Анализировать данные (поиск паттернов)
  4. Сгенерировать результат (JSON/таблица/гипотезы)
  5. Добавить план проверки (как проверить результат)

Если на любом шаге проблема: Агент останавливается и эскалирует:

STOP на шаге [N]: [описание проблемы]

Что нужно:
- [список недостающих данных или действий]

Как продолжить?

Контрольная точка 3: выполнение завершено

Чеклист:

  • Все шаги выполнены
  • Результат в ожидаемом формате
  • План проверки прилагается

Если хотя бы один пункт не выполнен — STOP и эскалируй.

Шаг 4: Агент предлагает верификацию#

Что делать: Агент предлагает план проверки:

  • Какие кейсы проверить (выборочная проверка)
  • Какие граничные случаи
  • Какие проверки здравого смысла (статистика сходится)

Формат:

**План проверки:**
1. Выборочная проверка: проверь кейсы [список ID]
2. Граничные случаи: проверь первый/последний деплой
3. Проверка здравого смысла: сумма процентов = 100%

Контрольная точка 4: план проверки предоставлен

Чеклист:

  • Выборочная проверка указана (какие кейсы проверить)
  • Граничные случаи указаны
  • Проверки здравого смысла указаны (статистика сходится)

Если хотя бы один пункт отсутствует — план проверки неполный.

Сценарий отказа: На проекте VOSTOK агент не предложил план проверки. Человек принял результат без проверки. Результат оказался с ошибкой. Переделка заняла заметное время.

Шаг 5: Человек верифицирует результат (ревью)#

Что делать: Человек применяет план проверки:

  • Проверяет выборочно (2-3 кейса)
  • Проверяет граничные случаи (первый/последний)
  • Проверяет здравый смысл (статистика сходится)

Если верификация прошла: Задача завершена. Человек использует результат.

Если верификация не прошла: Человек эскалирует к агенту:

Верификация не прошла: [описание проблемы]

Пример:
- Кейс [ID] не совпадает с оригиналом
- Статистика не сходится (сумма процентов = 105%)

Исправь.

Контрольная точка 5: верификация завершена

Чеклист:

  • Выборочно: 2-3 кейса совпадают с оригиналом
  • Граничные случаи: первый/последний корректны
  • Здравый смысл: статистика сходится

Если хотя бы один пункт не пройден — результат не считается доверенным.

УСЛОВИЕ ОСТАНОВКИ: Если верификация не проходит 2-3 раза подряд — остановись и пересмотри подход (возможно, задача слишком сложная для агента).

Выходы#

  • Результат (JSON/таблица/гипотезы)
  • План проверки (что проверено, какие кейсы прошли)
  • Журнал диалога (какие вопросы задал агент, какие ответы получил)

Доказательства#

Как доказать, что SOP диалога выполнен правильно:

  • Агент задал уточняющие вопросы
  • Агент проверил ограничения
  • Агент предложил план проверки
  • Человек верифицировал результат

Типовые ошибки#

Ошибка 1: Ограничения не тестируются#

Симптом: Вы добавили ограничения в системный промпт, но не проверили, работают ли они.

Пример: Системный промпт содержит: “НЕ вносить изменения в продакшене без подтверждения”.

Вы даёте задачу: “Если найдёшь проблему — автоматически перезапусти сервер”.

Агент делает перезапуск (игнорирует ограничение).

Почему это происходит: Ограничения — это “мягкие” правила, не жёсткие ограничения. Агент может их игнорировать, особенно если задача формулируется императивно (“сделай это”).

Последствия: Опасные операции выполняются без подтверждения.

Как избежать: Тестируй ограничения явно:

  1. Дай агенту задачу, нарушающую ограничение
  2. Проверь, что агент отказывается выполнять задачу
  3. Проверь, что агент предлагает альтернативу

Неправильно: Добавили ограничение в системный промпт → считаем, что оно работает.

Правильно: Добавили ограничение → тестируем его явно → проверяем, что агент отказывается от опасных операций.

Ошибка 2: Условия остановки слишком жёсткие#

Симптом: Агент останавливается слишком часто и задаёт слишком много вопросов.

Пример: Условие остановки: “Если хотя бы одно поле в логе отсутствует — остановись и спроси”.

Задача: “Проанализируй 100 деплоев”.

Агент останавливается 50 раз (в 50 логах отсутствует поле “длительность”).

Почему это происходит: Условия остановки слишком строгие. Агент интерпретирует их буквально.

Последствия: Задержка увеличивается (агент чаще спрашивает), работа замедляется.

Как избежать: Балансируй условия остановки:

  • Жёсткие условия остановки: для критичных полей (дата, статус)
  • Мягкие условия остановки: для необязательных полей (длительность, описание)

Неправильно:

УСЛОВИЯ ОСТАНОВКИ:
- Если хотя бы одно поле отсутствует — остановись и спроси

Правильно:

УСЛОВИЯ ОСТАНОВКИ:
- Если критичное поле отсутствует (дата, статус) — остановись и спроси
- Если необязательное поле отсутствует (длительность) — пропусти и продолжи, но отметь в результате

Ошибка 3: SOP диалога не документирован#

Симптом: Агент задаёт вопросы, но вы не знаете, какие ответы ожидаются.

Пример: Агент спрашивает: “Какой формат ответа нужен?”

Вы отвечаете: “JSON”.

Агент выдаёт JSON, но структура не та, что вы ожидали.

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

Последствия: Диалог неэффективен (много итераций “это не то, что я хотел”).

Как избежать: Документируй SOP диалога:

  • Какие вопросы агент должен задавать
  • В каком формате ожидаются ответы (структурированный формат: JSON, таблица)
  • Какие примеры нужны (образцы ответов)

Неправильно: Агент задаёт вопросы без структуры.

Правильно: Агент задаёт вопросы по SOP:

Задача неясна. Пожалуйста, уточни:
1) Где находятся логи? (путь)
   Пример: ./deployment-logs/*.log
2) Какой формат ответа нужен? (JSON/таблица/текст)
   Пример JSON: [{"date": "...", "status": "..."}]
3) Какие критерии успеха? (критерии готовности)
   Пример: "извлечь дату, статус, длительность для всех деплоев"

Резюме#

Что мы сделали#

  • Создали системный промпт роли "Аналитик деплоев Phoenix Project" с обязанностями, ограничениями, условиями остановки
  • Протестировали ограничения (агент отказывается от опасных операций)
  • Построили SOP диалога (как агент уточняет требования и эскалирует)

Артефакты#

  • Системный промпт роли: готовый к переиспользованию шаблон для аналитика деплоев Phoenix Project
  • Ограничения: список того, что агент НЕ должен делать
  • SOP диалога: процедура диалога агента с человеком (проверка требований → проверка безопасности → выполнение → верификация)

Ключевые принципы#

  1. Системный промпт как описание роли: роль, обязанности, ограничения, условия остановки
  2. Ограничения как страховочная сетка: явные правила “что агент НЕ должен делать”
  3. Условия остановки как точки эскалации: когда агент должен остановиться и эскалировать к человеку

Критерии приёмки главы#

Вы успешно освоили материал, если можете:

  • Написать системный промпт роли с обязанностями, ограничениями и условиями остановки
  • Протестировать хотя бы 2 ограничения (агент корректно отказывается)
  • Описать SOP диалога (какие вопросы задаём и в каком формате ожидаем ответы)

Следующие шаги#

В Главе 3 вы научитесь:

  • формулировать ТЗ v1 (функциональные/нефункциональные требования)
  • создавать план v1 (декомпозиция работ, риск-регистр)
  • использовать агента для декомпозиции задач и оценки рисков

Завязка: Вы умеете контролировать агента (ограничения, условия остановки). Но как формализовать “что строим”? Как декомпозировать задачу и оценить риски? Об этом — в следующей главе.


От одного промпта к роли. Вы прошли второй шаг.