Главная / Статьи / Практические заметки: Prompt, context, harness, loop: четыре уровня инженерии

Практические заметки: Prompt, context, harness, loop: четыре уровня инженерии

Пошаговое руководство по практическим заметкам: Prompt, context, harness, loop: четыре уровня инженерии: контракты, проверки и слоты для кода для команд, использующих эту модель.

2135 слов

Используйте это как переработанную версию идей из статьи «Prompt, context, harness, loop: the four layers of engineering an AI agent», ориентированную на операторов: четкие этапы, упорядоченные блоки кода и записи о восстановлении, сохраняющиеся при передаче задачи. Этап Обзора работает наилучшим образом, если рассматривать его как измеримую основу. Соберите один идеальный пример выполнения, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Документируйте как успешный путь выполнения, так и путь восстановления одновременно. Повторные попытки, проверки человеком и обработка неработающих сообщений являются частью продукта, а не этапом последующей доработки.

Уровень 1: Инжиниринг промптов (то, что вы говорите)

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

Look at this GitHub issue and label it.
You are a triage agent for project X. For each issue, output JSON with:
  component  (one of the values in the taxonomy provided in context)
  severity   (critical | high | medium | low)
  team       (the owning team from the on-call table provided in context)
Base severity only on user-facing impact stated in the issue, not on your
own guess about difficulty. If the component is ambiguous, set
"component": "unknown" rather than guessing.

Второй уровень: инжиниринг контекста (что знает модель)

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

Уровень 3: Использование возможностей инженерии (что может делать модель)

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

{
  "name": "apply_label",
  "description": "Apply a label to a GitHub issue. Only use after reading the issue body and checking the component taxonomy.",
  "parameters": {
    "type": "object",
    "properties": {
      "issue_number": { "type": "integer" },
      "labels": { "type": "array", "items": { "type": "string" } }
    },
    "required": ["issue_number", "labels"]
  }
}

Слой 4: Инженерия циклов (что делает его агентом)

При работе над этапом инженерии циклов слоя 4 сначала запишите контракт: необходимые входные данные, сигнал успешного выполнения и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. Когда какой-то шаг терпит неудачу, ошибка должна указывать на конкретную ответственность, а не на запутанную цепочку операций. Храните в кэше стабильные инструкции системы и схемы инструментов. Пересылка одинаковых данных является распространенной причиной избыточных ресурсов.

def agent_loop(goal, max_iterations=10):
    context = gather_initial_context(goal)
    consecutive_errors = 0
    for i in range(max_iterations):
        action = model.decide(context, goal)
        if action.type == "done":
            return action.result
        result = execute(action)
        if result.error:
            consecutive_errors += 1
            if consecutive_errors >= 3:
                # stuck: same approach keeps failing, decompose differently
                context.add("Previous approach failed 3 times. Try a different strategy.")
                consecutive_errors = 0
        else:
            consecutive_errors = 0
        context.add(result)
    return escalate_to_human(context)

Один агент, четыре слоя: сортировка задач в GitHub

При работе над этапом «Один агент, четыре слоя» сначала запишите контракт: необходимые входные данные, сигнал успешного завершения и действия при частичной неудаче. Такой список помогает сохранять честность при последующих изменениях кода. Рассматривайте этот этап как контракт между входными данными и проверенными выходными результатами. Дайте названия создаваемым элементам, определите критерии успешности и не допускайте молчаливого частичного выполнения задачи. Храните в кэше стабильные инструкции системы и схемы инструментов. Пересылка одинаковых заголовков — частая причина избыточных ресурсов.

Откуда взялась эта терминология

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

Куда инвестировать в первую очередь

Этап «Где инвестировать в первую очередь» работает наилучшим образом, если рассматривать его как измеримую поверхность. Соберите один идеальный пример реализации, один случай сбоя и запись о возврате к предыдущему состоянию перед расширением объема работ. Предпочитайте небольшие, тестируемые единицы кода вместо обширных скриптов. Когда какой-то шаг сбивается, причина сбоя должна указывать на конкретную ответственность, а не на запутанную цепочку операций. Установите лимиты на количество токенов за ход и за сессию. Инструменты агентного типа активно расширяют объем контекста; жесткие ограничения предотвращают появление неожиданных счетов.

Чек-лист операций

При работе над этапом чек-листа операций сначала запишите условия контракта: необходимые входные данные, сигнал успешного выполнения и действия при частичном сбое. Такой чек-лист обеспечивает прозрачность последующих изменений в коде.

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

Храните в кэше стабильные системные инструкции и схемы инструментов. Повторная отправка идентичных данных является распространенной причиной повреждений.

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

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

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

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

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

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

Подробность усиления безопасности 0/899: измеряйте время выполнения, класс ошибок и расход токенов для этого примечания, затем принимайте решение о сохранении изменений на основе фиксированного набора вопросов, а не на основе устных замечаний.

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

Подробности усиления безопасности 1/899: измеряйте время выполнения, класс ошибок и расход токенов для данного шага, затем принимайте решение о сохранении изменений на основе заранее определенного набора критериев, а не на основе устных оценок.

При работе над вторым этапом задачи по усилению безопасности сначала запишите условия работы: необходимые входные данные, сигнал о успешном выполнении и действия при частичной неудаче. Такой чек-лист поможет сохранять честность при последующих изменениях кода. Лучше использовать небольшие, тестируемые модули вместо обширных скриптов. Если какой-то шаг не сработает, причина неудачи должна указывать на конкретную ответственность, а не на запутанную цепочку операций.

Подробности усиления безопасности 2/899: измерьте время выполнения, класс ошибки и расход токенов для данной задачи, затем решите, следует ли сохранять изменения, опираясь на заранее определенный набор критериев, а не на устные оценки.

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

Подробности усиления безопасности 3/899: измерьте время выполнения, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранить изменение на основе фиксированного набора вопросов, а не на основе единичных случаев.

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

Подробности усиления безопасности 4/899: измерьте время выполнения, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранить изменение на основе фиксированного набора вопросов, а не на основе единичных случаев.

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

Подробности усиления безопасности 5/899: измерьте время выполнения, класс ошибки и расход токенов для данной записки, затем решите, следует ли сохранять изменение на основе фиксированного набора критериев, а не на основе единичных примеров.

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

Подробности усиления безопасности 6/899: измерьте время выполнения, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранить изменения на основе фиксированного набора вопросов, а не на основе единичных примеров.

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

Подробности усиления безопасности 7/899: измерьте время выполнения, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранить изменения на основе фиксированного набора вопросов, а не на основе единичных примеров.

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

Подробности усиления безопасности 8/899: измерьте время выполнения, класс ошибки и расход токенов для данной записки, затем решите, следует ли сохранять изменение на основе фиксированного набора критериев, а не на основе устных оценок.

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

Подробности усиления безопасности 9/899: измерьте время обработки стены, класс ошибки и расход токенов для этой записи, затем решите, следует ли сохранять изменения на основе фиксированного набора вопросов, а не на основе единичных примеров.